Ignore:
Timestamp:
12/23/09 20:47:05 (3 years ago)
Author:
BrainSlayer
Message:

generic detection method

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/services/sysinit/sysinit-x86.c

    r13343 r13509  
    5252#include <linux/sockios.h> 
    5353#include <linux/mii.h> 
    54  
    55 static int detect(char *devicename) 
    56 { 
    57         FILE *tmp = fopen("/tmp/devices", "rb"); 
    58  
    59         if (tmp == NULL) { 
    60                 system2("/sbin/lspci>/tmp/devices"); 
    61         } else 
    62                 fclose(tmp); 
    63         char devcall[128]; 
    64         int res; 
    65  
    66         sprintf(devcall, "cat /tmp/devices|/bin/grep \"%s\"|/bin/wc -l", 
    67                 devicename); 
    68         FILE *in = popen(devcall, "rb"); 
    69  
    70         fscanf(in, "%d", &res); 
    71         pclose(in); 
    72         return res > 0 ? 1 : 0; 
    73 } 
     54#include "devices/ethernet.c" 
    7455 
    7556static int getdiscindex(void)   // works only for squashfs  
     
    206187         */ 
    207188 
    208         if (detect("Rhine-"))   // VIA Rhine-I, Rhine-II, Rhine-III 
    209                 insmod("via-rhine"); 
    210         if (detect("VT6120"))   // VIA Rhine-I, Rhine-II, Rhine-III 
    211                 insmod("via-velocity"); 
    212         else if (detect("VT6121"))      // VIA Rhine-I, Rhine-II, Rhine-III 
    213                 insmod("via-velocity"); 
    214         else if (detect("VT6122"))      // VIA Rhine-I, Rhine-II, Rhine-III 
    215                 insmod("via-velocity"); 
    216  
    217         if (detect("DP8381")) 
    218                 insmod("natsemi"); 
    219         if (detect("PCnet32"))  // vmware? 
    220                 insmod("pcnet32"); 
    221         if (detect("Tigon3"))   // Broadcom  
    222                 insmod("tg3"); 
    223         else if (detect("NetXtreme"))   // Broadcom  
    224                 insmod("tg3"); 
    225         if (detect("NetXtreme II"))     // Broadcom  
    226                 insmod("bnx2"); 
    227         if (detect("BCM44"))    // Broadcom  
    228                 insmod("b44"); 
    229  
    230         if (detect("EtherExpress PRO/100"))     // intel 100 mbit  
    231                 insmod("e100"); 
    232         else if (detect("PRO/100"))     // intel 100 mbit 
    233                 insmod("e100"); 
    234         else if (detect("8280"))        // intel 100 mbit  
    235                 insmod("e100"); 
    236         else if (detect("Ethernet Pro 100"))    // intel 100 mbit  
    237                 insmod("e100"); 
    238         else if (detect("8255"))        // intel 100 mbit  
    239                 insmod("eepro100"); 
    240  
    241         if (detect("PRO/1000")) // Intel Gigabit  
    242         { 
    243                 insmod("e1000"); 
    244                 insmod("e1000e"); 
    245         } else if (detect("82541"))     // Intel Gigabit 
    246         { 
    247                 insmod("e1000"); 
    248                 insmod("e1000e"); 
    249         } else if (detect("82547"))     // Intel Gigabit 
    250         { 
    251                 insmod("e1000"); 
    252                 insmod("e1000e"); 
    253         } else if (detect("82546"))     // Intel Gigabit 
    254         { 
    255                 insmod("e1000"); 
    256                 insmod("e1000e"); 
    257         } else if (detect("82545"))     // Intel Gigabit / VMWare 64 bit mode  
    258         { 
    259                 insmod("e1000"); 
    260                 insmod("e1000e"); 
    261         } else if (detect("82543"))     // Intel Gigabit / VMWare 64 bit mode  
    262         { 
    263                 insmod("e1000"); 
    264                 insmod("e1000e"); 
    265         } else if (detect("82572"))     // Intel Gigabit  
    266         { 
    267                 insmod("e1000"); 
    268                 insmod("e1000e"); 
    269         } 
    270         if (detect("Tolapai"))  // Realtek 8169 Adapter (various notebooks)  
    271         { 
    272                 insmod("e1000"); 
    273                 insmod("e1000e"); 
    274                 insmod("e1000gcu"); 
    275                 insmod("e1000gbe"); 
    276         } 
    277         else if (detect("EP80579"))     // Realtek 8169 Adapter (various notebooks)  
    278         { 
    279                 insmod("e1000"); 
    280                 insmod("e1000e"); 
    281                 insmod("e1000gcu"); 
    282                 insmod("e1000gbe"); 
    283         } 
    284         if (detect("RTL-8110")) // Realtek 8169 Adapter (various notebooks)  
    285                 insmod("r8169"); 
    286         else if (detect("RTL-8111"))    // Realtek 8169 Adapter (various notebooks)  
    287                 insmod("r8169"); 
    288         else if (detect("RTL8111"))     // Realtek 8169 Adapter (various notebooks)  
    289                 insmod("r8169"); 
    290         else if (detect("RTL-8169"))    // Realtek 8169 Adapter (various 
    291                 // notebooks)  
    292                 insmod("r8169"); 
    293         else if (detect("Linksys Gigabit")) 
    294                 insmod("r8169"); 
    295         else if (detect("RTL8101"))     // Realtek 8169 Adapter (various 
    296                 // notebooks)  
    297                 insmod("r8169"); 
    298  
    299         if (detect("Happy Meal")) 
    300                 insmod("sunhme"); 
    301  
    302         if (detect("8139"))     // Realtek 8139 Adapter (various notebooks)  
    303                 insmod("8139too"); 
    304         if (detect("DFE-690TXD"))       // Realtek 8139 Adapter (various 
    305                 // notebooks)  
    306                 insmod("8139too"); 
    307         else if (detect("SMC2-1211TX")) // Realtek 8139 Adapter (various 
    308                 // notebooks)  
    309                 insmod("8139too"); 
    310         else if (detect("Robotics"))    // Realtek 8139 Adapter (various 
    311                 // notebooks)  
    312                 insmod("8139too"); 
    313  
    314         if (detect("nForce2 Ethernet")) // nForce2  
    315                 insmod("forcedeth"); 
    316         else if (detect("nForce3 Ethernet"))    // nForce3  
    317                 insmod("forcedeth"); 
    318         else if (detect("nForce Ethernet"))     // nForce  
    319                 insmod("forcedeth"); 
    320         else if (detect("CK804 Ethernet"))      // nForce 
    321                 insmod("forcedeth"); 
    322         else if (detect("CK8S Ethernet"))       // nForce 
    323                 insmod("forcedeth"); 
    324         else if (detect("MCP04 Ethernet"))      // nForce 
    325                 insmod("forcedeth"); 
    326         else if (detect("MCP2A Ethernet"))      // nForce 
    327                 insmod("forcedeth"); 
    328         else if (detect("MCP51 Ethernet"))      // nForce 
    329                 insmod("forcedeth"); 
    330         else if (detect("MCP55 Ethernet"))      // nForce 
    331                 insmod("forcedeth"); 
    332         else if (detect("MCP61 Ethernet"))      // nForce 
    333                 insmod("forcedeth"); 
    334         else if (detect("MCP65 Ethernet"))      // nForce 
    335                 insmod("forcedeth"); 
    336         else if (detect("MCP67 Ethernet"))      // nForce 
    337                 insmod("forcedeth"); 
    338         else if (detect("MCP67 Gigabit"))       // nForce 
    339                 insmod("forcedeth"); 
    340         else if (detect("MCP73 Ethernet"))      // nForce 
    341                 insmod("forcedeth"); 
    342         else if (detect("MCP77 Ethernet"))      // nForce 
    343                 insmod("forcedeth"); 
    344         else if (detect("MCP79 Ethernet"))      // nForce 
    345                 insmod("forcedeth"); 
    346  
    347         if (detect("Sundance")) // Dlink fibre 
    348                 insmod("sundance"); 
    349         else if (detect("DL10050")) 
    350                 insmod("sundance"); 
    351  
    352         if (detect("88E8001"))  // Marvell Yukon 
    353                 insmod("sk98lin"); 
    354         else if (detect("RDK-")) 
    355                 insmod("sk98lin"); 
    356         else if (detect("SK-98")) 
    357                 insmod("sk98lin"); 
    358         else if (detect("3c940")) 
    359                 insmod("sk98lin"); 
    360         else if (detect("Marvell")) 
    361                 insmod("sk98lin"); 
    362  
    363         if (detect("RTL-8029")) // Old Realtek PCI NE2000 clone (10M only) 
    364         { 
    365                 insmod("8390"); 
    366                 insmod("ne2k-pci"); 
    367         } 
    368  
    369         if (detect("3c905"))    // 3Com 
    370                 insmod("3c59x"); 
    371         else if (detect("3c555"))       // 3Com 
    372                 insmod("3c59x"); 
    373         else if (detect("3c556"))       // 3Com 
    374                 insmod("3c59x"); 
    375         else if (detect("ScSOHO100"))   // 3Com 
    376                 insmod("3c59x"); 
    377         else if (detect("Hurricane"))   // 3Com 
    378                 insmod("3c59x"); 
    379  
    380         if (detect("LNE100TX")) // liteon / linksys 
    381                 insmod("tulip"); 
    382         else if (detect("FasterNet")) 
    383                 insmod("tulip"); 
    384         else if (detect("ADMtek NC100")) 
    385                 insmod("tulip"); 
    386         else if (detect("910-A1")) 
    387                 insmod("tulip"); 
    388         else if (detect("tulip")) 
    389                 insmod("tulip"); 
    390         else if (detect("DECchip 21142")) 
    391                 insmod("tulip"); 
    392         else if (detect("MX987x5")) 
    393                 insmod("tulip"); 
    394  
    395         if (detect("DGE-530T")) 
    396                 insmod("skge"); 
    397         else if (detect("D-Link Gigabit")) 
    398                 insmod("skge"); 
    399  
    400         if (detect("SiS900"))   // Sis 900 
    401                 insmod("sis900"); 
    402  
     189        detect_ethernet_devices(); 
    403190        eval("ifconfig", "eth0", "0.0.0.0", "up"); 
    404191        eval("ifconfig", "eth1", "0.0.0.0", "up"); 
     
    459246        // insmod("lm77"); 
    460247#endif 
    461         if (detect("SafeXcel-1141")) { 
    462                 insmod("ocf"); 
    463                 insmod("cryptodev"); 
    464                 insmod("safe"); 
    465                 nvram_set("use_crypto", "1"); 
    466         } else 
    467                 nvram_set("use_crypto", "0"); 
    468248 
    469249        nvram_set("wl0_ifname", "ath0"); 
Note: See TracChangeset for help on using the changeset viewer.