On Tue, Mar 30, 2010 at 12:35 AM, Luis R. Rodriguez
<[email protected]> wrote:
> On Mon, Mar 29, 2010 at 04:32:25PM -0700, [email protected] wrote:
>> On Mon, Mar 29, 2010 at 6:36 PM, Luis R. Rodriguez
>> <[email protected]> wrote:
>> > On Mon, Mar 29, 2010 at 03:58:37AM -0700, selvam wrote:
>> >> Hi all,
>> >> I have some queries in ath9k.
>> >>
>> >> In xmit.c, the variable 'bits_per_symbol' is used to store the number of
>> >> bits per OFDM symbol for various data rates.
>> >>
>> >> static u32 bits_per_symbol[][2] = {
>> >> /* 20MHz 40MHz */
>> >> { 26, 54 }, /* 0: BPSK */
>> >> { 52, 108 }, /* 1: QPSK 1/2 */
>> >> { 78, 162 }, /* 2: QPSK 3/4 */
>> >> { 104, 216 }, /* 3: 16-QAM 1/2 */
>> >> { 156, 324 }, /* 4: 16-QAM 3/4 */
>> >> { 208, 432 }, /* 5: 64-QAM 2/3 */
>> >> { 234, 486 }, /* 6: 64-QAM 3/4 */
>> >> { 260, 540 }, /* 7: 64-QAM 5/6 */
>> >> { 52, 108 }, /* 8: BPSK */
>> >> { 104, 216 }, /* 9: QPSK 1/2 */
>> >> { 156, 324 }, /* 10: QPSK 3/4 */
>> >> { 208, 432 }, /* 11: 16-QAM 1/2 */
>> >> { 312, 648 }, /* 12: 16-QAM 3/4 */
>> >> { 416, 864 }, /* 13: 64-QAM 2/3 */
>> >> { 468, 972 }, /* 14: 64-QAM 3/4 */
>> >> { 520, 1080 }, /* 15: 64-QAM 5/6 */
>> >>
>> >>
>> >> 1) Is it possible to keep only the values of MCS 0 to MCS 7 and calculate
>> >> the rest on run time. so that we can save some amount of memory.
>> >>
>> >> For example, if MCS index is 8, then multiply the MCS 0 by 2, for MCS 9
>> >> mutiply MCS 1 by 2..
>> >>
>> >> Can we use in that way?. Is there any performance tradeoff in terms of
>> >> faster execution due to comparison?
>> >>
>> >>
>> >> 2) Why don't we use static u16 instead of static u32 to declare this
>> >> variable? Is there any specific reason for using as u32?
>> >>
>> >> If my approach is improper, please excuse me.
>> >
>> > Try the patch and send it once tested and proved to work :)
>> >
>> > Luis
>> > _______________________________________________
>> > ath9k-devel mailing list
>> > [email protected]
>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>> >
>>
>> The following patch works for me:
>> Index: linux-2.6.33.1/drivers/net/wireless/ath/ath9k/xmit.c
>> ===================================================================
>> --- linux-2.6.33.1.orig/drivers/net/wireless/ath/ath9k/xmit.c 2010-03-30
>> 01:24:25.906770962 +0200
>> +++ linux-2.6.33.1/drivers/net/wireless/ath/ath9k/xmit.c 2010-03-30
>> 01:29:11.602996328 +0200
>> @@ -33,7 +33,7 @@
>>
>> #define OFDM_SIFS_TIME 16
>>
>> -static u32 bits_per_symbol[][2] = {
>> +static u16 bits_per_symbol[][2] = {
>> /* 20MHz 40MHz */
>> { 26, 54 }, /* 0: BPSK */
>> { 52, 108 }, /* 1: QPSK 1/2 */
>> @@ -43,14 +43,6 @@
>> { 208, 432 }, /* 5: 64-QAM 2/3 */
>> { 234, 486 }, /* 6: 64-QAM 3/4 */
>> { 260, 540 }, /* 7: 64-QAM 5/6 */
>> - { 52, 108 }, /* 8: BPSK */
>> - { 104, 216 }, /* 9: QPSK 1/2 */
>> - { 156, 324 }, /* 10: QPSK 3/4 */
>> - { 208, 432 }, /* 11: 16-QAM 1/2 */
>> - { 312, 648 }, /* 12: 16-QAM 3/4 */
>> - { 416, 864 }, /* 13: 64-QAM 2/3 */
>> - { 468, 972 }, /* 14: 64-QAM 3/4 */
>> - { 520, 1080 }, /* 15: 64-QAM 5/6 */
>> };
>>
>> #define IS_HT_RATE(_rate) ((_rate) & 0x80)
>> @@ -598,7 +590,7 @@
>> if (nsymbols == 0)
>> nsymbols = 1;
>>
>> - nsymbits = bits_per_symbol[rix][width];
>> + nsymbits = bits_per_symbol[rix & 3][width] * ((rix >> 3) + 1);
>> minlen = (nsymbols * nsymbits) / BITS_PER_BYTE;
>>
>> if (frmlen < minlen) {
>> @@ -1452,7 +1444,7 @@
>>
>> /* find number of symbols: PLCP + data */
>> nbits = (pktlen << 3) + OFDM_PLCP_BITS;
>> - nsymbits = bits_per_symbol[rix][width];
>> + nsymbits = bits_per_symbol[rix & 3][width] * ((rix >> 3) + 1);
>> nsymbols = (nbits + nsymbits - 1) / nsymbits;
>
> What's the ko file size differene?
>
> Luis
>
Slighty smaller:
Original:
-rw-r--r-- 1 root root 122968 2010-03-30 01:59
drivers/net/wireless/ath/ath9k/ath9k.ko
Patched
-rw-r--r-- 1 root root 122936 2010-03-30 01:59
drivers/net/wireless/ath/ath9k/ath9k.ko
--
Matteo Croce
OpenWrt developer
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
KAMIKAZE (bleeding edge) ------------------
* 10 oz Vodka Shake well with ice and strain
* 10 oz Triple sec mixture into 10 shot glasses.
* 10 oz lime juice Salute!
---------------------------------------------------
_______________________________________________
ath9k-devel mailing list
[email protected]
https://lists.ath9k.org/mailman/listinfo/ath9k-devel