Bug 11311
Summary: | dl2k fails to work since 2.6.25 | ||
---|---|---|---|
Product: | Drivers | Reporter: | Dmitry I. Kulagin (dik) |
Component: | Network | Assignee: | drivers_network (drivers_network) |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | admin, akpm, alan, ben, jrnieder, komurojun-mbn |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.26 | Subsystem: | |
Regression: | Yes | Bisected commit-id: |
Description
Dmitry I. Kulagin
2008-08-12 10:55:04 UTC
Confused. 2.6.26's dl2k,x also has the "Fix dl2k constants" patch applied. May be these patches are not the same or it was broken elsewhere? Once again working kernels: till 2.6.23.17 and from 2.6.24.3 till 2.6.24.4 definitly but I suspect it's till 2.6.24.7 in real. Do you need a full dmesg? I have a same problem. D-link DGE-550T + Fedora 9 kernel 2.6.25 and 2.6.26.3-29.fc9.i686. On load after a few seconds network is down. Help only restart server. Install kernel 2.6.27-rc6 - same problem. Could you try IP1000 driver instead? Actually, DL2K and IP1000 are the driver for same devices... Komuro, big thanks for idea! I try IP1000 (IPG) driver. But it is not work too. A read some documentation and found that IPG driver was added in kernel versinon 2.6.24.4. And dl2k on gigabit did not work since 2.6.24.4... I add to modprobe IPG module in blacklist and D-Link Dl200 NIC start working!!! Why? I don't know... I use only dl2k module, but there was conflict with IPG module. Try it! Gust add ipg module to blacklist. static const char *ipg_brand_name[] = { "IC PLUS IP1000 1000/100/10 based NIC", "Sundance Technology ST2021 based NIC", "Tamarack Microelectronics TC9020/9021 based NIC", "Tamarack Microelectronics TC9020/9021 based NIC", "D-Link NIC", "D-Link NIC IP1000A"}; static struct pci_device_id ipg_pci_tbl[] __devinitdata = { { PCI_VDEVICE(SUNDANCE, 0x1023), 0 }, { PCI_VDEVICE(SUNDANCE, 0x2021), 1 }, { PCI_VDEVICE(SUNDANCE, 0x1021), 2 }, { PCI_VDEVICE(DLINK, 0x9021), 3 }, { PCI_VDEVICE(DLINK, 0x4000), 4 }, { PCI_VDEVICE(DLINK, 0x4020), 5 }, { 0, } }; One solution is to remove D-Link PCI ID from ipg.c static const char *ipg_brand_name[] = { "IC PLUS IP1000 1000/100/10 based NIC", "Sundance Technology ST2021 based NIC", "Tamarack Microelectronics TC9020/9021 based NIC", "Tamarack Microelectronics TC9020/9021 based NIC", - "D-Link NIC", "D-Link NIC IP1000A"}; static struct pci_device_id ipg_pci_tbl[] __devinitdata = { { PCI_VDEVICE(SUNDANCE, 0x1023), 0 }, { PCI_VDEVICE(SUNDANCE, 0x2021), 1 }, { PCI_VDEVICE(SUNDANCE, 0x1021), 2 }, { PCI_VDEVICE(DLINK, 0x9021), 3 }, - { PCI_VDEVICE(DLINK, 0x4000), 4 }, { PCI_VDEVICE(DLINK, 0x4020), 5 }, { 0, } }; Is it possible that D-Link has screwed up and used the same device id for products with two different controllers? In that case the probe routines for these drivers may need to be made more robust so that they reject devices that the other driver should handle. Actually, D-Link DL2000 is a vendor-id-changed-version of Tamarack TC902x. and the IP1000(ipg.c) is the driver for IP1000 and TC902x. so the solution is (1) fix the IP1000(ipg.c) to fully support TC902x(DL2000). or (2)remove the DL2000 id from the ipg.c driver. Thanks. For reference, the fix presumably is commit 25cca5352712561fba97bd37c495593d641c1d39 Author: Jeff Mahoney <jeffm@suse.com> Date: Thu Feb 11 10:26:38 2010 +0000 ipg: Remove device claimed by dl2k from pci id table This patch removes D-Link DGE-550T PCI ID (1186:4000) from the ipg driver. The ipg driver is for IP2000-based cards and the DGE-550T is a DL2000-based card. The driver loads and works for a few moments, but once a real workload is applied it stops operating. The ipg driver claimed this ID since it was introduced in 2.6.24 and it's forced many users to blacklist it. The correct driver for this hardware is the dl2k driver, which has been claiming this PCI ID since the 2.4 days. |