LAN95xx Windows CE5.0 & 6.0 Driver v1.30.0 ============================================= This file provides information about v1.28 release of the Ndis 5.1 drivers for Windows CE 5.0&6.0 for the LAN95xx family of devices. Contents ======== 1. Release Modules Information 2. Building and installing the driver 3. configure the driver for the multiple instances. 4. Driver Configurable Parameters 5. Release history 6. Testing 7. Known issues 1. Release Modules Information ------------------------------ Name: SMSC9500.dll Supported OS: Windows CE6.0 & 5.0 Supported Platform: x86, ARMV4I HW Products Supported: LAN9500, LAN9512/LAN9513/LAN9514, LAN9500A, LAN9730, LAN89730, LAN89530 2. Building and installing the driver ------------------------------------- Please refer to the "LAN9500_LAN9500A_LAN951x Software User Manual", Chapter 6 for instructions on building and installing the driver. This document is available from SMSC's EServices. 3. configure the driver for the multiple instances. --------------------------------------------------- In order to support multiple instances, the registry information for the miniport driver and adapter instances must be configured in [HKEY_LOCAL_MACHINE\Comm\InstanceName\Parms] . For example, if you want to support two instances, Parameters for instance2(SMSC95002) must be in the registry. Below is the Parameters for instances2(Just do the copy of the Para. of SMSC95001, change "SMSC95001" to "SMSC95002", and set the "InstanceIndex"=dword:2). So does instance3,4......(By default, the registry files is set to support 2 instances) Note: The physical memory for the USB host is usually set to 128k by default. We use 2 RCB each 16k for the receive and 2 TCB each 16k for the TX. If you support more than 2 instances, some transfers submission will be failed due to lack of memory. That will effect the performance of LAN9500. So in order to make multiple instances work properly, we need to increase the USB host memory from the BSP or change the RCB/TCB to lower size. Please refer to "LAN9500_LAN9500A_LAN951x Software User Manual Rev. 1.2 (05-01-09).pdf" Section 6.4. [HKEY_LOCAL_MACHINE\Comm\SMSC95002] "DisplayName"="SMSC9500 USB2.0 FAST Ethernet Driver" "Group"="NDIS" "ImagePath"="smsc9500.dll" [HKEY_LOCAL_MACHINE\Comm\SMSC95002\Parms] "InstanceIndex"=dword:2 "BusNumber"=dword:0 "BusType"=dword:0 "PhyAddress"=dword:1 ; PHY address (0x20:Auto, 0xFF:Internal) "MediaType"=dword:0 "CustomCapa"=dword:0 "VlanID"=dword:0 ;Vlan Tag ID "PriorityVlanTag"=dword:0 "AutoMdix"=dword:3 ;AMDIX_DISABLE_STRAIGHT 0x00000000UL ;AMDIX_DISABLE_CROSSOVER 0x00000001UL ;AMDIX_ENABLE 0x00000002UL ;AMDIX_USE_STRAP 0x00000003UL "AutoMdixMode"=dword:0 ;AMDIX_MODE_AUTO 0 ;AMDIX_MODE_ON_802_3 1 ;AMDIX_MODE_ON_EXTEND 2 "SleepPhyOnLinkDown"=dword:0 ;Only for LAN9500A ;0 disabled, 1 Enabled "DetachOnLinkDownMode"=dword:0 ;Only for LAN9500A ;0 disabled, 1 Enabled "EDPDConfig"=dword:0 ;Only for LAN9500A ;0 disabled, 1 Enabled "SDReconnectGpio"=dword:c "NoBulkInStopOnLinkDown"=dword:0 ;if 1, Do not stop the bulkin request on cable remove ; default 0 "PhyHookup"=dword:0 ; Set : Force to use external phy ; clr: auto detect phy "MdioDisable"=dword:0 ; Disable MDIO access (to be used only when PhyHookup is set) ; It is a dword where: ;+ bit 0 : ; set: disables all internal access the driver does to the PHY ; clr: Normal PHY utiliization (default) ;+ bit 1: ; set: disables IOCTL access to the PHY. ; clr: allows PHY access over IOCTLs (default) "DefaultLinkStatus"=dword:0x7 ; Used only when MDIODisable disables internal PHY access. Default ;Link status reporting after driver initialization/resume/reset. ;+ bit 0 ; set: after initialization Link is reported up (default) ; clr: after initialization Link is reported down ;+ bit 1 ; set: after reset Link is reported up (default) ; clr: after reset Link is reported down ;+ bit 2 ; set: after resume from sleep Link is reported up (default) ; clr: after resume from sleep Link is reported down "MdioPhyAddressStart"=dword:0 ; When LAN9500/A, LAN89530 connected to switch (Say, LAN9303) through MII ; the external phys can be included to part of link status reported to NDIS. ; MdioPhyAddressStart: start address of the phy "MdioPhyAddressCount"=dword:0 ; Number of external phy to check for link status (end address of phy to check) ; Note: 1. The link status is included as: ; (directly attached phy && (other phy1 || other phy2 || ..) ; 2. To be used only when PhyHookup is set "ResetOnCorruptedRx"=dword:0xFFFFFFFF; Workaround to allow resetting the device on a Completion of a Corrupted RCB. ;This workaround is disabled by default. It can be enabled using ResetOnCorruptedRx registry key (DWORD) as follows: ;0x00000000 - 0xFFFFFFFE: Workaround is enabled. Reset will be triggered when the Corrupted RCB count exceeds this value. ;0xFFFFFFFF : Workaround is disabled [HKEY_LOCAL_MACHINE\Comm\SMSC95002\Parms\TcpIp] "EnableDHCP"=dword:1 ; "IpAddress"="192.168.3.50" ; "Subnetmask"="255.255.255.0" ; "DefaultGateway"="192.168.8.1" "UseZeroBroadcast"=dword:0 4. Driver Configurable Parameters --------------------------------- The following parameters are configurable thru the smsc95000.reg file: a. Media Type: Selection of one of the following ennumerated values -All Modes Autodetect: Advertises support for 4 combos of 10/100 and HD/FD -Autodetect 10HD: Restricts capabilities to 10HD and autonegotiates -Autodetect 10FD: Restricts capabilities to 10FD and autonegotiates -Autodetect 100HD: Restricts capabilities to 100HD and autonegotiates -Autodetect 100FD: Restricts capabilities to 100FD and autonegotiates -Autodetect Custom: Advertises Capabilities according to Custom Capabilities -Force 10HD: Forces 10HD without autonegotiating -Force 10FD: Forces 10FD without autonegotiating -Force 100HD: Forces 100HD without autonegotiating -Force 100FD: Forces 100FD without autonegotiating b. Media Type Custom Capabilities: - 16bit hex value that specifies the contents of the Autonegotiation advertisement register of the MII Phy. - Only meaningful if MediaType = Autodetect Custom. c. Flow Control: Configure flow control advertised capabilities -Disabled -Enabled d. Network Address (optional): Allows overiding the MAC address of the device e. Priority & VLAN: Enable or Disable support for VLAN tagging. - Priority & VLAN Enabled - Priority & VLAN Disabled f. VLANID: If "Priority & VLAN" are enabled this value selects the VLANID to insert on transmits and to filter upon on receives. ********************************************************************************************* *** IMPORTANT *** *** --------- *** *** Unless you run into operational or performance problems, we recommend that you do not *** *** modify the parameters listed below *** *** *** ********************************************************************************************* In some platforms or situations, for proper and/or optimum operation, it may be necessary to fine tune the parameters listed below, which have direct control over the driver's memory allocation. The total memory the driver will use for tranmsmit and receive operations is given by: (MaxRCBs * RxBurstMax + TxBurstMax). If this value exceeds the physical memory allocated for transfers by the USB host controller driver, then the LAN95xx driver will not operate or perform properly. Moreover, the memory allocated by the host controller driver serves not only LAN95xx, but all other USB devices running under that same USB host controller. Therefore even if LAN95xx memory allocation does not exceed the host controller value, operation may still be compromised. g. MaxTCBs: maximum TX Control blocks h. TxBurstMax: Maximum TX buffer size. 8kb (0x2000) for maximum compatibility. If host controller memory is available, 16k(0x4000) might yield better performance when operating in USB high speed USB. i. MaxRCBs: maximum RX Control blocks j. LowWatermarkRCBs: Half of the maxRCBs. k. RxBurstMax: Maximum Rx buffer size. 8kb (0x2000) for maximum compatibility. If host controller memory is available, 16k(0x4000) might yield better performance when operating in USB high speed USB. l. RxBurstCap: should be the same as RxBurstMax. 5. Release history ------------------ ** v1.30.0 20/24/16 ** - Added eeprom write retry. ** v1.29.1 10/26/15 ** - Add workaround to allow resetting the device on a Completion of a Corrupted RCB. ** v1.29.0 08/26/15 ** - Added MdioDisable registry key for no MDIO access. - Added support to include link status of other phys when connected to switch. ** v1.28.6 05/21/15 ** - Fixed the CTK two card test failure. ** v1.28.5 05/19/15 ** - The CTK 1c_ResetOnResume test expects the link to be up after first iteration. ** v1.28.4 01/14/15 ** - Indicate speed status immediatly for OID request. ** v1.28.3 01/07/15 ** - Indicate media connection status immediatly for OID request. ** v1.28.2 ** - Do not stop the bulkin when the cable removed or setpower state. ** v1.28.0000 ** - Fixed EDPD/NetDetach issue ** v1.27.0000 ** - Remove checking if the MAC address from the registry is locally administered or not ** v1.26.0000 ** - Fixed suspend/resume issue ** v1.24.0000 ** - Fixed plug/unplug issue ** v1.23.0000 ** -Added support for LAN9530/LAN9730/LAN89530 ** v1.22.0001 ** -Fixed bug while Freeing Resources -Added Multiple devices support -Fixed bug that fail to unload the driver during initialization time -Fixed Sync problem for MPInitialize(), MPReset() and UsbDeviceNotify() -Add Advanced properties to control automdix. By default it will only be enabled if autonegotiation is enabled. -Added support for NetDetach with Energy Detect, NWAY, or PHY Link re-attach event ** v1.10.0001 ** Initial production release 6. Testing ---------- Platforms tested: XScalepxa270, Freescale i.Mx27, Freescale i.Mx31, NVidia Tegra, and CEPC_x86 -Functional, Stress, Endurance, and Performance Testing types were performed with a variety of test tools: -SmartBits(Throughput performance, Framing Errors, Flow Control, and Link Oversubscription). -CETK(Ethernet One-Card Miniport, One card stress-loopback, NDIS Performance, Winsock 2.0, Winsock Performance) -Bidirectional Flood Pings with various packet sizes, speeds, and duplexes -USB2.0 Hubs Up to Five Levels Deep on CEPC_x86 platform -USB 1.1/2.0 Hot Plug insertion/removal tests during 100% bandwidth utilization -Ethernet Hot Plug insertion/removal tests during 100% bandwidth utilization -FTP transfers -VLAN tagging -CEP9500.exe EEPROM Utility 7. Known issues --------------- - CETK v6.0 Winsock Performance fails UDP Send Packet Loss. The following error... “Communication between server and client failed; terminating test” was observed. This only happens with WinCE 6.0. WinCE 5.0 passes all Winsock tests. We believe this is a test issue and are investigating it with Microsoft.