Date: Thu, 25 Nov 2004 11:11:36 +0300 (MSK) From: Andrew Belashov <bel@orel.ru> To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/74360: ndiscvt(8) generate a driver which doesn't match any hardware Message-ID: <200411250811.iAP8Bauv023865@white.orel.ru> Resent-Message-ID: <200411250820.iAP8KXtp051970@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 74360 >Category: bin >Synopsis: ndiscvt(8) generate a driver which doesn't match any hardware >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Nov 25 08:20:32 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Andrew Belashov >Release: FreeBSD 5.3-RELEASE i386 >Organization: JSC CenterTelecom >Environment: System: FreeBSD belnb.localdomain 5.3-RELEASE FreeBSD 5.3-RELEASE #15: Thu Nov 25 09:35:42 MSK 2004 bel@belnb.localdomain:/usr/obj/usr/src/sys/BELNBO i386 Machine: Fujitsu FMV-BIBLIO NU13 notebook COMPEX iWavePort WL11B+ 11Mbps Wireless LAN PCMCIA Card (HERMES-II hardware) >Description: Some Windows(R) drivers cause ndiscvt to generate a driver which does not match any hardware if INF file use string assigment in vendor/device IDs. For example, see [Agere Systems.NT.5.1] section and %C08% device identificator. >How-To-Repeat: $ ndiscvt -i WLAGSALL.INF -s WLAGS48D.SYS -o ndis_driver_data.h Generated ndis_driver_data.h does not have "#define NDIS_PCMCIA_DEV_TABLE". --- WLAGSALL.INF begins here --- ; ; Copyright 2003, Agere Systems Inc ; [Version] Signature="$CHICAGO$" Class=Net Provider="Agere Systems" DriverVer=08/25/2003, 7.82.0.542 ClassGUID={4d36e972-e325-11ce-bfc1-08002be10318} Compatible=1 Catalogfile.NT=wlags2x.cat [Manufacturer] Agere="Agere Systems", NT.5.1 [ControlFlags] ExcludeFromSelect = * [Agere Systems] %N08%=D08,PCMCIA\Agere_Systems-Wireless_PC_Card_Model_0110-C4ED [Agere Systems.NT.5.1] %N08%=DXP08,%C08% [D08] AddReg=AC,A98,A98P2,A98A,A9808 CopyFiles=C98DP2,C98SP2 [A9808] HKR,,VendorDescription,,%N08% HKR,Ndi,DeviceID,,%C08% [D08.NT] AddReg=AC,A2K,A2KP2,A2K08 CopyFiles=C2KDP2,C2KSP2 Characteristics=0x84 BusType=8 [D08.NT.Services] AddService=wlags48d,2,SP2,EP2 [D08.NT.CoInstallers] CopyFiles=CCIP2 AddReg=ACIP2 [A2K08] HKR,,VendorDescription,,%N08% [DXP08] AddReg=AC,AXP,AXPP2,AXP08 DelReg=DRXPV CopyFiles=CXPDP2,CXPSP2 Characteristics=0x84 BusType=8 [DXP08.Services] AddService=wlags48d,2,SP2,EP2 [DXP08.CoInstallers] CopyFiles=CCIP2 AddReg=ACIP2 [AXP08] HKR,,VendorDescription,,%N08% [S] HKR,,Silent,,"0" [AC] HKR,,DriverMajor,,"7" HKR,,DriverMinor,,"82" HKR,,DriverEnable,,"1" HKR,,Configured,,"1" HKR,,DesiredSSID,,"Agere Systems" HKR,Ndi\Interfaces,LowerRange,0,"ethernet" [A98] HKR,,LoadVxD,,1 HKR,,EnumPropPages,,"netdi.dll,EnumPropPages" HKR,,IOBaseAddress,1,02,00,00,00 HKR,,InterruptNumber,1,04,00,00,00 HKR,,EnableIRQSharing,1,01,00,00,00 HKR,,OSType,,"2" HKR,Ndi\Interfaces,DefLower,0,"ethernet" HKR,Ndis,MajorNdisVersion,1,03 HKR,Ndis,MinorNdisVersion,1,0A [A98P2] HKR,,DriverVariant,,"3" HKR,,DevLoader,,*ndis HKR,,DeviceVxDs,,wlags48c.sys HKR,Ndi\Interfaces,DefUpper,0,"ndis3" HKR,Ndi\Interfaces,UpperRange,0,"ndis3" HKR,Ndi,NdiInstaller,,"wiags48c.dll,WV41NdiProc" HKR,Ndis,LogDriverName,,"wlags48c" [A98A] HKR,,BusType,,8 HKR,Ndi,CardType,,"PCMCIA" [A2K] HKR,Ndi\Interfaces,UpperRange,0,"ndis5" HKR,,NDT,,"1" HKR,,OSType,,"8" [A2KP2] HKR,,DriverVariant,,"4" HKR,Ndi,Service,0,"wlags48d" [AXP] HKR,,NDT,,"1" HKR,,OSType,,"32" HKR,Ndi\Interfaces,UpperRange,0,"ndis5" HKR,Ndi\params\OwnChannel,ParamDesc,0,%1CH% HKR,Ndi\params\OwnChannel,Type,0,enum HKR,Ndi\params\OwnChannel,Default,0, 0 HKR,Ndi\params\OwnChannel\enum,0,0,%UD% HKR,Ndi\params\OwnChannel\enum,1,0,"01" HKR,Ndi\params\OwnChannel\enum,2,0,"02" HKR,Ndi\params\OwnChannel\enum,3,0,"03" HKR,Ndi\params\OwnChannel\enum,4,0,"04" HKR,Ndi\params\OwnChannel\enum,5,0,"05" HKR,Ndi\params\OwnChannel\enum,6,0,"06" HKR,Ndi\params\OwnChannel\enum,7,0,"07" HKR,Ndi\params\OwnChannel\enum,8,0,"08" HKR,Ndi\params\OwnChannel\enum,9,0,"09" HKR,Ndi\params\OwnChannel\enum,10,0,"10" HKR,Ndi\params\OwnChannel\enum,11,0,"11" HKR,Ndi\params\OwnChannel\enum,12,0,"12" HKR,Ndi\params\OwnChannel\enum,13,0,"13" HKR,Ndi\params\OwnChannel\enum,14,0,"14" HKR,Ndi\params\PowerMode,ParamDesc,0,%2PM% HKR,Ndi\params\PowerMode,Type,0,enum HKR,Ndi\params\PowerMode,Default,0,0 HKR,Ndi\params\PowerMode\enum,2,0,%AUTO% HKR,Ndi\params\PowerMode\enum,1,0,%ON% HKR,Ndi\params\PowerMode\enum,0,0,%OFF% [AXPP2] HKR,,DriverVariant,,"4" HKR,Ndi,Service,0,"wlags48d" [C98DP2] wlags48c.sys [C2KDP2] wlags48d.sys [CXPDP2] wlags48d.sys [C98SP2] wnags48c.cpl wcags48c.exe waags48c.dll wnags.hlp wnags.cnt wuags48c.vxd wiags48c.dll [C2KSP2] wnags48d.cpl wcags48d.exe waags48d.dll wnags.hlp wnags.cnt [CXPSP2] wnags48d.cpl wcags48d.exe waags48d.dll wnags.hlp wnags.cnt [CCIP] wdags48b.dll [ACIP2] HKR,,CoInstallers32,0x00010000,"wdags48d.dll,WLDeviceCoInstaller" [CCIP2] wdags48d.dll [DRXPV] HKR,Ndi\params [SP2] DisplayName=%SDP2% ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\wlags48d.sys LoadOrderGroup=NDIS [EP2] AddReg=ALP2 [ALP2] HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\netevent.dll;%%SystemRoot%%\System32\drivers\wlags48d.sys" HKR,,TypesSupported,0x00010001,7 [DestinationDirs] DefaultDestDir=11 C98DP2=11 C2KDP2=12 CXPDP2=12 CCIP2=11 CCIP=11 [SourceDisksNames] 1 = %DISKID%,,, [SourceDisksFiles] wlags48.sys=1 wlags48b.sys=1 wcags48.exe=1 wcags48b.exe=1 waags48.dll=1 waags48b.dll=1 wdags48b.dll=1 wnags48.cpl=1 wnags48b.cpl=1 wuags48.vxd=1 wiags48.dll=1 wfags48b.sys=1 wlags51.sys=1 wlags51b.sys=1 wcags51.exe=1 wcags51b.exe=1 waags51.dll=1 waags51b.dll=1 wdags51b.dll=1 wnags51.cpl=1 wnags51b.cpl=1 wuags51.vxd=1 wiags51.dll=1 wlags48c.sys=1 wlags48d.sys=1 wcags48c.exe=1 wcags48d.exe=1 waags48c.dll=1 waags48d.dll=1 wdags48d.dll=1 wnags48c.cpl=1 wnags48d.cpl=1 wuags48c.vxd=1 wiags48c.dll=1 wnags.hlp=1 wnags.cnt=1 [Strings] 1CH="1. Channel" 2PM="2. Card Power Management" UD="Use default channel" OFF="Off" ON="On" AUTO="Auto" DISKID="Wireless Disk" N08="Wireless PC Card Model 0110" C08="PCMCIA\Agere_Systems-Wireless_PC_Card_Model_0110-C4ED" SDP2="Agere Wireless PCCard Service" --- WLAGSALL.INF ends here --- >Fix: Try following patch: --- ndiscvt.patch begins here --- --- usr.sbin/ndiscvt/inf.c.orig Sun Mar 7 05:49:06 2004 +++ usr.sbin/ndiscvt/inf.c Thu Nov 25 09:30:34 2004 @@ -233,7 +233,7 @@ dump_pci_id(const char *s) static void dump_deviceids_pci() { - struct assign *manf, *dev; + struct assign *manf, *dev, *devid; struct section *sec; struct assign *assign; char xpsec[256]; @@ -258,8 +258,8 @@ dump_deviceids_pci() TAILQ_FOREACH(assign, &ah, link) { if (assign->section == sec) { - dev = find_assign("strings", assign->key); - if (strcasestr(assign->vals[1], "PCI") != NULL) { + devid = find_assign("strings", assign->vals[1]); + if (strcasestr(devid->vals[0], "PCI") != NULL) { found++; break; } @@ -285,9 +285,10 @@ retry: TAILQ_FOREACH(assign, &ah, link) { if (assign->section == sec) { dev = find_assign("strings", assign->key); + devid = find_assign("strings", assign->vals[1]); /* Emit device IDs. */ - if (strcasestr(assign->vals[1], "PCI") != NULL) - dump_pci_id(assign->vals[1]); + if (strcasestr(devid->vals[0], "PCI") != NULL) + dump_pci_id(devid->vals[0]); else continue; /* Emit device description */ @@ -312,7 +313,7 @@ retry: static void dump_deviceids_pcmcia() { - struct assign *manf, *dev; + struct assign *manf, *dev, *devid; struct section *sec; struct assign *assign; char xpsec[256]; @@ -337,8 +338,8 @@ dump_deviceids_pcmcia() TAILQ_FOREACH(assign, &ah, link) { if (assign->section == sec) { - dev = find_assign("strings", assign->key); - if (strcasestr(assign->vals[1], "PCMCIA") != NULL) { + devid = find_assign("strings", assign->vals[1]); + if (strcasestr(devid->vals[0], "PCMCIA") != NULL) { found++; break; } @@ -364,9 +365,10 @@ retry: TAILQ_FOREACH(assign, &ah, link) { if (assign->section == sec) { dev = find_assign("strings", assign->key); + devid = find_assign("strings", assign->vals[1]); /* Emit device IDs. */ - if (strcasestr(assign->vals[1], "PCMCIA") != NULL) - dump_pcmcia_id(assign->vals[1]); + if (strcasestr(devid->vals[0], "PCMCIA") != NULL) + dump_pcmcia_id(devid->vals[0]); else continue; /* Emit device description */ --- ndiscvt.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411250811.iAP8Bauv023865>