| From b9a758a8c905fc59e783ae91ad645452d877ea88 Mon Sep 17 00:00:00 2001 |
| From: Larry Finger <Larry.Finger@lwfinger.net> |
| Date: Mon, 18 Nov 2013 11:11:27 -0600 |
| Subject: rtlwifi: Redo register save locations |
| |
| From: Larry Finger <Larry.Finger@lwfinger.net> |
| |
| commit b9a758a8c905fc59e783ae91ad645452d877ea88 upstream. |
| |
| The initial USB driver did not use some register save locations in the |
| private data storage. To save some memory, a union was used to overlay these |
| variables with USB I/O components. In an update of the gain-control code, |
| these register save locations are now needed for USB drivers. |
| |
| Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/rtlwifi/wifi.h | 32 ++++++++++++++++---------------- |
| 1 file changed, 16 insertions(+), 16 deletions(-) |
| |
| --- a/drivers/net/wireless/rtlwifi/wifi.h |
| +++ b/drivers/net/wireless/rtlwifi/wifi.h |
| @@ -1035,6 +1035,7 @@ struct rtl_ht_agg { |
| |
| struct rssi_sta { |
| long undec_sm_pwdb; |
| + long undec_sm_cck; |
| }; |
| |
| struct rtl_tid_data { |
| @@ -1325,8 +1326,10 @@ struct fast_ant_training { |
| struct rtl_dm { |
| /*PHY status for Dynamic Management */ |
| long entry_min_undec_sm_pwdb; |
| + long undec_sm_cck; |
| long undec_sm_pwdb; /*out dm */ |
| long entry_max_undec_sm_pwdb; |
| + s32 ofdm_pkt_cnt; |
| bool dm_initialgain_enable; |
| bool dynamic_txpower_enable; |
| bool current_turbo_edca; |
| @@ -1341,6 +1344,7 @@ struct rtl_dm { |
| bool inform_fw_driverctrldm; |
| bool current_mrc_switch; |
| u8 txpowercount; |
| + u8 powerindex_backup[6]; |
| |
| u8 thermalvalue_rxgain; |
| u8 thermalvalue_iqk; |
| @@ -1352,7 +1356,9 @@ struct rtl_dm { |
| bool done_txpower; |
| u8 dynamic_txhighpower_lvl; /*Tx high power level */ |
| u8 dm_flag; /*Indicate each dynamic mechanism's status. */ |
| + u8 dm_flag_tmp; |
| u8 dm_type; |
| + u8 dm_rssi_sel; |
| u8 txpower_track_control; |
| bool interrupt_migration; |
| bool disable_tx_int; |
| @@ -1951,6 +1957,7 @@ struct dig_t { |
| u8 pre_ccastate; |
| u8 cur_ccasate; |
| u8 large_fa_hit; |
| + u8 dig_dynamic_min; |
| u8 forbidden_igi; |
| u8 dig_state; |
| u8 dig_highpwrstate; |
| @@ -2031,22 +2038,15 @@ struct rtl_priv { |
| struct dig_t dm_digtable; |
| struct ps_t dm_pstable; |
| |
| - /* section shared by individual drivers */ |
| - union { |
| - struct { /* data buffer pointer for USB reads */ |
| - __le32 *usb_data; |
| - int usb_data_index; |
| - bool initialized; |
| - }; |
| - struct { /* section for 8723ae */ |
| - bool reg_init; /* true if regs saved */ |
| - u32 reg_874; |
| - u32 reg_c70; |
| - u32 reg_85c; |
| - u32 reg_a74; |
| - bool bt_operation_on; |
| - }; |
| - }; |
| + u32 reg_874; |
| + u32 reg_c70; |
| + u32 reg_85c; |
| + u32 reg_a74; |
| + bool reg_init; /* true if regs saved */ |
| + bool bt_operation_on; |
| + __le32 *usb_data; |
| + int usb_data_index; |
| + bool initialized; |
| bool enter_ps; /* true when entering PS */ |
| u8 rate_mask[5]; |
| |