[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