b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent()
PATCH 1/1 b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent()
There were no break statements in this switch statement so everything used the default settings.
---
Static checker stuff. Untested.
drivers/net/wireless/b43/tables_nphy.c +8 -0
@@ -3259,20 +3259,28 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(switch (tr_iso) {case 0 : e->cliplo_gain =0x0062 ; +break ;case 1 : e->cliplo_gain =0x0064 ; +break ;case 2 : e->cliplo_gain =0x006a ; +break ;case 3 : e->cliplo_gain =0x106a ; +break ;case 4 : e->cliplo_gain =0x106c ; +break ;case 5 : e->cliplo_gain =0x1074 ; +break ;case 6 : e->cliplo_gain =0x107c ; +break ;case 7 : e->cliplo_gain =0x207c ; +break ;default : e->cliplo_gain =0x106a ; }
PATCH 1/1 b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent()
Quoted 30 lines · Dan Carpenter
There were no break statements in this switch statement so everything used the default settings.
Signed-off-by Dan Carpenter <[email protected]>---
Static checker stuff. Untested.drivers/net/wireless/b43/tables_nphy.c +5
-0@@ -3259,20 +3259,28 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(switch (tr_iso) {case 0 : e->cliplo_gain =0x0062 ; +break ;case 1 : e->cliplo_gain =0x0064 ; +break ;case 2 : e->cliplo_gain =0x006a ; +break ;case 3 : e->cliplo_gain =0x106a ; +break ;case 4 : e->cliplo_gain =0x106c ; +break ;case 5 : e->cliplo_gain =0x1074 ;
drivers/net/wireless/b43/tables_nphy.c struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( · line 3286
Quoted 10 lines
drivers/net/wireless/b43/tables_nphy.c +3
-0+break ;case 6 : e->cliplo_gain =0x107c ; +break ;case 7 : e->cliplo_gain =0x207c ; +break ;default : e->cliplo_gain =0x106a ; }
Wow...nice find!
This seems like it could be significant. Any comments from the b43 folks? Should this go to 3.8?
John
Signature · 2 lines
John W. Linville Someday the world will need a hero, and you linville at tuxdriver.com might be all we have. Be ready.
PATCH 1/1 b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent()
Am 14.01.2013 21:04, schrieb John W. Linville:
Quoted 3 lines · Dan Carpenter
Quoted 2 lines
There were no break statements in this switch statement so everything used the default settings.
great :)
Quoted 41 lines
Quoted 28 lines
Signed-off-by Dan Carpenter <[email protected]>---
Static checker stuff. Untested.drivers/net/wireless/b43/tables_nphy.c +5
-0@@ -3259,20 +3259,28 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(switch (tr_iso) {case 0 : e->cliplo_gain =0x0062 ; +break ;case 1 : e->cliplo_gain =0x0064 ; +break ;case 2 : e->cliplo_gain =0x006a ; +break ;case 3 : e->cliplo_gain =0x106a ; +break ;case 4 : e->cliplo_gain =0x106c ; +break ;case 5 : e->cliplo_gain =0x1074 ;drivers/net/wireless/b43/tables_nphy.c struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( · line 3286
Quoted 10 lines
drivers/net/wireless/b43/tables_nphy.c +3
-0+break ;case 6 : e->cliplo_gain =0x107c ; +break ;case 7 : e->cliplo_gain =0x207c ; +break ;default : e->cliplo_gain =0x106a ; }Wow...nice find!
Quoted 3 lines
This seems like it could be significant. Any comments from the b43 folks? Should this go to 3.8?
perhaps an array would be more simple here ?
if (tr_iso > 7 )
e->cliplo_gain = 0x106a;
{
int data[]={0x0062,0x0064,0x006a,0x106a,0x106c,0x1074,0x107c,0x207c};
e->cliplo_gain = data[tr_iso];
}
PATCH v2 1/1 b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent()
There were no break statements in this switch statement so everything used the default settings. Per Walter Harms's suggestion, I've replaced the switch statement and done a little cleanup.
---
v2: Additional cleanups.
drivers/net/wireless/b43/tables_nphy.c +8 -22
@@ -3226,8 +3226,6 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( {struct nphy_gain_ctl_workaround_entry *e;u8 phy_idx; -u8 tr_iso = ghz5 ? dev->dev->bus_sprom->fem.ghz5.tr_iso : - dev->dev->bus_sprom->fem.ghz2.tr_iso;if (!ghz5 && dev->phy.rev >=6 && dev->phy.radio_rev ==11 )return &nphy_gain_ctl_wa_phy6_radio11_ghz2;
@@ -3249,6 +3247,10 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( !b43_channel_type_is_40mhz(dev->phy.channel_type)) e->cliplo_gain = 0x2d; }else if (!ghz5 && dev->phy.rev >=5 ) { +int gain_data[] = {0x0062 ,0x0064 ,0x006a ,0x106a ,0x106c , +0x1074 ,0x107c ,0x207c }; +u8 tr_iso = dev->dev->bus_sprom->fem.ghz2.tr_iso; +if (ext_lna) { e->rfseq_init[0 ] &= ~0x4000 ; e->rfseq_init[1 ] &= ~0x4000 ;
@@ -3256,26 +3258,10 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( e->rfseq_init[3 ] &= ~0x4000 ; e->init_gain &= ~0x4000 ; } -switch (tr_iso) { -case 0 : - e->cliplo_gain =0x0062 ; -case 1 : - e->cliplo_gain =0x0064 ; -case 2 : - e->cliplo_gain =0x006a ; -case 3 : - e->cliplo_gain =0x106a ; -case 4 : - e->cliplo_gain =0x106c ; -case 5 : - e->cliplo_gain =0x1074 ; -case 6 : - e->cliplo_gain =0x107c ; -case 7 : - e->cliplo_gain =0x207c ; -default : - e->cliplo_gain =0x106a ; - } +if (tr_iso >7 ) + tr_iso =3 ; + e->cliplo_gain = gain_data[tr_iso]; + }else if (ghz5 && dev->phy.rev ==4 && ext_lna) { e->rfseq_init[0 ] &= ~0x4000 ; e->rfseq_init[1 ] &= ~0x4000 ;
drivers/net/wireless/b43/tables_nphy.c struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( · line 3251
Quoted 2 lines
drivers/net/wireless/b43/tables_nphy.c +2
-0+int gain_data[] = {0x0062 ,0x0064 ,0x006a ,0x106a ,0x106c , +0x1074 ,0x107c ,0x207c };
static const int ...
David
PATCH v3 1/1 b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent()
There were no break statements in this switch statement so everything used the default settings. Per Walter Harms's suggestion, I've replaced the switch statement and done a little cleanup.
---
v2: Make additional style fixes as well while we're messing with the
function.
v3: Make the array static const int.
drivers/net/wireless/b43/tables_nphy.c +8 -22
@@ -3226,8 +3226,6 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( {struct nphy_gain_ctl_workaround_entry *e;u8 phy_idx; -u8 tr_iso = ghz5 ? dev->dev->bus_sprom->fem.ghz5.tr_iso : - dev->dev->bus_sprom->fem.ghz2.tr_iso;if (!ghz5 && dev->phy.rev >=6 && dev->phy.radio_rev ==11 )return &nphy_gain_ctl_wa_phy6_radio11_ghz2;
@@ -3249,6 +3247,10 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( !b43_channel_type_is_40mhz(dev->phy.channel_type)) e->cliplo_gain = 0x2d; }else if (!ghz5 && dev->phy.rev >=5 ) { +static const int gain_data[] = {0x0062 ,0x0064 ,0x006a ,0x106a , +0x106c ,0x1074 ,0x107c ,0x207c }; +u8 tr_iso = dev->dev->bus_sprom->fem.ghz2.tr_iso; +if (ext_lna) { e->rfseq_init[0 ] &= ~0x4000 ; e->rfseq_init[1 ] &= ~0x4000 ;
@@ -3256,26 +3258,10 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( e->rfseq_init[3 ] &= ~0x4000 ; e->init_gain &= ~0x4000 ; } -switch (tr_iso) { -case 0 : - e->cliplo_gain =0x0062 ; -case 1 : - e->cliplo_gain =0x0064 ; -case 2 : - e->cliplo_gain =0x006a ; -case 3 : - e->cliplo_gain =0x106a ; -case 4 : - e->cliplo_gain =0x106c ; -case 5 : - e->cliplo_gain =0x1074 ; -case 6 : - e->cliplo_gain =0x107c ; -case 7 : - e->cliplo_gain =0x207c ; -default : - e->cliplo_gain =0x106a ; - } +if (tr_iso >7 ) + tr_iso =3 ; + e->cliplo_gain = gain_data[tr_iso]; + }else if (ghz5 && dev->phy.rev ==4 && ext_lna) { e->rfseq_init[0 ] &= ~0x4000 ; e->rfseq_init[1 ] &= ~0x4000 ;
2013/1/20 Dan Carpenter <[email protected]>:
Quoted 9 lines
There were no break statements in this switch statement so everything used the default settings. Per Walter Harms's suggestion, I've replaced the switch statement and done a little cleanup.
Signed-off-by Dan Carpenter <[email protected]>---
v2: Make additional style fixes as well while we're messing with the
function.
v3: Make the array static const int.
Looks fine, thanks Dan
Signature · 1 line
Rafa?