udp/device queue stopping (multicast)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I still have a problem with the above mentioned subject, and am looking
for help how to debug this.
The setup and symptom:
- WLAN (802.11g) device in ad-hoc mode
- udp multicast stream sent out over WLAN device
- queue suddenly stops (no packets transmitted, and the socket's
  queue as seen with "cat /proc/net/udp" is non-empty
- sending a single packet out (!) over the same interface (e.g.
  an ARP packet by trying to ping a non-existent host on the subnet)
  immediately resumes normal operation

Now my problem:
- I have only seen this problem with the device (driver) in question
- how can device queue be the problem if another packet _sent_ over
  the same device resumes queue operation? I added printk's in the
  driver to track the state of netif_{stop,wake}_queue, and even when
  the (in-kernel) queue was stopped, the last printk was "netif_wake_queue".

Unfortunately, the driver is not (yet, they promised to release it) GPL,
so here is the structure of the transmit and irq path:

dev_eth_transmit(){
...
    spin_lock_irqsave();
    [queue the packet]
    if(queue full){
        netif_stop_queue(nwdev);
        tx_full_flag = 1;
    }
    [trigger the hardware to send queued packet]
    spin_lock_irqrestore();
}

dev_interrupt(){
    spin_lock();
    [handle interrupt sources]
    if(tx_full_flag){
        if(queue not full){
            netif_wake_queue(nwdev);
            tx_full_flag = 0;
        }
    }
    spin_unlock();
}

So as far as I can see, there are no race condidtions.

Any hints on what could cause this, or how what I could do to further
track this down?

Regards,
Wolfgang

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux