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 _______________________________________________ ath9k-devel mailing list [email protected] https://lists.ath9k.org/mailman/listinfo/ath9k-devel
