All of lore.kernel.org
 help / color / mirror / Atom feed
* [ath9k-devel] query in ath9k
@ 2010-03-29 10:58 selvam
  2010-03-29 17:36 ` Luis R. Rodriguez
  0 siblings, 1 reply; 6+ messages in thread
From: selvam @ 2010-03-29 10:58 UTC (permalink / raw)
  To: ath9k-devel

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.


Regards,
-- 
Selvam.T
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20100329/07a9bb90/attachment.htm 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ath9k-devel] query in ath9k
  2010-03-29 10:58 [ath9k-devel] query in ath9k selvam
@ 2010-03-29 17:36 ` Luis R. Rodriguez
  2010-03-29 23:32   ` rootkit85 at yahoo.it
  0 siblings, 1 reply; 6+ messages in thread
From: Luis R. Rodriguez @ 2010-03-29 17:36 UTC (permalink / raw)
  To: ath9k-devel

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ath9k-devel] query in ath9k
  2010-03-29 17:36 ` Luis R. Rodriguez
@ 2010-03-29 23:32   ` rootkit85 at yahoo.it
  2010-03-29 23:35     ` Luis R. Rodriguez
  0 siblings, 1 reply; 6+ messages in thread
From: rootkit85 at yahoo.it @ 2010-03-29 23:32 UTC (permalink / raw)
  To: ath9k-devel

On Mon, Mar 29, 2010 at 6:36 PM, Luis R. Rodriguez
<lrodriguez@atheros.com> 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
> ath9k-devel at lists.ath9k.org
> 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;

 	if (!half_gi)


-- 
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!
 ---------------------------------------------------

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ath9k-devel] query in ath9k
  2010-03-29 23:32   ` rootkit85 at yahoo.it
@ 2010-03-29 23:35     ` Luis R. Rodriguez
  2010-03-30  0:01       ` rootkit85 at yahoo.it
  0 siblings, 1 reply; 6+ messages in thread
From: Luis R. Rodriguez @ 2010-03-29 23:35 UTC (permalink / raw)
  To: ath9k-devel

On Mon, Mar 29, 2010 at 04:32:25PM -0700, rootkit85 at yahoo.it wrote:
> On Mon, Mar 29, 2010 at 6:36 PM, Luis R. Rodriguez
> <lrodriguez@atheros.com> 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
> > ath9k-devel at lists.ath9k.org
> > 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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ath9k-devel] query in ath9k
  2010-03-29 23:35     ` Luis R. Rodriguez
@ 2010-03-30  0:01       ` rootkit85 at yahoo.it
  2010-03-30  8:20         ` selvam
  0 siblings, 1 reply; 6+ messages in thread
From: rootkit85 at yahoo.it @ 2010-03-30  0:01 UTC (permalink / raw)
  To: ath9k-devel

On Tue, Mar 30, 2010 at 12:35 AM, Luis R. Rodriguez
<lrodriguez@atheros.com> wrote:
> On Mon, Mar 29, 2010 at 04:32:25PM -0700, rootkit85 at yahoo.it wrote:
>> On Mon, Mar 29, 2010 at 6:36 PM, Luis R. Rodriguez
>> <lrodriguez@atheros.com> 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
>> > ath9k-devel at lists.ath9k.org
>> > 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!
 ---------------------------------------------------

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ath9k-devel] query in ath9k
  2010-03-30  0:01       ` rootkit85 at yahoo.it
@ 2010-03-30  8:20         ` selvam
  0 siblings, 0 replies; 6+ messages in thread
From: selvam @ 2010-03-30  8:20 UTC (permalink / raw)
  To: ath9k-devel

On Tue, Mar 30, 2010 at 5:31 AM, <rootkit85@yahoo.it> wrote:

> On Tue, Mar 30, 2010 at 12:35 AM, Luis R. Rodriguez
> <lrodriguez@atheros.com> wrote:
> > On Mon, Mar 29, 2010 at 04:32:25PM -0700, rootkit85 at yahoo.it wrote:
> >> On Mon, Mar 29, 2010 at 6:36 PM, Luis R. Rodriguez
> >> <lrodriguez@atheros.com> 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
> >> > ath9k-devel at lists.ath9k.org
> >> > 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!
>  ---------------------------------------------------
>


A typo in the code.

nsymbits = bits_per_symbol[rix & 3][width] * ((rix >> 3) + 1);

should be changed to
nsymbits = bits_per_symbol[rix & 7][width] * ((rix >> 3) + 1);

It saves 32 bytes. Is it worth to create a patch?

Please comment on this...

Regards,
-- 
Selvam.T
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20100330/c5ecb195/attachment-0001.htm 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-03-30  8:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-29 10:58 [ath9k-devel] query in ath9k selvam
2010-03-29 17:36 ` Luis R. Rodriguez
2010-03-29 23:32   ` rootkit85 at yahoo.it
2010-03-29 23:35     ` Luis R. Rodriguez
2010-03-30  0:01       ` rootkit85 at yahoo.it
2010-03-30  8:20         ` selvam

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.