[Click] Bug or Problem for ToDevice.u?

Dongyu Yang yangdy.nwpu at gmail.com
Wed Aug 31 08:44:24 EDT 2011


Hello,

    I use two PC to test click userlevel as bellow:  every PC has two
802.11g NICs (wlan0, wlan1),
I set all NICs in ad-hoc mode, I set two PC's wlan0 in channel 4, and two
wlan1 in channel 9.
When I transmit files between two PC from two NICs meanwhile
(uplayer's packets are sent from
wlan0 and wlan1 meanwhile). I find the throughput is very low: it
only 150KB/s. But when I use one
NIC (only one path) the throughput can reach 2.4MB/s.

the configure as bellow:


   FromDevice(wlan0)   FromDevice(wlan1)
                \                     /
                 \                   /
               Multi Path Routing
                  /                \
                 /                  \
     Queue(wlan0)        Queue(wlan1)
              |                       |
              |                       |
   ToDevice(wlan0)      ToDevice(wlan1)



I find the ToDevice.u may casue this problem: in the functon
bool ToDevice::run_task()

bool ToDevice::run_task(){
    .......
    .......

    if (p || _signal)
    _task.fast_reschedule();
    return count > 0;
}

      When we use only one NIC, the uplayer's packets are stored in the same
Queue,
so when _task.fast_reschedule() be called, we called the run_task() again,
and we can
fast get the next uplayer packet. But when we use two NICs the uplayer's
packets are
stored in two Queue, so when call _task.fast_reschedule() in
ToDevice(wlan0), we get
NULL, so we can't get the uplayer's next packet until the the system
schedule the
ToDevice(wlan1), so the throughput is low.

     So how can I fix this problem, thanks for your help?


More information about the click mailing list