diff mbox

[04/23] rt2x00: Make rt2x00_queue_entry_for_each more flexible

Message ID 201105022124.10614.IvDoorn@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Ivo van Doorn May 2, 2011, 7:24 p.m. UTC
Hi,
 
>  - CPU consumption was not an issue (sorry for wrong info. my bad)
>  -- but network throughput performance is bad
>  - USB controller on the CPU is not fast
>  -- max throughput for USB memory read is about 50 Mbps on our test
>  -- max client mode transfer rate is about 20 Mbps (at best)

Ah ok, as CPU consumption is not the problem, then I better understand the problem.
My previous patch missed one fix for a return value. Could you try this one.

> BTW, we are in the big holiday week[10] right now.  so please bear
> with us. we might not reply promptly.

Not a problem. Have fun this week. :)

Thanks,

Ivo
---
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Yasushi SHOJI May 9, 2011, 8:08 a.m. UTC | #1
Hi,

At Mon, 2 May 2011 21:24:09 +0200,
Ivo van Doorn wrote:
> 
> >  - CPU consumption was not an issue (sorry for wrong info. my bad)
> >  -- but network throughput performance is bad
> >  - USB controller on the CPU is not fast
> >  -- max throughput for USB memory read is about 50 Mbps on our test
> >  -- max client mode transfer rate is about 20 Mbps (at best)
> 
> Ah ok, as CPU consumption is not the problem, then I better understand the problem.
> My previous patch missed one fix for a return value. Could you try this one.

it works like a charm!  you can put a tested-by tag on this patch. :-)

here is the log, just in case.

  0:       1 bytes    152 times -->      0.01 Mbps in     636.50 usec           
  1:       2 bytes    157 times -->      0.02 Mbps in     623.46 usec           
  2:       3 bytes    160 times -->      0.04 Mbps in     635.17 usec           
  3:       4 bytes    104 times -->      0.05 Mbps in     630.07 usec           
  4:       6 bytes    119 times -->      0.07 Mbps in     627.37 usec           
  5:       8 bytes     79 times -->      0.10 Mbps in     638.94 usec           
  6:      12 bytes     97 times -->      0.14 Mbps in     632.43 usec           
  7:      13 bytes     65 times -->      0.15 Mbps in     642.17 usec           
  8:      16 bytes     71 times -->      0.19 Mbps in     644.30 usec           
  9:      19 bytes     87 times -->      0.23 Mbps in     638.12 usec           
 10:      21 bytes     98 times -->      0.26 Mbps in     628.27 usec           
 11:      24 bytes    106 times -->      0.29 Mbps in     640.48 usec           
 12:      27 bytes    110 times -->      0.32 Mbps in     640.86 usec           
 13:      29 bytes     69 times -->      0.34 Mbps in     652.47 usec           
 14:      32 bytes     73 times -->      0.38 Mbps in     636.44 usec           
 15:      35 bytes     83 times -->      0.41 Mbps in     643.99 usec           
 16:      45 bytes     88 times -->      0.53 Mbps in     652.65 usec           
 17:      48 bytes    102 times -->      0.57 Mbps in     640.93 usec           
 18:      51 bytes    107 times -->      0.61 Mbps in     636.09 usec           
 19:      61 bytes     61 times -->      0.71 Mbps in     656.20 usec           
 20:      64 bytes     74 times -->      0.76 Mbps in     645.27 usec           
 21:      67 bytes     79 times -->      0.80 Mbps in     638.46 usec           
 22:      93 bytes     84 times -->      1.08 Mbps in     654.99 usec           
 23:      96 bytes    101 times -->      1.11 Mbps in     660.91 usec           
 24:      99 bytes    102 times -->      1.14 Mbps in     661.90 usec           
 25:     125 bytes     54 times -->      1.47 Mbps in     648.71 usec           
 26:     128 bytes     76 times -->      1.47 Mbps in     662.16 usec           
 27:     131 bytes     76 times -->      1.48 Mbps in     674.74 usec           
 28:     189 bytes     76 times -->      2.12 Mbps in     679.56 usec           
 29:     192 bytes     98 times -->      2.18 Mbps in     671.52 usec           
 30:     195 bytes    100 times -->      2.25 Mbps in     660.97 usec           
 31:     253 bytes     52 times -->      2.65 Mbps in     728.64 usec           
 32:     256 bytes     68 times -->      2.80 Mbps in     696.39 usec           
 33:     259 bytes     72 times -->      2.79 Mbps in     707.86 usec           
 34:     381 bytes     71 times -->      4.02 Mbps in     722.25 usec           
 35:     384 bytes     92 times -->      4.03 Mbps in     726.59 usec           
 36:     387 bytes     92 times -->      4.07 Mbps in     725.15 usec           
 37:     509 bytes     47 times -->      5.34 Mbps in     726.62 usec           
 38:     512 bytes     68 times -->      5.11 Mbps in     764.62 usec           
 39:     515 bytes     65 times -->      5.31 Mbps in     739.70 usec           
 40:     765 bytes     68 times -->      7.25 Mbps in     804.85 usec           
 41:     768 bytes     82 times -->      7.43 Mbps in     788.91 usec           
 42:     771 bytes     84 times -->      7.35 Mbps in     800.44 usec           
 43:    1021 bytes     42 times -->      9.23 Mbps in     844.04 usec           
 44:    1024 bytes     59 times -->      9.09 Mbps in     859.82 usec           
 45:    1027 bytes     58 times -->      9.08 Mbps in     862.79 usec           
 46:    1533 bytes     58 times -->      8.38 Mbps in    1395.98 usec           
 47:    1536 bytes     47 times -->      8.51 Mbps in    1377.14 usec           
 48:    1539 bytes     48 times -->      8.35 Mbps in    1405.50 usec           
 49:    2045 bytes     23 times -->     11.05 Mbps in    1411.89 usec           
 50:    2048 bytes     35 times -->     10.68 Mbps in    1463.26 usec           
 51:    2051 bytes     34 times -->     10.59 Mbps in    1477.41 usec           
 52:    3069 bytes     33 times -->     12.50 Mbps in    1873.76 usec           
 53:    3072 bytes     35 times -->     12.46 Mbps in    1881.50 usec           
 54:    3075 bytes     35 times -->     12.82 Mbps in    1829.67 usec           
 55:    4093 bytes     18 times -->     15.42 Mbps in    2025.56 usec           
 56:    4096 bytes     24 times -->     15.19 Mbps in    2056.62 usec           
 57:    4099 bytes     24 times -->     15.14 Mbps in    2065.52 usec           
 58:    6141 bytes     24 times -->     14.95 Mbps in    3133.44 usec           
 59:    6144 bytes     21 times -->     14.77 Mbps in    3174.33 usec           
 60:    6147 bytes     21 times -->     15.32 Mbps in    3061.95 usec           
 61:    8189 bytes     10 times -->     15.69 Mbps in    3981.60 usec           
 62:    8192 bytes     12 times -->     15.60 Mbps in    4005.46 usec           
 63:    8195 bytes     12 times -->     15.23 Mbps in    4104.79 usec           
 64:   12285 bytes     12 times -->     16.35 Mbps in    5731.54 usec           
 65:   12288 bytes     11 times -->     15.95 Mbps in    5877.59 usec           
 66:   12291 bytes     11 times -->     16.70 Mbps in    5615.00 usec           
 67:   16381 bytes      5 times -->     16.08 Mbps in    7770.10 usec           
 68:   16384 bytes      6 times -->     16.31 Mbps in    7662.92 usec           
 69:   16387 bytes      6 times -->     16.35 Mbps in    7645.50 usec           
 70:   24573 bytes      6 times -->     17.68 Mbps in   10605.92 usec           
 71:   24576 bytes      6 times -->     17.15 Mbps in   10930.00 usec           
 72:   24579 bytes      6 times -->     17.19 Mbps in   10907.83 usec           
 73:   32765 bytes      3 times -->     17.30 Mbps in   14453.17 usec           
 74:   32768 bytes      3 times -->     17.91 Mbps in   13956.67 usec           
 75:   32771 bytes      3 times -->     17.83 Mbps in   14023.33 usec           
 76:   49149 bytes      3 times -->     17.47 Mbps in   21468.17 usec           
 77:   49152 bytes      3 times -->     17.82 Mbps in   21048.17 usec           
 78:   49155 bytes      3 times -->     17.54 Mbps in   21384.67 usec           
 79:   65533 bytes      3 times -->     17.86 Mbps in   27996.33 usec           
 80:   65536 bytes      3 times -->     17.58 Mbps in   28433.50 usec           
 81:   65539 bytes      3 times -->     17.63 Mbps in   28366.50 usec           
 82:   98301 bytes      3 times -->     17.87 Mbps in   41966.67 usec           
 83:   98304 bytes      3 times -->     16.70 Mbps in   44917.83 usec           
 84:   98307 bytes      3 times -->     17.90 Mbps in   41894.33 usec           
 85:  131069 bytes      3 times -->     17.60 Mbps in   56809.17 usec           
 86:  131072 bytes      3 times -->     17.90 Mbps in   55871.83 usec           
 87:  131075 bytes      3 times -->     17.91 Mbps in   55821.17 usec           
 88:  196605 bytes      3 times -->     17.53 Mbps in   85542.50 usec           
 89:  196608 bytes      3 times -->     17.76 Mbps in   84443.33 usec           
 90:  196611 bytes      3 times -->     17.70 Mbps in   84745.83 usec           
 91:  262141 bytes      3 times -->     17.50 Mbps in  114315.50 usec           
 92:  262144 bytes      3 times -->     17.30 Mbps in  115606.00 usec           
 93:  262147 bytes      3 times -->     17.53 Mbps in  114096.50 usec           
 94:  393213 bytes      3 times -->     17.09 Mbps in  175546.83 usec           
 95:  393216 bytes      3 times -->     17.68 Mbps in  169663.67 usec           
 96:  393219 bytes      3 times -->     17.36 Mbps in  172796.83 usec           
 97:  524285 bytes      3 times -->     17.73 Mbps in  225642.83 usec           
 98:  524288 bytes      3 times -->     17.24 Mbps in  232031.17 usec           
 99:  524291 bytes      3 times -->     17.50 Mbps in  228568.83 usec           
