Skip to content

Commit

Permalink
b43: N-PHY: use more bits for offset in RSSI calibration
Browse files Browse the repository at this point in the history
When calculating "offset" for final RSSI calibration we're using numbers
bigger than s8 can hold. We have for example:
offset[j] = 232 - poll_results[j];
formula. If poll_results[j] is small enough (it usually is) we treat
number's bit as a sign bit. For example 232 - 1 becomes:
0xE8 - 0x1 = 0xE7, which is not 231 but -25.

This code was introduced in e0c9a02
and caused stability regression on some cards, for ex. BCM4322.

Signed-off-by: Rafał Miłecki <[email protected]>
Cc: [email protected]
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
rmilecki authored and linvjw committed Mar 27, 2013
1 parent 8ac3e99 commit 2e1253d
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/net/wireless/b43/phy_n.c
Original file line number Diff line number Diff line change
Expand Up @@ -1564,7 +1564,7 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
u16 clip_off[2] = { 0xFFFF, 0xFFFF };

u8 vcm_final = 0;
s8 offset[4];
s32 offset[4];
s32 results[8][4] = { };
s32 results_min[4] = { };
s32 poll_results[4] = { };
Expand Down Expand Up @@ -1732,7 +1732,7 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
u8 regs_save_radio[2];
u16 regs_save_phy[2];

s8 offset[4];
s32 offset[4];
u8 core;
u8 rail;

Expand Down

0 comments on commit 2e1253d

Please sign in to comment.