Message ID | 201105022124.10614.IvDoorn@gmail.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
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,
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 --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);