100:  786429 bytes      3 times -->     17.31 Mbps in  346536.33 usec           
101:  786432 bytes      3 times -->     17.46 Mbps in  343555.00 usec           
102:  786435 bytes      3 times -->     17.47 Mbps in  343362.00 usec           
103: 1048573 bytes      3 times -->     17.50 Mbps in  457247.83 usec           
104: 1048576 bytes      3 times -->     17.37 Mbps in  460508.33 usec           
105: 1048579 bytes      3 times -->     17.58 Mbps in  455134.50 usec           
106: 1572861 bytes      3 times -->     16.59 Mbps in  723288.00 usec           
107: 1572864 bytes      3 times -->     17.55 Mbps in  683682.50 usec           
108: 1572867 bytes      3 times -->     17.43 Mbps in  688538.00 usec           
109: 2097149 bytes      3 times -->     17.32 Mbps in  923881.67 usec           
110: 2097152 bytes      3 times -->     17.26 Mbps in  926999.17 usec           
111: 2097155 bytes      3 times -->     17.10 Mbps in  935760.17 usec           
112: 3145725 bytes      3 times -->     17.35 Mbps in 1383678.83 usec           
113: 3145728 bytes      3 times -->     17.22 Mbps in 1393693.17 usec           
114: 3145731 bytes      3 times -->     17.29 Mbps in 1387717.67 usec          

Thanks,
Ivo van Doorn May 9, 2011, 8:50 a.m. UTC | #2
Hi,

> At Mon, 2 May 2011 21:24:09 +0200,
> Ivo van Doorn wrote:
>>
>> >  - CPU consumption was not an issue (sorry for wrong info. my bad)
>> >  -- but network throughput performance is bad
>> >  - USB controller on the CPU is not fast
>> >  -- max throughput for USB memory read is about 50 Mbps on our test
>> >  -- max client mode transfer rate is about 20 Mbps (at best)
>>
>> Ah ok, as CPU consumption is not the problem, then I better understand the problem.
>> My previous patch missed one fix for a return value. Could you try this one.
>
> it works like a charm!  you can put a tested-by tag on this patch. :-)

Good news. :)
The patch has been sent upstream, it has already been picked up in
wireless-testing.git
and wireless-next-2.6.git a few days ago but hasn't yet by the
compat-wireless package.
So if all goes correct, the compat-wireless package which will be
generated today will
contain the fix.

Ivo
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index e027ebd..dc6b662 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -298,7 +298,7 @@  static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void* data)
 
 	if (!test_and_clear_bit(ENTRY_DATA_PENDING, &entry->flags) ||
 	    test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
-		return true;
+		return false;
 
 	/*
 	 * USB devices cannot blindly pass the skb->len as the
@@ -392,7 +392,7 @@  static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void* data)
 
 	if (test_and_set_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
 	    test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
-		return true;
+		return false;
 
 	rt2x00lib_dmastart(entry);
 
@@ -447,7 +447,7 @@  static bool rt2x00usb_flush_entry(struct queue_entry *entry, void* data)
 	struct queue_entry_priv_usb_bcn *bcn_priv = entry->priv_data;
 
 	if (!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
-		return true;
+		return false;
 
 	usb_kill_urb(entry_priv->urb);