Quoting Ruud Linders who have made a patch fixing this problem: [NET]: Disable queueing when carrier is lost. Some network drivers call netif_stop_queue() when detecting loss of carrier. This leads to packets being queued up at the qdisc level for an unbound period of time. In order to prevent this effect, the core networking stack will now cease to queue packets for any device, that is operationally down (i.e. the queue is flushed and disabled). ===== This was a very good clue to start digging into the driver source and lo and behold enabling the carrier on 2 places in the source fixed it for me and the driver is working without any problems now in ad-hoc mode. Patch attached (against latest cvs source). Have fun, Ruud Reproducible: Always Steps to Reproduce: 1. Install Linux 2.6.12 (gentoo-sources or vanilla) 2. emerge net-wireless/at76c503a 3. Actual Results: The driver installs and loads fine with the appropriate firmware in place put no traffic is getting through, se description under details. Expected Results: Wireless functionality as with kernels before Linux 2.6.12 I'm not on my Gentoo box right now so can't paste info from emerge info, but this is reproducable under any Linux 2.6.12 distro. Ruud Linders patch to fix the problem: --- at76c503.c.ORIG 2005-04-06 19:38:55.000000000 +0200 +++ at76c503.c 2005-08-22 11:43:44.000000000 +0200 @@ -2833,6 +2833,7 @@ goto end_startibss; } + netif_carrier_on(dev->netdev); netif_start_queue(dev->netdev); } end_startibss: @@ -2884,6 +2885,7 @@ memcpy(dev->bssid, bptr->bssid, ETH_ALEN); dev->channel = bptr->channel; iwevent_bss_connect(dev->netdev,bptr->bssid); + netif_carrier_on(dev->netdev); netif_start_queue(dev->netdev); /* just to be sure */ del_timer_sync(&dev->mgmt_timer);
How exactly, do you mean this is broken, I use an at76c503a usb wifi device with 2.6.12, so I am curious if you could relabel the bug to something more meaningful, as it works here.
Sorry, this is obviously not reproduceable. Can you please post the fix to the upstream(at76c503a) mailing list so that they can include it? It will then flow back automatically to gentoo with the next debian snapshot.