diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-04-26 15:03:48 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-04-26 15:03:48 -0400 |
commit | d9b8ae6bd8c3304569a25079fcdbebaa28a48ee4 (patch) | |
tree | 9ce3e4eb355685f970dd7333a0a935109aff0583 /drivers/net/wireless/rtlwifi | |
parent | 872f24dbc604ef585ea7eec73020dcdfaffd1956 (diff) | |
parent | 94c514fe240fc0dd02187b78facefde8b6744634 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Conflicts:
drivers/net/wireless/iwlwifi/iwl-testmode.c
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | 290 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h | 35 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/dm.h | 35 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/dm.c | 185 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/dm.h | 51 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/dm.c | 156 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/dm.h | 44 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/phy.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/wifi.h | 63 |
11 files changed, 401 insertions, 473 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c index 1208b753f62f..f7f48c7ac854 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c +++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | |||
@@ -33,9 +33,6 @@ | |||
33 | #include "../pci.h" | 33 | #include "../pci.h" |
34 | #include "../base.h" | 34 | #include "../base.h" |
35 | 35 | ||
36 | struct dig_t dm_digtable; | ||
37 | static struct ps_t dm_pstable; | ||
38 | |||
39 | #define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) | 36 | #define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) |
40 | #define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) | 37 | #define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) |
41 | #define BT_RSSI_STATE_SPECIAL_LOW BIT_OFFSET_LEN_MASK_32(2, 1) | 38 | #define BT_RSSI_STATE_SPECIAL_LOW BIT_OFFSET_LEN_MASK_32(2, 1) |
@@ -163,33 +160,37 @@ static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = { | |||
163 | 160 | ||
164 | static void rtl92c_dm_diginit(struct ieee80211_hw *hw) | 161 | static void rtl92c_dm_diginit(struct ieee80211_hw *hw) |
165 | { | 162 | { |
166 | dm_digtable.dig_enable_flag = true; | 163 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
167 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 164 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; |
168 | dm_digtable.cur_igvalue = 0x20; | 165 | |
169 | dm_digtable.pre_igvalue = 0x0; | 166 | dm_digtable->dig_enable_flag = true; |
170 | dm_digtable.cursta_connectctate = DIG_STA_DISCONNECT; | 167 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
171 | dm_digtable.presta_connectstate = DIG_STA_DISCONNECT; | 168 | dm_digtable->cur_igvalue = 0x20; |
172 | dm_digtable.curmultista_connectstate = DIG_MULTISTA_DISCONNECT; | 169 | dm_digtable->pre_igvalue = 0x0; |
173 | dm_digtable.rssi_lowthresh = DM_DIG_THRESH_LOW; | 170 | dm_digtable->cursta_connectctate = DIG_STA_DISCONNECT; |
174 | dm_digtable.rssi_highthresh = DM_DIG_THRESH_HIGH; | 171 | dm_digtable->presta_connectstate = DIG_STA_DISCONNECT; |
175 | dm_digtable.fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | 172 | dm_digtable->curmultista_connectstate = DIG_MULTISTA_DISCONNECT; |
176 | dm_digtable.fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | 173 | dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; |
177 | dm_digtable.rx_gain_range_max = DM_DIG_MAX; | 174 | dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; |
178 | dm_digtable.rx_gain_range_min = DM_DIG_MIN; | 175 | dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; |
179 | dm_digtable.backoff_val = DM_DIG_BACKOFF_DEFAULT; | 176 | dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; |
180 | dm_digtable.backoff_val_range_max = DM_DIG_BACKOFF_MAX; | 177 | dm_digtable->rx_gain_range_max = DM_DIG_MAX; |
181 | dm_digtable.backoff_val_range_min = DM_DIG_BACKOFF_MIN; | 178 | dm_digtable->rx_gain_range_min = DM_DIG_MIN; |
182 | dm_digtable.pre_cck_pd_state = CCK_PD_STAGE_MAX; | 179 | dm_digtable->backoff_val = DM_DIG_BACKOFF_DEFAULT; |
183 | dm_digtable.cur_cck_pd_state = CCK_PD_STAGE_MAX; | 180 | dm_digtable->backoff_val_range_max = DM_DIG_BACKOFF_MAX; |
181 | dm_digtable->backoff_val_range_min = DM_DIG_BACKOFF_MIN; | ||
182 | dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX; | ||
183 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; | ||
184 | } | 184 | } |
185 | 185 | ||
186 | static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) | 186 | static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) |
187 | { | 187 | { |
188 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 188 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
189 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
189 | long rssi_val_min = 0; | 190 | long rssi_val_min = 0; |
190 | 191 | ||
191 | if ((dm_digtable.curmultista_connectstate == DIG_MULTISTA_CONNECT) && | 192 | if ((dm_digtable->curmultista_connectstate == DIG_MULTISTA_CONNECT) && |
192 | (dm_digtable.cursta_connectctate == DIG_STA_CONNECT)) { | 193 | (dm_digtable->cursta_connectctate == DIG_STA_CONNECT)) { |
193 | if (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb != 0) | 194 | if (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb != 0) |
194 | rssi_val_min = | 195 | rssi_val_min = |
195 | (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb > | 196 | (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb > |
@@ -198,10 +199,10 @@ static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) | |||
198 | rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; | 199 | rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; |
199 | else | 200 | else |
200 | rssi_val_min = rtlpriv->dm.undecorated_smoothed_pwdb; | 201 | rssi_val_min = rtlpriv->dm.undecorated_smoothed_pwdb; |
201 | } else if (dm_digtable.cursta_connectctate == DIG_STA_CONNECT || | 202 | } else if (dm_digtable->cursta_connectctate == DIG_STA_CONNECT || |
202 | dm_digtable.cursta_connectctate == DIG_STA_BEFORE_CONNECT) { | 203 | dm_digtable->cursta_connectctate == DIG_STA_BEFORE_CONNECT) { |
203 | rssi_val_min = rtlpriv->dm.undecorated_smoothed_pwdb; | 204 | rssi_val_min = rtlpriv->dm.undecorated_smoothed_pwdb; |
204 | } else if (dm_digtable.curmultista_connectstate == | 205 | } else if (dm_digtable->curmultista_connectstate == |
205 | DIG_MULTISTA_CONNECT) { | 206 | DIG_MULTISTA_CONNECT) { |
206 | rssi_val_min = rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; | 207 | rssi_val_min = rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; |
207 | } | 208 | } |
@@ -260,7 +261,8 @@ static void rtl92c_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) | |||
260 | static void rtl92c_dm_ctrl_initgain_by_fa(struct ieee80211_hw *hw) | 261 | static void rtl92c_dm_ctrl_initgain_by_fa(struct ieee80211_hw *hw) |
261 | { | 262 | { |
262 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 263 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
263 | u8 value_igi = dm_digtable.cur_igvalue; | 264 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; |
265 | u8 value_igi = dm_digtable->cur_igvalue; | ||
264 | 266 | ||
265 | if (rtlpriv->falsealm_cnt.cnt_all < DM_DIG_FA_TH0) | 267 | if (rtlpriv->falsealm_cnt.cnt_all < DM_DIG_FA_TH0) |
266 | value_igi--; | 268 | value_igi--; |
@@ -277,43 +279,44 @@ static void rtl92c_dm_ctrl_initgain_by_fa(struct ieee80211_hw *hw) | |||
277 | if (rtlpriv->falsealm_cnt.cnt_all > 10000) | 279 | if (rtlpriv->falsealm_cnt.cnt_all > 10000) |
278 | value_igi = 0x32; | 280 | value_igi = 0x32; |
279 | 281 | ||
280 | dm_digtable.cur_igvalue = value_igi; | 282 | dm_digtable->cur_igvalue = value_igi; |
281 | rtl92c_dm_write_dig(hw); | 283 | rtl92c_dm_write_dig(hw); |
282 | } | 284 | } |
283 | 285 | ||
284 | static void rtl92c_dm_ctrl_initgain_by_rssi(struct ieee80211_hw *hw) | 286 | static void rtl92c_dm_ctrl_initgain_by_rssi(struct ieee80211_hw *hw) |
285 | { | 287 | { |
286 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 288 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
289 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
287 | 290 | ||
288 | if (rtlpriv->falsealm_cnt.cnt_all > dm_digtable.fa_highthresh) { | 291 | if (rtlpriv->falsealm_cnt.cnt_all > dm_digtable->fa_highthresh) { |
289 | if ((dm_digtable.backoff_val - 2) < | 292 | if ((dm_digtable->backoff_val - 2) < |
290 | dm_digtable.backoff_val_range_min) | 293 | dm_digtable->backoff_val_range_min) |
291 | dm_digtable.backoff_val = | 294 | dm_digtable->backoff_val = |
292 | dm_digtable.backoff_val_range_min; | 295 | dm_digtable->backoff_val_range_min; |
293 | else | 296 | else |
294 | dm_digtable.backoff_val -= 2; | 297 | dm_digtable->backoff_val -= 2; |
295 | } else if (rtlpriv->falsealm_cnt.cnt_all < dm_digtable.fa_lowthresh) { | 298 | } else if (rtlpriv->falsealm_cnt.cnt_all < dm_digtable->fa_lowthresh) { |
296 | if ((dm_digtable.backoff_val + 2) > | 299 | if ((dm_digtable->backoff_val + 2) > |
297 | dm_digtable.backoff_val_range_max) | 300 | dm_digtable->backoff_val_range_max) |
298 | dm_digtable.backoff_val = | 301 | dm_digtable->backoff_val = |
299 | dm_digtable.backoff_val_range_max; | 302 | dm_digtable->backoff_val_range_max; |
300 | else | 303 | else |
301 | dm_digtable.backoff_val += 2; | 304 | dm_digtable->backoff_val += 2; |
302 | } | 305 | } |
303 | 306 | ||
304 | if ((dm_digtable.rssi_val_min + 10 - dm_digtable.backoff_val) > | 307 | if ((dm_digtable->rssi_val_min + 10 - dm_digtable->backoff_val) > |
305 | dm_digtable.rx_gain_range_max) | 308 | dm_digtable->rx_gain_range_max) |
306 | dm_digtable.cur_igvalue = dm_digtable.rx_gain_range_max; | 309 | dm_digtable->cur_igvalue = dm_digtable->rx_gain_range_max; |
307 | else if ((dm_digtable.rssi_val_min + 10 - | 310 | else if ((dm_digtable->rssi_val_min + 10 - |
308 | dm_digtable.backoff_val) < dm_digtable.rx_gain_range_min) | 311 | dm_digtable->backoff_val) < dm_digtable->rx_gain_range_min) |
309 | dm_digtable.cur_igvalue = dm_digtable.rx_gain_range_min; | 312 | dm_digtable->cur_igvalue = dm_digtable->rx_gain_range_min; |
310 | else | 313 | else |
311 | dm_digtable.cur_igvalue = dm_digtable.rssi_val_min + 10 - | 314 | dm_digtable->cur_igvalue = dm_digtable->rssi_val_min + 10 - |
312 | dm_digtable.backoff_val; | 315 | dm_digtable->backoff_val; |
313 | 316 | ||
314 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, | 317 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, |
315 | "rssi_val_min = %x backoff_val %x\n", | 318 | "rssi_val_min = %x backoff_val %x\n", |
316 | dm_digtable.rssi_val_min, dm_digtable.backoff_val); | 319 | dm_digtable->rssi_val_min, dm_digtable->backoff_val); |
317 | 320 | ||
318 | rtl92c_dm_write_dig(hw); | 321 | rtl92c_dm_write_dig(hw); |
319 | } | 322 | } |
@@ -322,6 +325,7 @@ static void rtl92c_dm_initial_gain_multi_sta(struct ieee80211_hw *hw) | |||
322 | { | 325 | { |
323 | static u8 initialized; /* initialized to false */ | 326 | static u8 initialized; /* initialized to false */ |
324 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 327 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
328 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
325 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 329 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
326 | long rssi_strength = rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; | 330 | long rssi_strength = rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; |
327 | bool multi_sta = false; | 331 | bool multi_sta = false; |
@@ -330,68 +334,69 @@ static void rtl92c_dm_initial_gain_multi_sta(struct ieee80211_hw *hw) | |||
330 | multi_sta = true; | 334 | multi_sta = true; |
331 | 335 | ||
332 | if (!multi_sta || | 336 | if (!multi_sta || |
333 | dm_digtable.cursta_connectctate != DIG_STA_DISCONNECT) { | 337 | dm_digtable->cursta_connectctate != DIG_STA_DISCONNECT) { |
334 | initialized = false; | 338 | initialized = false; |
335 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 339 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
336 | return; | 340 | return; |
337 | } else if (initialized == false) { | 341 | } else if (initialized == false) { |
338 | initialized = true; | 342 | initialized = true; |
339 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_0; | 343 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_0; |
340 | dm_digtable.cur_igvalue = 0x20; | 344 | dm_digtable->cur_igvalue = 0x20; |
341 | rtl92c_dm_write_dig(hw); | 345 | rtl92c_dm_write_dig(hw); |
342 | } | 346 | } |
343 | 347 | ||
344 | if (dm_digtable.curmultista_connectstate == DIG_MULTISTA_CONNECT) { | 348 | if (dm_digtable->curmultista_connectstate == DIG_MULTISTA_CONNECT) { |
345 | if ((rssi_strength < dm_digtable.rssi_lowthresh) && | 349 | if ((rssi_strength < dm_digtable->rssi_lowthresh) && |
346 | (dm_digtable.dig_ext_port_stage != DIG_EXT_PORT_STAGE_1)) { | 350 | (dm_digtable->dig_ext_port_stage != DIG_EXT_PORT_STAGE_1)) { |
347 | 351 | ||
348 | if (dm_digtable.dig_ext_port_stage == | 352 | if (dm_digtable->dig_ext_port_stage == |
349 | DIG_EXT_PORT_STAGE_2) { | 353 | DIG_EXT_PORT_STAGE_2) { |
350 | dm_digtable.cur_igvalue = 0x20; | 354 | dm_digtable->cur_igvalue = 0x20; |
351 | rtl92c_dm_write_dig(hw); | 355 | rtl92c_dm_write_dig(hw); |
352 | } | 356 | } |
353 | 357 | ||
354 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_1; | 358 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_1; |
355 | } else if (rssi_strength > dm_digtable.rssi_highthresh) { | 359 | } else if (rssi_strength > dm_digtable->rssi_highthresh) { |
356 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_2; | 360 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_2; |
357 | rtl92c_dm_ctrl_initgain_by_fa(hw); | 361 | rtl92c_dm_ctrl_initgain_by_fa(hw); |
358 | } | 362 | } |
359 | } else if (dm_digtable.dig_ext_port_stage != DIG_EXT_PORT_STAGE_0) { | 363 | } else if (dm_digtable->dig_ext_port_stage != DIG_EXT_PORT_STAGE_0) { |
360 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_0; | 364 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_0; |
361 | dm_digtable.cur_igvalue = 0x20; | 365 | dm_digtable->cur_igvalue = 0x20; |
362 | rtl92c_dm_write_dig(hw); | 366 | rtl92c_dm_write_dig(hw); |
363 | } | 367 | } |
364 | 368 | ||
365 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, | 369 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, |
366 | "curmultista_connectstate = %x dig_ext_port_stage %x\n", | 370 | "curmultista_connectstate = %x dig_ext_port_stage %x\n", |
367 | dm_digtable.curmultista_connectstate, | 371 | dm_digtable->curmultista_connectstate, |
368 | dm_digtable.dig_ext_port_stage); | 372 | dm_digtable->dig_ext_port_stage); |
369 | } | 373 | } |
370 | 374 | ||
371 | static void rtl92c_dm_initial_gain_sta(struct ieee80211_hw *hw) | 375 | static void rtl92c_dm_initial_gain_sta(struct ieee80211_hw *hw) |
372 | { | 376 | { |
373 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 377 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
378 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
374 | 379 | ||
375 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, | 380 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, |
376 | "presta_connectstate = %x, cursta_connectctate = %x\n", | 381 | "presta_connectstate = %x, cursta_connectctate = %x\n", |
377 | dm_digtable.presta_connectstate, | 382 | dm_digtable->presta_connectstate, |
378 | dm_digtable.cursta_connectctate); | 383 | dm_digtable->cursta_connectctate); |
379 | 384 | ||
380 | if (dm_digtable.presta_connectstate == dm_digtable.cursta_connectctate | 385 | if (dm_digtable->presta_connectstate == dm_digtable->cursta_connectctate |
381 | || dm_digtable.cursta_connectctate == DIG_STA_BEFORE_CONNECT | 386 | || dm_digtable->cursta_connectctate == DIG_STA_BEFORE_CONNECT |
382 | || dm_digtable.cursta_connectctate == DIG_STA_CONNECT) { | 387 | || dm_digtable->cursta_connectctate == DIG_STA_CONNECT) { |
383 | 388 | ||
384 | if (dm_digtable.cursta_connectctate != DIG_STA_DISCONNECT) { | 389 | if (dm_digtable->cursta_connectctate != DIG_STA_DISCONNECT) { |
385 | dm_digtable.rssi_val_min = | 390 | dm_digtable->rssi_val_min = |
386 | rtl92c_dm_initial_gain_min_pwdb(hw); | 391 | rtl92c_dm_initial_gain_min_pwdb(hw); |
387 | rtl92c_dm_ctrl_initgain_by_rssi(hw); | 392 | rtl92c_dm_ctrl_initgain_by_rssi(hw); |
388 | } | 393 | } |
389 | } else { | 394 | } else { |
390 | dm_digtable.rssi_val_min = 0; | 395 | dm_digtable->rssi_val_min = 0; |
391 | dm_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 396 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
392 | dm_digtable.backoff_val = DM_DIG_BACKOFF_DEFAULT; | 397 | dm_digtable->backoff_val = DM_DIG_BACKOFF_DEFAULT; |
393 | dm_digtable.cur_igvalue = 0x20; | 398 | dm_digtable->cur_igvalue = 0x20; |
394 | dm_digtable.pre_igvalue = 0; | 399 | dm_digtable->pre_igvalue = 0; |
395 | rtl92c_dm_write_dig(hw); | 400 | rtl92c_dm_write_dig(hw); |
396 | } | 401 | } |
397 | } | 402 | } |
@@ -400,40 +405,41 @@ static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
400 | { | 405 | { |
401 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 406 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
402 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 407 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
408 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
403 | 409 | ||
404 | if (dm_digtable.cursta_connectctate == DIG_STA_CONNECT) { | 410 | if (dm_digtable->cursta_connectctate == DIG_STA_CONNECT) { |
405 | dm_digtable.rssi_val_min = rtl92c_dm_initial_gain_min_pwdb(hw); | 411 | dm_digtable->rssi_val_min = rtl92c_dm_initial_gain_min_pwdb(hw); |
406 | 412 | ||
407 | if (dm_digtable.pre_cck_pd_state == CCK_PD_STAGE_LowRssi) { | 413 | if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LowRssi) { |
408 | if (dm_digtable.rssi_val_min <= 25) | 414 | if (dm_digtable->rssi_val_min <= 25) |
409 | dm_digtable.cur_cck_pd_state = | 415 | dm_digtable->cur_cck_pd_state = |
410 | CCK_PD_STAGE_LowRssi; | 416 | CCK_PD_STAGE_LowRssi; |
411 | else | 417 | else |
412 | dm_digtable.cur_cck_pd_state = | 418 | dm_digtable->cur_cck_pd_state = |
413 | CCK_PD_STAGE_HighRssi; | 419 | CCK_PD_STAGE_HighRssi; |
414 | } else { | 420 | } else { |
415 | if (dm_digtable.rssi_val_min <= 20) | 421 | if (dm_digtable->rssi_val_min <= 20) |
416 | dm_digtable.cur_cck_pd_state = | 422 | dm_digtable->cur_cck_pd_state = |
417 | CCK_PD_STAGE_LowRssi; | 423 | CCK_PD_STAGE_LowRssi; |
418 | else | 424 | else |
419 | dm_digtable.cur_cck_pd_state = | 425 | dm_digtable->cur_cck_pd_state = |
420 | CCK_PD_STAGE_HighRssi; | 426 | CCK_PD_STAGE_HighRssi; |
421 | } | 427 | } |
422 | } else { | 428 | } else { |
423 | dm_digtable.cur_cck_pd_state = CCK_PD_STAGE_MAX; | 429 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; |
424 | } | 430 | } |
425 | 431 | ||
426 | if (dm_digtable.pre_cck_pd_state != dm_digtable.cur_cck_pd_state) { | 432 | if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) { |
427 | if (dm_digtable.cur_cck_pd_state == CCK_PD_STAGE_LowRssi) { | 433 | if (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) { |
428 | if (rtlpriv->falsealm_cnt.cnt_cck_fail > 800) | 434 | if (rtlpriv->falsealm_cnt.cnt_cck_fail > 800) |
429 | dm_digtable.cur_cck_fa_state = | 435 | dm_digtable->cur_cck_fa_state = |
430 | CCK_FA_STAGE_High; | 436 | CCK_FA_STAGE_High; |
431 | else | 437 | else |
432 | dm_digtable.cur_cck_fa_state = CCK_FA_STAGE_Low; | 438 | dm_digtable->cur_cck_fa_state = CCK_FA_STAGE_Low; |
433 | 439 | ||
434 | if (dm_digtable.pre_cck_fa_state != | 440 | if (dm_digtable->pre_cck_fa_state != |
435 | dm_digtable.cur_cck_fa_state) { | 441 | dm_digtable->cur_cck_fa_state) { |
436 | if (dm_digtable.cur_cck_fa_state == | 442 | if (dm_digtable->cur_cck_fa_state == |
437 | CCK_FA_STAGE_Low) | 443 | CCK_FA_STAGE_Low) |
438 | rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, | 444 | rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, |
439 | 0x83); | 445 | 0x83); |
@@ -441,8 +447,8 @@ static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
441 | rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, | 447 | rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, |
442 | 0xcd); | 448 | 0xcd); |
443 | 449 | ||
444 | dm_digtable.pre_cck_fa_state = | 450 | dm_digtable->pre_cck_fa_state = |
445 | dm_digtable.cur_cck_fa_state; | 451 | dm_digtable->cur_cck_fa_state; |
446 | } | 452 | } |
447 | 453 | ||
448 | rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x40); | 454 | rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x40); |
@@ -458,11 +464,11 @@ static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
458 | rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, | 464 | rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, |
459 | MASKBYTE2, 0xd3); | 465 | MASKBYTE2, 0xd3); |
460 | } | 466 | } |
461 | dm_digtable.pre_cck_pd_state = dm_digtable.cur_cck_pd_state; | 467 | dm_digtable->pre_cck_pd_state = dm_digtable->cur_cck_pd_state; |
462 | } | 468 | } |
463 | 469 | ||
464 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "CCKPDStage=%x\n", | 470 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "CCKPDStage=%x\n", |
465 | dm_digtable.cur_cck_pd_state); | 471 | dm_digtable->cur_cck_pd_state); |
466 | 472 | ||
467 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "is92C=%x\n", | 473 | RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, "is92C=%x\n", |
468 | IS_92C_SERIAL(rtlhal->version)); | 474 | IS_92C_SERIAL(rtlhal->version)); |
@@ -470,31 +476,34 @@ static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
470 | 476 | ||
471 | static void rtl92c_dm_ctrl_initgain_by_twoport(struct ieee80211_hw *hw) | 477 | static void rtl92c_dm_ctrl_initgain_by_twoport(struct ieee80211_hw *hw) |
472 | { | 478 | { |
479 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
480 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
473 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 481 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
474 | 482 | ||
475 | if (mac->act_scanning) | 483 | if (mac->act_scanning) |
476 | return; | 484 | return; |
477 | 485 | ||
478 | if (mac->link_state >= MAC80211_LINKED) | 486 | if (mac->link_state >= MAC80211_LINKED) |
479 | dm_digtable.cursta_connectctate = DIG_STA_CONNECT; | 487 | dm_digtable->cursta_connectctate = DIG_STA_CONNECT; |
480 | else | 488 | else |
481 | dm_digtable.cursta_connectctate = DIG_STA_DISCONNECT; | 489 | dm_digtable->cursta_connectctate = DIG_STA_DISCONNECT; |
482 | 490 | ||
483 | rtl92c_dm_initial_gain_sta(hw); | 491 | rtl92c_dm_initial_gain_sta(hw); |
484 | rtl92c_dm_initial_gain_multi_sta(hw); | 492 | rtl92c_dm_initial_gain_multi_sta(hw); |
485 | rtl92c_dm_cck_packet_detection_thresh(hw); | 493 | rtl92c_dm_cck_packet_detection_thresh(hw); |
486 | 494 | ||
487 | dm_digtable.presta_connectstate = dm_digtable.cursta_connectctate; | 495 | dm_digtable->presta_connectstate = dm_digtable->cursta_connectctate; |
488 | 496 | ||
489 | } | 497 | } |
490 | 498 | ||
491 | static void rtl92c_dm_dig(struct ieee80211_hw *hw) | 499 | static void rtl92c_dm_dig(struct ieee80211_hw *hw) |
492 | { | 500 | { |
493 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 501 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
502 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
494 | 503 | ||
495 | if (rtlpriv->dm.dm_initialgain_enable == false) | 504 | if (rtlpriv->dm.dm_initialgain_enable == false) |
496 | return; | 505 | return; |
497 | if (dm_digtable.dig_enable_flag == false) | 506 | if (dm_digtable->dig_enable_flag == false) |
498 | return; | 507 | return; |
499 | 508 | ||
500 | rtl92c_dm_ctrl_initgain_by_twoport(hw); | 509 | rtl92c_dm_ctrl_initgain_by_twoport(hw); |
@@ -514,23 +523,24 @@ static void rtl92c_dm_init_dynamic_txpower(struct ieee80211_hw *hw) | |||
514 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw) | 523 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw) |
515 | { | 524 | { |
516 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 525 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
526 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
517 | 527 | ||
518 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 528 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
519 | "cur_igvalue = 0x%x, pre_igvalue = 0x%x, backoff_val = %d\n", | 529 | "cur_igvalue = 0x%x, pre_igvalue = 0x%x, backoff_val = %d\n", |
520 | dm_digtable.cur_igvalue, dm_digtable.pre_igvalue, | 530 | dm_digtable->cur_igvalue, dm_digtable->pre_igvalue, |
521 | dm_digtable.backoff_val); | 531 | dm_digtable->backoff_val); |
522 | 532 | ||
523 | dm_digtable.cur_igvalue += 2; | 533 | dm_digtable->cur_igvalue += 2; |
524 | if (dm_digtable.cur_igvalue > 0x3f) | 534 | if (dm_digtable->cur_igvalue > 0x3f) |
525 | dm_digtable.cur_igvalue = 0x3f; | 535 | dm_digtable->cur_igvalue = 0x3f; |
526 | 536 | ||
527 | if (dm_digtable.pre_igvalue != dm_digtable.cur_igvalue) { | 537 | if (dm_digtable->pre_igvalue != dm_digtable->cur_igvalue) { |
528 | rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, | 538 | rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, |
529 | dm_digtable.cur_igvalue); | 539 | dm_digtable->cur_igvalue); |
530 | rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, 0x7f, | 540 | rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, 0x7f, |
531 | dm_digtable.cur_igvalue); | 541 | dm_digtable->cur_igvalue); |
532 | 542 | ||
533 | dm_digtable.pre_igvalue = dm_digtable.cur_igvalue; | 543 | dm_digtable->pre_igvalue = dm_digtable->cur_igvalue; |
534 | } | 544 | } |
535 | } | 545 | } |
536 | EXPORT_SYMBOL(rtl92c_dm_write_dig); | 546 | EXPORT_SYMBOL(rtl92c_dm_write_dig); |
@@ -1223,15 +1233,20 @@ static void rtl92c_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw) | |||
1223 | 1233 | ||
1224 | static void rtl92c_dm_init_dynamic_bb_powersaving(struct ieee80211_hw *hw) | 1234 | static void rtl92c_dm_init_dynamic_bb_powersaving(struct ieee80211_hw *hw) |
1225 | { | 1235 | { |
1226 | dm_pstable.pre_ccastate = CCA_MAX; | 1236 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1227 | dm_pstable.cur_ccasate = CCA_MAX; | 1237 | struct ps_t *dm_pstable = &rtlpriv->dm_pstable; |
1228 | dm_pstable.pre_rfstate = RF_MAX; | 1238 | |
1229 | dm_pstable.cur_rfstate = RF_MAX; | 1239 | dm_pstable->pre_ccastate = CCA_MAX; |
1230 | dm_pstable.rssi_val_min = 0; | 1240 | dm_pstable->cur_ccasate = CCA_MAX; |
1241 | dm_pstable->pre_rfstate = RF_MAX; | ||
1242 | dm_pstable->cur_rfstate = RF_MAX; | ||
1243 | dm_pstable->rssi_val_min = 0; | ||
1231 | } | 1244 | } |
1232 | 1245 | ||
1233 | void rtl92c_dm_rf_saving(struct ieee80211_hw *hw, u8 bforce_in_normal) | 1246 | void rtl92c_dm_rf_saving(struct ieee80211_hw *hw, u8 bforce_in_normal) |
1234 | { | 1247 | { |
1248 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
1249 | struct ps_t *dm_pstable = &rtlpriv->dm_pstable; | ||
1235 | static u8 initialize; | 1250 | static u8 initialize; |
1236 | static u32 reg_874, reg_c70, reg_85c, reg_a74; | 1251 | static u32 reg_874, reg_c70, reg_85c, reg_a74; |
1237 | 1252 | ||
@@ -1251,27 +1266,27 @@ void rtl92c_dm_rf_saving(struct ieee80211_hw *hw, u8 bforce_in_normal) | |||
1251 | } | 1266 | } |
1252 | 1267 | ||
1253 | if (!bforce_in_normal) { | 1268 | if (!bforce_in_normal) { |
1254 | if (dm_pstable.rssi_val_min != 0) { | 1269 | if (dm_pstable->rssi_val_min != 0) { |
1255 | if (dm_pstable.pre_rfstate == RF_NORMAL) { | 1270 | if (dm_pstable->pre_rfstate == RF_NORMAL) { |
1256 | if (dm_pstable.rssi_val_min >= 30) | 1271 | if (dm_pstable->rssi_val_min >= 30) |
1257 | dm_pstable.cur_rfstate = RF_SAVE; | 1272 | dm_pstable->cur_rfstate = RF_SAVE; |
1258 | else | 1273 | else |
1259 | dm_pstable.cur_rfstate = RF_NORMAL; | 1274 | dm_pstable->cur_rfstate = RF_NORMAL; |
1260 | } else { | 1275 | } else { |
1261 | if (dm_pstable.rssi_val_min <= 25) | 1276 | if (dm_pstable->rssi_val_min <= 25) |
1262 | dm_pstable.cur_rfstate = RF_NORMAL; | 1277 | dm_pstable->cur_rfstate = RF_NORMAL; |
1263 | else | 1278 | else |
1264 | dm_pstable.cur_rfstate = RF_SAVE; | 1279 | dm_pstable->cur_rfstate = RF_SAVE; |
1265 | } | 1280 | } |
1266 | } else { | 1281 | } else { |
1267 | dm_pstable.cur_rfstate = RF_MAX; | 1282 | dm_pstable->cur_rfstate = RF_MAX; |
1268 | } | 1283 | } |
1269 | } else { | 1284 | } else { |
1270 | dm_pstable.cur_rfstate = RF_NORMAL; | 1285 | dm_pstable->cur_rfstate = RF_NORMAL; |
1271 | } | 1286 | } |
1272 | 1287 | ||
1273 | if (dm_pstable.pre_rfstate != dm_pstable.cur_rfstate) { | 1288 | if (dm_pstable->pre_rfstate != dm_pstable->cur_rfstate) { |
1274 | if (dm_pstable.cur_rfstate == RF_SAVE) { | 1289 | if (dm_pstable->cur_rfstate == RF_SAVE) { |
1275 | rtl_set_bbreg(hw, RFPGA0_XCD_RFINTERFACESW, | 1290 | rtl_set_bbreg(hw, RFPGA0_XCD_RFINTERFACESW, |
1276 | 0x1C0000, 0x2); | 1291 | 0x1C0000, 0x2); |
1277 | rtl_set_bbreg(hw, ROFDM0_AGCPARAMETER1, BIT(3), 0); | 1292 | rtl_set_bbreg(hw, ROFDM0_AGCPARAMETER1, BIT(3), 0); |
@@ -1293,7 +1308,7 @@ void rtl92c_dm_rf_saving(struct ieee80211_hw *hw, u8 bforce_in_normal) | |||
1293 | rtl_set_bbreg(hw, 0x818, BIT(28), 0x0); | 1308 | rtl_set_bbreg(hw, 0x818, BIT(28), 0x0); |
1294 | } | 1309 | } |
1295 | 1310 | ||
1296 | dm_pstable.pre_rfstate = dm_pstable.cur_rfstate; | 1311 | dm_pstable->pre_rfstate = dm_pstable->cur_rfstate; |
1297 | } | 1312 | } |
1298 | } | 1313 | } |
1299 | EXPORT_SYMBOL(rtl92c_dm_rf_saving); | 1314 | EXPORT_SYMBOL(rtl92c_dm_rf_saving); |
@@ -1301,36 +1316,37 @@ EXPORT_SYMBOL(rtl92c_dm_rf_saving); | |||
1301 | static void rtl92c_dm_dynamic_bb_powersaving(struct ieee80211_hw *hw) | 1316 | static void rtl92c_dm_dynamic_bb_powersaving(struct ieee80211_hw *hw) |
1302 | { | 1317 | { |
1303 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1318 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1319 | struct ps_t *dm_pstable = &rtlpriv->dm_pstable; | ||
1304 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 1320 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
1305 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 1321 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
1306 | 1322 | ||
1307 | if (((mac->link_state == MAC80211_NOLINK)) && | 1323 | if (((mac->link_state == MAC80211_NOLINK)) && |
1308 | (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb == 0)) { | 1324 | (rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb == 0)) { |
1309 | dm_pstable.rssi_val_min = 0; | 1325 | dm_pstable->rssi_val_min = 0; |
1310 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, "Not connected to any\n"); | 1326 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, "Not connected to any\n"); |
1311 | } | 1327 | } |
1312 | 1328 | ||
1313 | if (mac->link_state == MAC80211_LINKED) { | 1329 | if (mac->link_state == MAC80211_LINKED) { |
1314 | if (mac->opmode == NL80211_IFTYPE_ADHOC) { | 1330 | if (mac->opmode == NL80211_IFTYPE_ADHOC) { |
1315 | dm_pstable.rssi_val_min = | 1331 | dm_pstable->rssi_val_min = |
1316 | rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; | 1332 | rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; |
1317 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, | 1333 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, |
1318 | "AP Client PWDB = 0x%lx\n", | 1334 | "AP Client PWDB = 0x%lx\n", |
1319 | dm_pstable.rssi_val_min); | 1335 | dm_pstable->rssi_val_min); |
1320 | } else { | 1336 | } else { |
1321 | dm_pstable.rssi_val_min = | 1337 | dm_pstable->rssi_val_min = |
1322 | rtlpriv->dm.undecorated_smoothed_pwdb; | 1338 | rtlpriv->dm.undecorated_smoothed_pwdb; |
1323 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, | 1339 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, |
1324 | "STA Default Port PWDB = 0x%lx\n", | 1340 | "STA Default Port PWDB = 0x%lx\n", |
1325 | dm_pstable.rssi_val_min); | 1341 | dm_pstable->rssi_val_min); |
1326 | } | 1342 | } |
1327 | } else { | 1343 | } else { |
1328 | dm_pstable.rssi_val_min = | 1344 | dm_pstable->rssi_val_min = |
1329 | rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; | 1345 | rtlpriv->dm.entry_min_undecoratedsmoothed_pwdb; |
1330 | 1346 | ||
1331 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, | 1347 | RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD, |
1332 | "AP Ext Port PWDB = 0x%lx\n", | 1348 | "AP Ext Port PWDB = 0x%lx\n", |
1333 | dm_pstable.rssi_val_min); | 1349 | dm_pstable->rssi_val_min); |
1334 | } | 1350 | } |
1335 | 1351 | ||
1336 | if (IS_92C_SERIAL(rtlhal->version)) | 1352 | if (IS_92C_SERIAL(rtlhal->version)) |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h index 2178e3761883..518e208c0180 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h +++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h | |||
@@ -91,40 +91,6 @@ | |||
91 | #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 | 91 | #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 |
92 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 | 92 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 |
93 | 93 | ||
94 | struct ps_t { | ||
95 | u8 pre_ccastate; | ||
96 | u8 cur_ccasate; | ||
97 | u8 pre_rfstate; | ||
98 | u8 cur_rfstate; | ||
99 | long rssi_val_min; | ||
100 | }; | ||
101 | |||
102 | struct dig_t { | ||
103 | u8 dig_enable_flag; | ||
104 | u8 dig_ext_port_stage; | ||
105 | u32 rssi_lowthresh; | ||
106 | u32 rssi_highthresh; | ||
107 | u32 fa_lowthresh; | ||
108 | u32 fa_highthresh; | ||
109 | u8 cursta_connectctate; | ||
110 | u8 presta_connectstate; | ||
111 | u8 curmultista_connectstate; | ||
112 | u8 pre_igvalue; | ||
113 | u8 cur_igvalue; | ||
114 | char backoff_val; | ||
115 | char backoff_val_range_max; | ||
116 | char backoff_val_range_min; | ||
117 | u8 rx_gain_range_max; | ||
118 | u8 rx_gain_range_min; | ||
119 | u8 rssi_val_min; | ||
120 | u8 pre_cck_pd_state; | ||
121 | u8 cur_cck_pd_state; | ||
122 | u8 pre_cck_fa_state; | ||
123 | u8 cur_cck_fa_state; | ||
124 | u8 pre_ccastate; | ||
125 | u8 cur_ccasate; | ||
126 | }; | ||
127 | |||
128 | struct swat_t { | 94 | struct swat_t { |
129 | u8 failure_cnt; | 95 | u8 failure_cnt; |
130 | u8 try_flag; | 96 | u8 try_flag; |
@@ -189,7 +155,6 @@ enum dm_dig_connect_e { | |||
189 | DIG_CONNECT_MAX | 155 | DIG_CONNECT_MAX |
190 | }; | 156 | }; |
191 | 157 | ||
192 | extern struct dig_t dm_digtable; | ||
193 | void rtl92c_dm_init(struct ieee80211_hw *hw); | 158 | void rtl92c_dm_init(struct ieee80211_hw *hw); |
194 | void rtl92c_dm_watchdog(struct ieee80211_hw *hw); | 159 | void rtl92c_dm_watchdog(struct ieee80211_hw *hw); |
195 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw); | 160 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c index 4c016241f340..cdcad7d9f15e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c +++ b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | |||
@@ -1881,6 +1881,7 @@ void rtl92c_phy_set_io(struct ieee80211_hw *hw) | |||
1881 | { | 1881 | { |
1882 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1882 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1883 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 1883 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
1884 | struct dig_t dm_digtable = rtlpriv->dm_digtable; | ||
1884 | 1885 | ||
1885 | RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, | 1886 | RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, |
1886 | "--->Cmd(%#x), set_io_inprogress(%d)\n", | 1887 | "--->Cmd(%#x), set_io_inprogress(%d)\n", |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h b/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h index 26747fa86005..d4a3d032c7bf 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h | |||
@@ -86,40 +86,6 @@ | |||
86 | #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 | 86 | #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 |
87 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 | 87 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 |
88 | 88 | ||
89 | struct ps_t { | ||
90 | u8 pre_ccastate; | ||
91 | u8 cur_ccasate; | ||
92 | u8 pre_rfstate; | ||
93 | u8 cur_rfstate; | ||
94 | long rssi_val_min; | ||
95 | }; | ||
96 | |||
97 | struct dig_t { | ||
98 | u8 dig_enable_flag; | ||
99 | u8 dig_ext_port_stage; | ||
100 | u32 rssi_lowthresh; | ||
101 | u32 rssi_highthresh; | ||
102 | u32 fa_lowthresh; | ||
103 | u32 fa_highthresh; | ||
104 | u8 cursta_connectctate; | ||
105 | u8 presta_connectstate; | ||
106 | u8 curmultista_connectstate; | ||
107 | u8 pre_igvalue; | ||
108 | u8 cur_igvalue; | ||
109 | char backoff_val; | ||
110 | char backoff_val_range_max; | ||
111 | char backoff_val_range_min; | ||
112 | u8 rx_gain_range_max; | ||
113 | u8 rx_gain_range_min; | ||
114 | u8 rssi_val_min; | ||
115 | u8 pre_cck_pd_state; | ||
116 | u8 cur_cck_pd_state; | ||
117 | u8 pre_cck_fa_state; | ||
118 | u8 cur_cck_fa_state; | ||
119 | u8 pre_ccastate; | ||
120 | u8 cur_ccasate; | ||
121 | }; | ||
122 | |||
123 | struct swat_t { | 89 | struct swat_t { |
124 | u8 failure_cnt; | 90 | u8 failure_cnt; |
125 | u8 try_flag; | 91 | u8 try_flag; |
@@ -184,7 +150,6 @@ enum dm_dig_connect_e { | |||
184 | DIG_CONNECT_MAX | 150 | DIG_CONNECT_MAX |
185 | }; | 151 | }; |
186 | 152 | ||
187 | extern struct dig_t dm_digtable; | ||
188 | void rtl92c_dm_init(struct ieee80211_hw *hw); | 153 | void rtl92c_dm_init(struct ieee80211_hw *hw); |
189 | void rtl92c_dm_watchdog(struct ieee80211_hw *hw); | 154 | void rtl92c_dm_watchdog(struct ieee80211_hw *hw); |
190 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw); | 155 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c index 4737018c9daa..a7d63a84551a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c | |||
@@ -37,8 +37,6 @@ | |||
37 | 37 | ||
38 | #define UNDEC_SM_PWDB entry_min_undecoratedsmoothed_pwdb | 38 | #define UNDEC_SM_PWDB entry_min_undecoratedsmoothed_pwdb |
39 | 39 | ||
40 | struct dig_t de_digtable; | ||
41 | |||
42 | static const u32 ofdmswing_table[OFDM_TABLE_SIZE_92D] = { | 40 | static const u32 ofdmswing_table[OFDM_TABLE_SIZE_92D] = { |
43 | 0x7f8001fe, /* 0, +6.0dB */ | 41 | 0x7f8001fe, /* 0, +6.0dB */ |
44 | 0x788001e2, /* 1, +5.5dB */ | 42 | 0x788001e2, /* 1, +5.5dB */ |
@@ -159,27 +157,30 @@ static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = { | |||
159 | 157 | ||
160 | static void rtl92d_dm_diginit(struct ieee80211_hw *hw) | 158 | static void rtl92d_dm_diginit(struct ieee80211_hw *hw) |
161 | { | 159 | { |
162 | de_digtable.dig_enable_flag = true; | 160 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
163 | de_digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 161 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; |
164 | de_digtable.cur_igvalue = 0x20; | 162 | |
165 | de_digtable.pre_igvalue = 0x0; | 163 | de_digtable->dig_enable_flag = true; |
166 | de_digtable.cursta_connectctate = DIG_STA_DISCONNECT; | 164 | de_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
167 | de_digtable.presta_connectstate = DIG_STA_DISCONNECT; | 165 | de_digtable->cur_igvalue = 0x20; |
168 | de_digtable.curmultista_connectstate = DIG_MULTISTA_DISCONNECT; | 166 | de_digtable->pre_igvalue = 0x0; |
169 | de_digtable.rssi_lowthresh = DM_DIG_THRESH_LOW; | 167 | de_digtable->cursta_connectctate = DIG_STA_DISCONNECT; |
170 | de_digtable.rssi_highthresh = DM_DIG_THRESH_HIGH; | 168 | de_digtable->presta_connectstate = DIG_STA_DISCONNECT; |
171 | de_digtable.fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | 169 | de_digtable->curmultista_connectstate = DIG_MULTISTA_DISCONNECT; |
172 | de_digtable.fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | 170 | de_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; |
173 | de_digtable.rx_gain_range_max = DM_DIG_FA_UPPER; | 171 | de_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; |
174 | de_digtable.rx_gain_range_min = DM_DIG_FA_LOWER; | 172 | de_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; |
175 | de_digtable.backoff_val = DM_DIG_BACKOFF_DEFAULT; | 173 | de_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; |
176 | de_digtable.backoff_val_range_max = DM_DIG_BACKOFF_MAX; | 174 | de_digtable->rx_gain_range_max = DM_DIG_FA_UPPER; |
177 | de_digtable.backoff_val_range_min = DM_DIG_BACKOFF_MIN; | 175 | de_digtable->rx_gain_range_min = DM_DIG_FA_LOWER; |
178 | de_digtable.pre_cck_pd_state = CCK_PD_STAGE_LOWRSSI; | 176 | de_digtable->backoff_val = DM_DIG_BACKOFF_DEFAULT; |
179 | de_digtable.cur_cck_pd_state = CCK_PD_STAGE_MAX; | 177 | de_digtable->backoff_val_range_max = DM_DIG_BACKOFF_MAX; |
180 | de_digtable.large_fa_hit = 0; | 178 | de_digtable->backoff_val_range_min = DM_DIG_BACKOFF_MIN; |
181 | de_digtable.recover_cnt = 0; | 179 | de_digtable->pre_cck_pd_state = CCK_PD_STAGE_LOWRSSI; |
182 | de_digtable.forbidden_igi = DM_DIG_FA_LOWER; | 180 | de_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; |
181 | de_digtable->large_fa_hit = 0; | ||
182 | de_digtable->recover_cnt = 0; | ||
183 | de_digtable->forbidden_igi = DM_DIG_FA_LOWER; | ||
183 | } | 184 | } |
184 | 185 | ||
185 | static void rtl92d_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) | 186 | static void rtl92d_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) |
@@ -266,68 +267,70 @@ static void rtl92d_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) | |||
266 | static void rtl92d_dm_find_minimum_rssi(struct ieee80211_hw *hw) | 267 | static void rtl92d_dm_find_minimum_rssi(struct ieee80211_hw *hw) |
267 | { | 268 | { |
268 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 269 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
270 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; | ||
269 | struct rtl_mac *mac = rtl_mac(rtlpriv); | 271 | struct rtl_mac *mac = rtl_mac(rtlpriv); |
270 | 272 | ||
271 | /* Determine the minimum RSSI */ | 273 | /* Determine the minimum RSSI */ |
272 | if ((mac->link_state < MAC80211_LINKED) && | 274 | if ((mac->link_state < MAC80211_LINKED) && |
273 | (rtlpriv->dm.UNDEC_SM_PWDB == 0)) { | 275 | (rtlpriv->dm.UNDEC_SM_PWDB == 0)) { |
274 | de_digtable.min_undecorated_pwdb_for_dm = 0; | 276 | de_digtable->min_undecorated_pwdb_for_dm = 0; |
275 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, | 277 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
276 | "Not connected to any\n"); | 278 | "Not connected to any\n"); |
277 | } | 279 | } |
278 | if (mac->link_state >= MAC80211_LINKED) { | 280 | if (mac->link_state >= MAC80211_LINKED) { |
279 | if (mac->opmode == NL80211_IFTYPE_AP || | 281 | if (mac->opmode == NL80211_IFTYPE_AP || |
280 | mac->opmode == NL80211_IFTYPE_ADHOC) { | 282 | mac->opmode == NL80211_IFTYPE_ADHOC) { |
281 | de_digtable.min_undecorated_pwdb_for_dm = | 283 | de_digtable->min_undecorated_pwdb_for_dm = |
282 | rtlpriv->dm.UNDEC_SM_PWDB; | 284 | rtlpriv->dm.UNDEC_SM_PWDB; |
283 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, | 285 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
284 | "AP Client PWDB = 0x%lx\n", | 286 | "AP Client PWDB = 0x%lx\n", |
285 | rtlpriv->dm.UNDEC_SM_PWDB); | 287 | rtlpriv->dm.UNDEC_SM_PWDB); |
286 | } else { | 288 | } else { |
287 | de_digtable.min_undecorated_pwdb_for_dm = | 289 | de_digtable->min_undecorated_pwdb_for_dm = |
288 | rtlpriv->dm.undecorated_smoothed_pwdb; | 290 | rtlpriv->dm.undecorated_smoothed_pwdb; |
289 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, | 291 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
290 | "STA Default Port PWDB = 0x%x\n", | 292 | "STA Default Port PWDB = 0x%x\n", |
291 | de_digtable.min_undecorated_pwdb_for_dm); | 293 | de_digtable->min_undecorated_pwdb_for_dm); |
292 | } | 294 | } |
293 | } else { | 295 | } else { |
294 | de_digtable.min_undecorated_pwdb_for_dm = | 296 | de_digtable->min_undecorated_pwdb_for_dm = |
295 | rtlpriv->dm.UNDEC_SM_PWDB; | 297 | rtlpriv->dm.UNDEC_SM_PWDB; |
296 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, | 298 | RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
297 | "AP Ext Port or disconnect PWDB = 0x%x\n", | 299 | "AP Ext Port or disconnect PWDB = 0x%x\n", |
298 | de_digtable.min_undecorated_pwdb_for_dm); | 300 | de_digtable->min_undecorated_pwdb_for_dm); |
299 | } | 301 | } |
300 | 302 | ||
301 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n", | 303 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n", |
302 | de_digtable.min_undecorated_pwdb_for_dm); | 304 | de_digtable->min_undecorated_pwdb_for_dm); |
303 | } | 305 | } |
304 | 306 | ||
305 | static void rtl92d_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | 307 | static void rtl92d_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) |
306 | { | 308 | { |
307 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 309 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
310 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; | ||
308 | unsigned long flag = 0; | 311 | unsigned long flag = 0; |
309 | 312 | ||
310 | if (de_digtable.cursta_connectctate == DIG_STA_CONNECT) { | 313 | if (de_digtable->cursta_connectctate == DIG_STA_CONNECT) { |
311 | if (de_digtable.pre_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { | 314 | if (de_digtable->pre_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { |
312 | if (de_digtable.min_undecorated_pwdb_for_dm <= 25) | 315 | if (de_digtable->min_undecorated_pwdb_for_dm <= 25) |
313 | de_digtable.cur_cck_pd_state = | 316 | de_digtable->cur_cck_pd_state = |
314 | CCK_PD_STAGE_LOWRSSI; | 317 | CCK_PD_STAGE_LOWRSSI; |
315 | else | 318 | else |
316 | de_digtable.cur_cck_pd_state = | 319 | de_digtable->cur_cck_pd_state = |
317 | CCK_PD_STAGE_HIGHRSSI; | 320 | CCK_PD_STAGE_HIGHRSSI; |
318 | } else { | 321 | } else { |
319 | if (de_digtable.min_undecorated_pwdb_for_dm <= 20) | 322 | if (de_digtable->min_undecorated_pwdb_for_dm <= 20) |
320 | de_digtable.cur_cck_pd_state = | 323 | de_digtable->cur_cck_pd_state = |
321 | CCK_PD_STAGE_LOWRSSI; | 324 | CCK_PD_STAGE_LOWRSSI; |
322 | else | 325 | else |
323 | de_digtable.cur_cck_pd_state = | 326 | de_digtable->cur_cck_pd_state = |
324 | CCK_PD_STAGE_HIGHRSSI; | 327 | CCK_PD_STAGE_HIGHRSSI; |
325 | } | 328 | } |
326 | } else { | 329 | } else { |
327 | de_digtable.cur_cck_pd_state = CCK_PD_STAGE_LOWRSSI; | 330 | de_digtable->cur_cck_pd_state = CCK_PD_STAGE_LOWRSSI; |
328 | } | 331 | } |
329 | if (de_digtable.pre_cck_pd_state != de_digtable.cur_cck_pd_state) { | 332 | if (de_digtable->pre_cck_pd_state != de_digtable->cur_cck_pd_state) { |
330 | if (de_digtable.cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { | 333 | if (de_digtable->cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { |
331 | rtl92d_acquire_cckandrw_pagea_ctl(hw, &flag); | 334 | rtl92d_acquire_cckandrw_pagea_ctl(hw, &flag); |
332 | rtl_set_bbreg(hw, RCCK0_CCA, BMASKBYTE2, 0x83); | 335 | rtl_set_bbreg(hw, RCCK0_CCA, BMASKBYTE2, 0x83); |
333 | rtl92d_release_cckandrw_pagea_ctl(hw, &flag); | 336 | rtl92d_release_cckandrw_pagea_ctl(hw, &flag); |
@@ -336,13 +339,13 @@ static void rtl92d_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
336 | rtl_set_bbreg(hw, RCCK0_CCA, BMASKBYTE2, 0xcd); | 339 | rtl_set_bbreg(hw, RCCK0_CCA, BMASKBYTE2, 0xcd); |
337 | rtl92d_release_cckandrw_pagea_ctl(hw, &flag); | 340 | rtl92d_release_cckandrw_pagea_ctl(hw, &flag); |
338 | } | 341 | } |
339 | de_digtable.pre_cck_pd_state = de_digtable.cur_cck_pd_state; | 342 | de_digtable->pre_cck_pd_state = de_digtable->cur_cck_pd_state; |
340 | } | 343 | } |
341 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "CurSTAConnectState=%s\n", | 344 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "CurSTAConnectState=%s\n", |
342 | de_digtable.cursta_connectctate == DIG_STA_CONNECT ? | 345 | de_digtable->cursta_connectctate == DIG_STA_CONNECT ? |
343 | "DIG_STA_CONNECT " : "DIG_STA_DISCONNECT"); | 346 | "DIG_STA_CONNECT " : "DIG_STA_DISCONNECT"); |
344 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "CCKPDStage=%s\n", | 347 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "CCKPDStage=%s\n", |
345 | de_digtable.cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI ? | 348 | de_digtable->cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI ? |
346 | "Low RSSI " : "High RSSI "); | 349 | "Low RSSI " : "High RSSI "); |
347 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "is92d single phy =%x\n", | 350 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "is92d single phy =%x\n", |
348 | IS_92D_SINGLEPHY(rtlpriv->rtlhal.version)); | 351 | IS_92D_SINGLEPHY(rtlpriv->rtlhal.version)); |
@@ -352,37 +355,40 @@ static void rtl92d_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
352 | void rtl92d_dm_write_dig(struct ieee80211_hw *hw) | 355 | void rtl92d_dm_write_dig(struct ieee80211_hw *hw) |
353 | { | 356 | { |
354 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 357 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
358 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; | ||
355 | 359 | ||
356 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 360 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
357 | "cur_igvalue = 0x%x, pre_igvalue = 0x%x, backoff_val = %d\n", | 361 | "cur_igvalue = 0x%x, pre_igvalue = 0x%x, backoff_val = %d\n", |
358 | de_digtable.cur_igvalue, de_digtable.pre_igvalue, | 362 | de_digtable->cur_igvalue, de_digtable->pre_igvalue, |
359 | de_digtable.backoff_val); | 363 | de_digtable->backoff_val); |
360 | if (de_digtable.dig_enable_flag == false) { | 364 | if (de_digtable->dig_enable_flag == false) { |
361 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "DIG is disabled\n"); | 365 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "DIG is disabled\n"); |
362 | de_digtable.pre_igvalue = 0x17; | 366 | de_digtable->pre_igvalue = 0x17; |
363 | return; | 367 | return; |
364 | } | 368 | } |
365 | if (de_digtable.pre_igvalue != de_digtable.cur_igvalue) { | 369 | if (de_digtable->pre_igvalue != de_digtable->cur_igvalue) { |
366 | rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, | 370 | rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, |
367 | de_digtable.cur_igvalue); | 371 | de_digtable->cur_igvalue); |
368 | rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, 0x7f, | 372 | rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, 0x7f, |
369 | de_digtable.cur_igvalue); | 373 | de_digtable->cur_igvalue); |
370 | de_digtable.pre_igvalue = de_digtable.cur_igvalue; | 374 | de_digtable->pre_igvalue = de_digtable->cur_igvalue; |
371 | } | 375 | } |
372 | } | 376 | } |
373 | 377 | ||
374 | static void rtl92d_early_mode_enabled(struct rtl_priv *rtlpriv) | 378 | static void rtl92d_early_mode_enabled(struct rtl_priv *rtlpriv) |
375 | { | 379 | { |
380 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; | ||
381 | |||
376 | if ((rtlpriv->mac80211.link_state >= MAC80211_LINKED) && | 382 | if ((rtlpriv->mac80211.link_state >= MAC80211_LINKED) && |
377 | (rtlpriv->mac80211.vendor == PEER_CISCO)) { | 383 | (rtlpriv->mac80211.vendor == PEER_CISCO)) { |
378 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "IOT_PEER = CISCO\n"); | 384 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "IOT_PEER = CISCO\n"); |
379 | if (de_digtable.last_min_undecorated_pwdb_for_dm >= 50 | 385 | if (de_digtable->last_min_undecorated_pwdb_for_dm >= 50 |
380 | && de_digtable.min_undecorated_pwdb_for_dm < 50) { | 386 | && de_digtable->min_undecorated_pwdb_for_dm < 50) { |
381 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x00); | 387 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x00); |
382 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 388 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
383 | "Early Mode Off\n"); | 389 | "Early Mode Off\n"); |
384 | } else if (de_digtable.last_min_undecorated_pwdb_for_dm <= 55 && | 390 | } else if (de_digtable->last_min_undecorated_pwdb_for_dm <= 55 && |
385 | de_digtable.min_undecorated_pwdb_for_dm > 55) { | 391 | de_digtable->min_undecorated_pwdb_for_dm > 55) { |
386 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x0f); | 392 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x0f); |
387 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 393 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
388 | "Early Mode On\n"); | 394 | "Early Mode On\n"); |
@@ -396,14 +402,15 @@ static void rtl92d_early_mode_enabled(struct rtl_priv *rtlpriv) | |||
396 | static void rtl92d_dm_dig(struct ieee80211_hw *hw) | 402 | static void rtl92d_dm_dig(struct ieee80211_hw *hw) |
397 | { | 403 | { |
398 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 404 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
399 | u8 value_igi = de_digtable.cur_igvalue; | 405 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; |
406 | u8 value_igi = de_digtable->cur_igvalue; | ||
400 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); | 407 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); |
401 | 408 | ||
402 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "==>\n"); | 409 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "==>\n"); |
403 | if (rtlpriv->rtlhal.earlymode_enable) { | 410 | if (rtlpriv->rtlhal.earlymode_enable) { |
404 | rtl92d_early_mode_enabled(rtlpriv); | 411 | rtl92d_early_mode_enabled(rtlpriv); |
405 | de_digtable.last_min_undecorated_pwdb_for_dm = | 412 | de_digtable->last_min_undecorated_pwdb_for_dm = |
406 | de_digtable.min_undecorated_pwdb_for_dm; | 413 | de_digtable->min_undecorated_pwdb_for_dm; |
407 | } | 414 | } |
408 | if (!rtlpriv->dm.dm_initialgain_enable) | 415 | if (!rtlpriv->dm.dm_initialgain_enable) |
409 | return; | 416 | return; |
@@ -421,9 +428,9 @@ static void rtl92d_dm_dig(struct ieee80211_hw *hw) | |||
421 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "progress\n"); | 428 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "progress\n"); |
422 | /* Decide the current status and if modify initial gain or not */ | 429 | /* Decide the current status and if modify initial gain or not */ |
423 | if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) | 430 | if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) |
424 | de_digtable.cursta_connectctate = DIG_STA_CONNECT; | 431 | de_digtable->cursta_connectctate = DIG_STA_CONNECT; |
425 | else | 432 | else |
426 | de_digtable.cursta_connectctate = DIG_STA_DISCONNECT; | 433 | de_digtable->cursta_connectctate = DIG_STA_DISCONNECT; |
427 | 434 | ||
428 | /* adjust initial gain according to false alarm counter */ | 435 | /* adjust initial gain according to false alarm counter */ |
429 | if (falsealm_cnt->cnt_all < DM_DIG_FA_TH0) | 436 | if (falsealm_cnt->cnt_all < DM_DIG_FA_TH0) |
@@ -436,64 +443,64 @@ static void rtl92d_dm_dig(struct ieee80211_hw *hw) | |||
436 | value_igi += 2; | 443 | value_igi += 2; |
437 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 444 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
438 | "dm_DIG() Before: large_fa_hit=%d, forbidden_igi=%x\n", | 445 | "dm_DIG() Before: large_fa_hit=%d, forbidden_igi=%x\n", |
439 | de_digtable.large_fa_hit, de_digtable.forbidden_igi); | 446 | de_digtable->large_fa_hit, de_digtable->forbidden_igi); |
440 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 447 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
441 | "dm_DIG() Before: Recover_cnt=%d, rx_gain_range_min=%x\n", | 448 | "dm_DIG() Before: Recover_cnt=%d, rx_gain_range_min=%x\n", |
442 | de_digtable.recover_cnt, de_digtable.rx_gain_range_min); | 449 | de_digtable->recover_cnt, de_digtable->rx_gain_range_min); |
443 | 450 | ||
444 | /* deal with abnorally large false alarm */ | 451 | /* deal with abnorally large false alarm */ |
445 | if (falsealm_cnt->cnt_all > 10000) { | 452 | if (falsealm_cnt->cnt_all > 10000) { |
446 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 453 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
447 | "dm_DIG(): Abnormally false alarm case\n"); | 454 | "dm_DIG(): Abnormally false alarm case\n"); |
448 | 455 | ||
449 | de_digtable.large_fa_hit++; | 456 | de_digtable->large_fa_hit++; |
450 | if (de_digtable.forbidden_igi < de_digtable.cur_igvalue) { | 457 | if (de_digtable->forbidden_igi < de_digtable->cur_igvalue) { |
451 | de_digtable.forbidden_igi = de_digtable.cur_igvalue; | 458 | de_digtable->forbidden_igi = de_digtable->cur_igvalue; |
452 | de_digtable.large_fa_hit = 1; | 459 | de_digtable->large_fa_hit = 1; |
453 | } | 460 | } |
454 | if (de_digtable.large_fa_hit >= 3) { | 461 | if (de_digtable->large_fa_hit >= 3) { |
455 | if ((de_digtable.forbidden_igi + 1) > DM_DIG_MAX) | 462 | if ((de_digtable->forbidden_igi + 1) > DM_DIG_MAX) |
456 | de_digtable.rx_gain_range_min = DM_DIG_MAX; | 463 | de_digtable->rx_gain_range_min = DM_DIG_MAX; |
457 | else | 464 | else |
458 | de_digtable.rx_gain_range_min = | 465 | de_digtable->rx_gain_range_min = |
459 | (de_digtable.forbidden_igi + 1); | 466 | (de_digtable->forbidden_igi + 1); |
460 | de_digtable.recover_cnt = 3600; /* 3600=2hr */ | 467 | de_digtable->recover_cnt = 3600; /* 3600=2hr */ |
461 | } | 468 | } |
462 | } else { | 469 | } else { |
463 | /* Recovery mechanism for IGI lower bound */ | 470 | /* Recovery mechanism for IGI lower bound */ |
464 | if (de_digtable.recover_cnt != 0) { | 471 | if (de_digtable->recover_cnt != 0) { |
465 | de_digtable.recover_cnt--; | 472 | de_digtable->recover_cnt--; |
466 | } else { | 473 | } else { |
467 | if (de_digtable.large_fa_hit == 0) { | 474 | if (de_digtable->large_fa_hit == 0) { |
468 | if ((de_digtable.forbidden_igi - 1) < | 475 | if ((de_digtable->forbidden_igi - 1) < |
469 | DM_DIG_FA_LOWER) { | 476 | DM_DIG_FA_LOWER) { |
470 | de_digtable.forbidden_igi = | 477 | de_digtable->forbidden_igi = |
471 | DM_DIG_FA_LOWER; | 478 | DM_DIG_FA_LOWER; |
472 | de_digtable.rx_gain_range_min = | 479 | de_digtable->rx_gain_range_min = |
473 | DM_DIG_FA_LOWER; | 480 | DM_DIG_FA_LOWER; |
474 | 481 | ||
475 | } else { | 482 | } else { |
476 | de_digtable.forbidden_igi--; | 483 | de_digtable->forbidden_igi--; |
477 | de_digtable.rx_gain_range_min = | 484 | de_digtable->rx_gain_range_min = |
478 | (de_digtable.forbidden_igi + 1); | 485 | (de_digtable->forbidden_igi + 1); |
479 | } | 486 | } |
480 | } else if (de_digtable.large_fa_hit == 3) { | 487 | } else if (de_digtable->large_fa_hit == 3) { |
481 | de_digtable.large_fa_hit = 0; | 488 | de_digtable->large_fa_hit = 0; |
482 | } | 489 | } |
483 | } | 490 | } |
484 | } | 491 | } |
485 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 492 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
486 | "dm_DIG() After: large_fa_hit=%d, forbidden_igi=%x\n", | 493 | "dm_DIG() After: large_fa_hit=%d, forbidden_igi=%x\n", |
487 | de_digtable.large_fa_hit, de_digtable.forbidden_igi); | 494 | de_digtable->large_fa_hit, de_digtable->forbidden_igi); |
488 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 495 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
489 | "dm_DIG() After: recover_cnt=%d, rx_gain_range_min=%x\n", | 496 | "dm_DIG() After: recover_cnt=%d, rx_gain_range_min=%x\n", |
490 | de_digtable.recover_cnt, de_digtable.rx_gain_range_min); | 497 | de_digtable->recover_cnt, de_digtable->rx_gain_range_min); |
491 | 498 | ||
492 | if (value_igi > DM_DIG_MAX) | 499 | if (value_igi > DM_DIG_MAX) |
493 | value_igi = DM_DIG_MAX; | 500 | value_igi = DM_DIG_MAX; |
494 | else if (value_igi < de_digtable.rx_gain_range_min) | 501 | else if (value_igi < de_digtable->rx_gain_range_min) |
495 | value_igi = de_digtable.rx_gain_range_min; | 502 | value_igi = de_digtable->rx_gain_range_min; |
496 | de_digtable.cur_igvalue = value_igi; | 503 | de_digtable->cur_igvalue = value_igi; |
497 | rtl92d_dm_write_dig(hw); | 504 | rtl92d_dm_write_dig(hw); |
498 | if (rtlpriv->rtlhal.current_bandtype != BAND_ON_5G) | 505 | if (rtlpriv->rtlhal.current_bandtype != BAND_ON_5G) |
499 | rtl92d_dm_cck_packet_detection_thresh(hw); | 506 | rtl92d_dm_cck_packet_detection_thresh(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/dm.h b/drivers/net/wireless/rtlwifi/rtl8192de/dm.h index 91030ec8ac3e..3fea0c11c24a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192de/dm.h | |||
@@ -87,55 +87,6 @@ | |||
87 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 | 87 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 |
88 | #define INDEX_MAPPING_NUM 13 | 88 | #define INDEX_MAPPING_NUM 13 |
89 | 89 | ||
90 | struct ps_t { | ||
91 | u8 pre_ccastate; | ||
92 | u8 cur_ccasate; | ||
93 | |||
94 | u8 pre_rfstate; | ||
95 | u8 cur_rfstate; | ||
96 | |||
97 | long rssi_val_min; | ||
98 | }; | ||
99 | |||
100 | struct dig_t { | ||
101 | u8 dig_enable_flag; | ||
102 | u8 dig_ext_port_stage; | ||
103 | |||
104 | u32 rssi_lowthresh; | ||
105 | u32 rssi_highthresh; | ||
106 | |||
107 | u32 fa_lowthresh; | ||
108 | u32 fa_highthresh; | ||
109 | |||
110 | u8 cursta_connectctate; | ||
111 | u8 presta_connectstate; | ||
112 | u8 curmultista_connectstate; | ||
113 | |||
114 | u8 pre_igvalue; | ||
115 | u8 cur_igvalue; | ||
116 | |||
117 | char backoff_val; | ||
118 | char backoff_val_range_max; | ||
119 | char backoff_val_range_min; | ||
120 | u8 rx_gain_range_max; | ||
121 | u8 rx_gain_range_min; | ||
122 | u8 min_undecorated_pwdb_for_dm; | ||
123 | long last_min_undecorated_pwdb_for_dm; | ||
124 | |||
125 | u8 pre_cck_pd_state; | ||
126 | u8 cur_cck_pd_state; | ||
127 | |||
128 | u8 pre_cck_fa_state; | ||
129 | u8 cur_cck_fa_state; | ||
130 | |||
131 | u8 pre_ccastate; | ||
132 | u8 cur_ccasate; | ||
133 | |||
134 | u8 large_fa_hit; | ||
135 | u8 forbidden_igi; | ||
136 | u32 recover_cnt; | ||
137 | }; | ||
138 | |||
139 | struct swat { | 90 | struct swat { |
140 | u8 failure_cnt; | 91 | u8 failure_cnt; |
141 | u8 try_flag; | 92 | u8 try_flag; |
@@ -200,8 +151,6 @@ enum dm_dig_connect { | |||
200 | DIG_CONNECT_MAX | 151 | DIG_CONNECT_MAX |
201 | }; | 152 | }; |
202 | 153 | ||
203 | extern struct dig_t de_digtable; | ||
204 | |||
205 | void rtl92d_dm_init(struct ieee80211_hw *hw); | 154 | void rtl92d_dm_init(struct ieee80211_hw *hw); |
206 | void rtl92d_dm_watchdog(struct ieee80211_hw *hw); | 155 | void rtl92d_dm_watchdog(struct ieee80211_hw *hw); |
207 | void rtl92d_dm_init_edca_turbo(struct ieee80211_hw *hw); | 156 | void rtl92d_dm_init_edca_turbo(struct ieee80211_hw *hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c index 28fc5fb8057b..18380a7829f1 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c | |||
@@ -3064,6 +3064,7 @@ u8 rtl92d_phy_sw_chnl(struct ieee80211_hw *hw) | |||
3064 | static void rtl92d_phy_set_io(struct ieee80211_hw *hw) | 3064 | static void rtl92d_phy_set_io(struct ieee80211_hw *hw) |
3065 | { | 3065 | { |
3066 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 3066 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
3067 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; | ||
3067 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 3068 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
3068 | 3069 | ||
3069 | RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, | 3070 | RT_TRACE(rtlpriv, COMP_CMD, DBG_TRACE, |
@@ -3071,13 +3072,13 @@ static void rtl92d_phy_set_io(struct ieee80211_hw *hw) | |||
3071 | rtlphy->current_io_type, rtlphy->set_io_inprogress); | 3072 | rtlphy->current_io_type, rtlphy->set_io_inprogress); |
3072 | switch (rtlphy->current_io_type) { | 3073 | switch (rtlphy->current_io_type) { |
3073 | case IO_CMD_RESUME_DM_BY_SCAN: | 3074 | case IO_CMD_RESUME_DM_BY_SCAN: |
3074 | de_digtable.cur_igvalue = rtlphy->initgain_backup.xaagccore1; | 3075 | de_digtable->cur_igvalue = rtlphy->initgain_backup.xaagccore1; |
3075 | rtl92d_dm_write_dig(hw); | 3076 | rtl92d_dm_write_dig(hw); |
3076 | rtl92d_phy_set_txpower_level(hw, rtlphy->current_channel); | 3077 | rtl92d_phy_set_txpower_level(hw, rtlphy->current_channel); |
3077 | break; | 3078 | break; |
3078 | case IO_CMD_PAUSE_DM_BY_SCAN: | 3079 | case IO_CMD_PAUSE_DM_BY_SCAN: |
3079 | rtlphy->initgain_backup.xaagccore1 = de_digtable.cur_igvalue; | 3080 | rtlphy->initgain_backup.xaagccore1 = de_digtable->cur_igvalue; |
3080 | de_digtable.cur_igvalue = 0x37; | 3081 | de_digtable->cur_igvalue = 0x37; |
3081 | rtl92d_dm_write_dig(hw); | 3082 | rtl92d_dm_write_dig(hw); |
3082 | break; | 3083 | break; |
3083 | default: | 3084 | default: |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c index fbabae17259e..2e1158026fb7 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include "dm.h" | 35 | #include "dm.h" |
36 | #include "fw.h" | 36 | #include "fw.h" |
37 | 37 | ||
38 | struct dig_t digtable; | ||
39 | static const u32 edca_setting_dl[PEER_MAX] = { | 38 | static const u32 edca_setting_dl[PEER_MAX] = { |
40 | 0xa44f, /* 0 UNKNOWN */ | 39 | 0xa44f, /* 0 UNKNOWN */ |
41 | 0x5ea44f, /* 1 REALTEK_90 */ | 40 | 0x5ea44f, /* 1 REALTEK_90 */ |
@@ -421,62 +420,64 @@ static void _rtl92s_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) | |||
421 | static void rtl92s_backoff_enable_flag(struct ieee80211_hw *hw) | 420 | static void rtl92s_backoff_enable_flag(struct ieee80211_hw *hw) |
422 | { | 421 | { |
423 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 422 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
423 | struct dig_t *digtable = &rtlpriv->dm_digtable; | ||
424 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); | 424 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); |
425 | 425 | ||
426 | if (falsealm_cnt->cnt_all > digtable.fa_highthresh) { | 426 | if (falsealm_cnt->cnt_all > digtable->fa_highthresh) { |
427 | if ((digtable.backoff_val - 6) < | 427 | if ((digtable->backoff_val - 6) < |
428 | digtable.backoffval_range_min) | 428 | digtable->backoffval_range_min) |
429 | digtable.backoff_val = digtable.backoffval_range_min; | 429 | digtable->backoff_val = digtable->backoffval_range_min; |
430 | else | 430 | else |
431 | digtable.backoff_val -= 6; | 431 | digtable->backoff_val -= 6; |
432 | } else if (falsealm_cnt->cnt_all < digtable.fa_lowthresh) { | 432 | } else if (falsealm_cnt->cnt_all < digtable->fa_lowthresh) { |
433 | if ((digtable.backoff_val + 6) > | 433 | if ((digtable->backoff_val + 6) > |
434 | digtable.backoffval_range_max) | 434 | digtable->backoffval_range_max) |
435 | digtable.backoff_val = | 435 | digtable->backoff_val = |
436 | digtable.backoffval_range_max; | 436 | digtable->backoffval_range_max; |
437 | else | 437 | else |
438 | digtable.backoff_val += 6; | 438 | digtable->backoff_val += 6; |
439 | } | 439 | } |
440 | } | 440 | } |
441 | 441 | ||
442 | static void _rtl92s_dm_initial_gain_sta_beforeconnect(struct ieee80211_hw *hw) | 442 | static void _rtl92s_dm_initial_gain_sta_beforeconnect(struct ieee80211_hw *hw) |
443 | { | 443 | { |
444 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 444 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
445 | struct dig_t *digtable = &rtlpriv->dm_digtable; | ||
445 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); | 446 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); |
446 | static u8 initialized, force_write; | 447 | static u8 initialized, force_write; |
447 | u8 initial_gain = 0; | 448 | u8 initial_gain = 0; |
448 | 449 | ||
449 | if ((digtable.pre_sta_connectstate == digtable.cur_sta_connectstate) || | 450 | if ((digtable->pre_sta_connectstate == digtable->cur_sta_connectstate) || |
450 | (digtable.cur_sta_connectstate == DIG_STA_BEFORE_CONNECT)) { | 451 | (digtable->cur_sta_connectstate == DIG_STA_BEFORE_CONNECT)) { |
451 | if (digtable.cur_sta_connectstate == DIG_STA_BEFORE_CONNECT) { | 452 | if (digtable->cur_sta_connectstate == DIG_STA_BEFORE_CONNECT) { |
452 | if (rtlpriv->psc.rfpwr_state != ERFON) | 453 | if (rtlpriv->psc.rfpwr_state != ERFON) |
453 | return; | 454 | return; |
454 | 455 | ||
455 | if (digtable.backoff_enable_flag) | 456 | if (digtable->backoff_enable_flag) |
456 | rtl92s_backoff_enable_flag(hw); | 457 | rtl92s_backoff_enable_flag(hw); |
457 | else | 458 | else |
458 | digtable.backoff_val = DM_DIG_BACKOFF; | 459 | digtable->backoff_val = DM_DIG_BACKOFF; |
459 | 460 | ||
460 | if ((digtable.rssi_val + 10 - digtable.backoff_val) > | 461 | if ((digtable->rssi_val + 10 - digtable->backoff_val) > |
461 | digtable.rx_gain_range_max) | 462 | digtable->rx_gain_range_max) |
462 | digtable.cur_igvalue = | 463 | digtable->cur_igvalue = |
463 | digtable.rx_gain_range_max; | 464 | digtable->rx_gain_range_max; |
464 | else if ((digtable.rssi_val + 10 - digtable.backoff_val) | 465 | else if ((digtable->rssi_val + 10 - digtable->backoff_val) |
465 | < digtable.rx_gain_range_min) | 466 | < digtable->rx_gain_range_min) |
466 | digtable.cur_igvalue = | 467 | digtable->cur_igvalue = |
467 | digtable.rx_gain_range_min; | 468 | digtable->rx_gain_range_min; |
468 | else | 469 | else |
469 | digtable.cur_igvalue = digtable.rssi_val + 10 - | 470 | digtable->cur_igvalue = digtable->rssi_val + 10 - |
470 | digtable.backoff_val; | 471 | digtable->backoff_val; |
471 | 472 | ||
472 | if (falsealm_cnt->cnt_all > 10000) | 473 | if (falsealm_cnt->cnt_all > 10000) |
473 | digtable.cur_igvalue = | 474 | digtable->cur_igvalue = |
474 | (digtable.cur_igvalue > 0x33) ? | 475 | (digtable->cur_igvalue > 0x33) ? |
475 | digtable.cur_igvalue : 0x33; | 476 | digtable->cur_igvalue : 0x33; |
476 | 477 | ||
477 | if (falsealm_cnt->cnt_all > 16000) | 478 | if (falsealm_cnt->cnt_all > 16000) |
478 | digtable.cur_igvalue = | 479 | digtable->cur_igvalue = |
479 | digtable.rx_gain_range_max; | 480 | digtable->rx_gain_range_max; |
480 | /* connected -> connected or disconnected -> disconnected */ | 481 | /* connected -> connected or disconnected -> disconnected */ |
481 | } else { | 482 | } else { |
482 | /* Firmware control DIG, do nothing in driver dm */ | 483 | /* Firmware control DIG, do nothing in driver dm */ |
@@ -486,31 +487,31 @@ static void _rtl92s_dm_initial_gain_sta_beforeconnect(struct ieee80211_hw *hw) | |||
486 | * disconnected or beforeconnect->(dis)connected */ | 487 | * disconnected or beforeconnect->(dis)connected */ |
487 | } else { | 488 | } else { |
488 | /* Enable FW DIG */ | 489 | /* Enable FW DIG */ |
489 | digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 490 | digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
490 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_ENABLE); | 491 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_ENABLE); |
491 | 492 | ||
492 | digtable.backoff_val = DM_DIG_BACKOFF; | 493 | digtable->backoff_val = DM_DIG_BACKOFF; |
493 | digtable.cur_igvalue = rtlpriv->phy.default_initialgain[0]; | 494 | digtable->cur_igvalue = rtlpriv->phy.default_initialgain[0]; |
494 | digtable.pre_igvalue = 0; | 495 | digtable->pre_igvalue = 0; |
495 | return; | 496 | return; |
496 | } | 497 | } |
497 | 498 | ||
498 | /* Forced writing to prevent from fw-dig overwriting. */ | 499 | /* Forced writing to prevent from fw-dig overwriting. */ |
499 | if (digtable.pre_igvalue != rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, | 500 | if (digtable->pre_igvalue != rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, |
500 | MASKBYTE0)) | 501 | MASKBYTE0)) |
501 | force_write = 1; | 502 | force_write = 1; |
502 | 503 | ||
503 | if ((digtable.pre_igvalue != digtable.cur_igvalue) || | 504 | if ((digtable->pre_igvalue != digtable->cur_igvalue) || |
504 | !initialized || force_write) { | 505 | !initialized || force_write) { |
505 | /* Disable FW DIG */ | 506 | /* Disable FW DIG */ |
506 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_DISABLE); | 507 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_DISABLE); |
507 | 508 | ||
508 | initial_gain = (u8)digtable.cur_igvalue; | 509 | initial_gain = (u8)digtable->cur_igvalue; |
509 | 510 | ||
510 | /* Set initial gain. */ | 511 | /* Set initial gain. */ |
511 | rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, MASKBYTE0, initial_gain); | 512 | rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, MASKBYTE0, initial_gain); |
512 | rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, MASKBYTE0, initial_gain); | 513 | rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, MASKBYTE0, initial_gain); |
513 | digtable.pre_igvalue = digtable.cur_igvalue; | 514 | digtable->pre_igvalue = digtable->cur_igvalue; |
514 | initialized = 1; | 515 | initialized = 1; |
515 | force_write = 0; | 516 | force_write = 0; |
516 | } | 517 | } |
@@ -519,6 +520,7 @@ static void _rtl92s_dm_initial_gain_sta_beforeconnect(struct ieee80211_hw *hw) | |||
519 | static void _rtl92s_dm_ctrl_initgain_bytwoport(struct ieee80211_hw *hw) | 520 | static void _rtl92s_dm_ctrl_initgain_bytwoport(struct ieee80211_hw *hw) |
520 | { | 521 | { |
521 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 522 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
523 | struct dig_t *digtable = &rtlpriv->dm_digtable; | ||
522 | 524 | ||
523 | if (rtlpriv->mac80211.act_scanning) | 525 | if (rtlpriv->mac80211.act_scanning) |
524 | return; | 526 | return; |
@@ -526,17 +528,17 @@ static void _rtl92s_dm_ctrl_initgain_bytwoport(struct ieee80211_hw *hw) | |||
526 | /* Decide the current status and if modify initial gain or not */ | 528 | /* Decide the current status and if modify initial gain or not */ |
527 | if (rtlpriv->mac80211.link_state >= MAC80211_LINKED || | 529 | if (rtlpriv->mac80211.link_state >= MAC80211_LINKED || |
528 | rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC) | 530 | rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC) |
529 | digtable.cur_sta_connectstate = DIG_STA_CONNECT; | 531 | digtable->cur_sta_connectstate = DIG_STA_CONNECT; |
530 | else | 532 | else |
531 | digtable.cur_sta_connectstate = DIG_STA_DISCONNECT; | 533 | digtable->cur_sta_connectstate = DIG_STA_DISCONNECT; |
532 | 534 | ||
533 | digtable.rssi_val = rtlpriv->dm.undecorated_smoothed_pwdb; | 535 | digtable->rssi_val = rtlpriv->dm.undecorated_smoothed_pwdb; |
534 | 536 | ||
535 | /* Change dig mode to rssi */ | 537 | /* Change dig mode to rssi */ |
536 | if (digtable.cur_sta_connectstate != DIG_STA_DISCONNECT) { | 538 | if (digtable->cur_sta_connectstate != DIG_STA_DISCONNECT) { |
537 | if (digtable.dig_twoport_algorithm == | 539 | if (digtable->dig_twoport_algorithm == |
538 | DIG_TWO_PORT_ALGO_FALSE_ALARM) { | 540 | DIG_TWO_PORT_ALGO_FALSE_ALARM) { |
539 | digtable.dig_twoport_algorithm = DIG_TWO_PORT_ALGO_RSSI; | 541 | digtable->dig_twoport_algorithm = DIG_TWO_PORT_ALGO_RSSI; |
540 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_MODE_SS); | 542 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_MODE_SS); |
541 | } | 543 | } |
542 | } | 544 | } |
@@ -544,13 +546,14 @@ static void _rtl92s_dm_ctrl_initgain_bytwoport(struct ieee80211_hw *hw) | |||
544 | _rtl92s_dm_false_alarm_counter_statistics(hw); | 546 | _rtl92s_dm_false_alarm_counter_statistics(hw); |
545 | _rtl92s_dm_initial_gain_sta_beforeconnect(hw); | 547 | _rtl92s_dm_initial_gain_sta_beforeconnect(hw); |
546 | 548 | ||
547 | digtable.pre_sta_connectstate = digtable.cur_sta_connectstate; | 549 | digtable->pre_sta_connectstate = digtable->cur_sta_connectstate; |
548 | } | 550 | } |
549 | 551 | ||
550 | static void _rtl92s_dm_ctrl_initgain_byrssi(struct ieee80211_hw *hw) | 552 | static void _rtl92s_dm_ctrl_initgain_byrssi(struct ieee80211_hw *hw) |
551 | { | 553 | { |
552 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 554 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
553 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 555 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
556 | struct dig_t *digtable = &rtlpriv->dm_digtable; | ||
554 | 557 | ||
555 | /* 2T2R TP issue */ | 558 | /* 2T2R TP issue */ |
556 | if (rtlphy->rf_type == RF_2T2R) | 559 | if (rtlphy->rf_type == RF_2T2R) |
@@ -559,7 +562,7 @@ static void _rtl92s_dm_ctrl_initgain_byrssi(struct ieee80211_hw *hw) | |||
559 | if (!rtlpriv->dm.dm_initialgain_enable) | 562 | if (!rtlpriv->dm.dm_initialgain_enable) |
560 | return; | 563 | return; |
561 | 564 | ||
562 | if (digtable.dig_enable_flag == false) | 565 | if (digtable->dig_enable_flag == false) |
563 | return; | 566 | return; |
564 | 567 | ||
565 | _rtl92s_dm_ctrl_initgain_bytwoport(hw); | 568 | _rtl92s_dm_ctrl_initgain_bytwoport(hw); |
@@ -639,51 +642,52 @@ static void _rtl92s_dm_dynamic_txpower(struct ieee80211_hw *hw) | |||
639 | static void _rtl92s_dm_init_dig(struct ieee80211_hw *hw) | 642 | static void _rtl92s_dm_init_dig(struct ieee80211_hw *hw) |
640 | { | 643 | { |
641 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 644 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
645 | struct dig_t *digtable = &rtlpriv->dm_digtable; | ||
642 | 646 | ||
643 | /* Disable DIG scheme now.*/ | 647 | /* Disable DIG scheme now.*/ |
644 | digtable.dig_enable_flag = true; | 648 | digtable->dig_enable_flag = true; |
645 | digtable.backoff_enable_flag = true; | 649 | digtable->backoff_enable_flag = true; |
646 | 650 | ||
647 | if ((rtlpriv->dm.dm_type == DM_TYPE_BYDRIVER) && | 651 | if ((rtlpriv->dm.dm_type == DM_TYPE_BYDRIVER) && |
648 | (hal_get_firmwareversion(rtlpriv) >= 0x3c)) | 652 | (hal_get_firmwareversion(rtlpriv) >= 0x3c)) |
649 | digtable.dig_algorithm = DIG_ALGO_BY_TOW_PORT; | 653 | digtable->dig_algorithm = DIG_ALGO_BY_TOW_PORT; |
650 | else | 654 | else |
651 | digtable.dig_algorithm = | 655 | digtable->dig_algorithm = |
652 | DIG_ALGO_BEFORE_CONNECT_BY_RSSI_AND_ALARM; | 656 | DIG_ALGO_BEFORE_CONNECT_BY_RSSI_AND_ALARM; |
653 | 657 | ||
654 | digtable.dig_twoport_algorithm = DIG_TWO_PORT_ALGO_RSSI; | 658 | digtable->dig_twoport_algorithm = DIG_TWO_PORT_ALGO_RSSI; |
655 | digtable.dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 659 | digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
656 | /* off=by real rssi value, on=by digtable.rssi_val for new dig */ | 660 | /* off=by real rssi value, on=by digtable->rssi_val for new dig */ |
657 | digtable.dig_dbgmode = DM_DBG_OFF; | 661 | digtable->dig_dbgmode = DM_DBG_OFF; |
658 | digtable.dig_slgorithm_switch = 0; | 662 | digtable->dig_slgorithm_switch = 0; |
659 | 663 | ||
660 | /* 2007/10/04 MH Define init gain threshol. */ | 664 | /* 2007/10/04 MH Define init gain threshol. */ |
661 | digtable.dig_state = DM_STA_DIG_MAX; | 665 | digtable->dig_state = DM_STA_DIG_MAX; |
662 | digtable.dig_highpwrstate = DM_STA_DIG_MAX; | 666 | digtable->dig_highpwrstate = DM_STA_DIG_MAX; |
663 | 667 | ||
664 | digtable.cur_sta_connectstate = DIG_STA_DISCONNECT; | 668 | digtable->cur_sta_connectstate = DIG_STA_DISCONNECT; |
665 | digtable.pre_sta_connectstate = DIG_STA_DISCONNECT; | 669 | digtable->pre_sta_connectstate = DIG_STA_DISCONNECT; |
666 | digtable.cur_ap_connectstate = DIG_AP_DISCONNECT; | 670 | digtable->cur_ap_connectstate = DIG_AP_DISCONNECT; |
667 | digtable.pre_ap_connectstate = DIG_AP_DISCONNECT; | 671 | digtable->pre_ap_connectstate = DIG_AP_DISCONNECT; |
668 | 672 | ||
669 | digtable.rssi_lowthresh = DM_DIG_THRESH_LOW; | 673 | digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; |
670 | digtable.rssi_highthresh = DM_DIG_THRESH_HIGH; | 674 | digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; |
671 | 675 | ||
672 | digtable.fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | 676 | digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; |
673 | digtable.fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | 677 | digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; |
674 | 678 | ||
675 | digtable.rssi_highpower_lowthresh = DM_DIG_HIGH_PWR_THRESH_LOW; | 679 | digtable->rssi_highpower_lowthresh = DM_DIG_HIGH_PWR_THRESH_LOW; |
676 | digtable.rssi_highpower_highthresh = DM_DIG_HIGH_PWR_THRESH_HIGH; | 680 | digtable->rssi_highpower_highthresh = DM_DIG_HIGH_PWR_THRESH_HIGH; |
677 | 681 | ||
678 | /* for dig debug rssi value */ | 682 | /* for dig debug rssi value */ |
679 | digtable.rssi_val = 50; | 683 | digtable->rssi_val = 50; |
680 | digtable.backoff_val = DM_DIG_BACKOFF; | 684 | digtable->backoff_val = DM_DIG_BACKOFF; |
681 | digtable.rx_gain_range_max = DM_DIG_MAX; | 685 | digtable->rx_gain_range_max = DM_DIG_MAX; |
682 | 686 | ||
683 | digtable.rx_gain_range_min = DM_DIG_MIN; | 687 | digtable->rx_gain_range_min = DM_DIG_MIN; |
684 | 688 | ||
685 | digtable.backoffval_range_max = DM_DIG_BACKOFF_MAX; | 689 | digtable->backoffval_range_max = DM_DIG_BACKOFF_MAX; |
686 | digtable.backoffval_range_min = DM_DIG_BACKOFF_MIN; | 690 | digtable->backoffval_range_min = DM_DIG_BACKOFF_MIN; |
687 | } | 691 | } |
688 | 692 | ||
689 | static void _rtl92s_dm_init_dynamic_txpower(struct ieee80211_hw *hw) | 693 | static void _rtl92s_dm_init_dynamic_txpower(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/dm.h b/drivers/net/wireless/rtlwifi/rtl8192se/dm.h index e1b19a641765..2e9052c8fe4b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192se/dm.h | |||
@@ -29,48 +29,6 @@ | |||
29 | #ifndef __RTL_92S_DM_H__ | 29 | #ifndef __RTL_92S_DM_H__ |
30 | #define __RTL_92S_DM_H__ | 30 | #define __RTL_92S_DM_H__ |
31 | 31 | ||
32 | struct dig_t { | ||
33 | u8 dig_enable_flag; | ||
34 | u8 dig_algorithm; | ||
35 | u8 dig_twoport_algorithm; | ||
36 | u8 dig_ext_port_stage; | ||
37 | u8 dig_dbgmode; | ||
38 | u8 dig_slgorithm_switch; | ||
39 | |||
40 | long rssi_lowthresh; | ||
41 | long rssi_highthresh; | ||
42 | |||
43 | u32 fa_lowthresh; | ||
44 | u32 fa_highthresh; | ||
45 | |||
46 | long rssi_highpower_lowthresh; | ||
47 | long rssi_highpower_highthresh; | ||
48 | |||
49 | u8 dig_state; | ||
50 | u8 dig_highpwrstate; | ||
51 | u8 cur_sta_connectstate; | ||
52 | u8 pre_sta_connectstate; | ||
53 | u8 cur_ap_connectstate; | ||
54 | u8 pre_ap_connectstate; | ||
55 | |||
56 | u8 cur_pd_thstate; | ||
57 | u8 pre_pd_thstate; | ||
58 | u8 cur_cs_ratiostate; | ||
59 | u8 pre_cs_ratiostate; | ||
60 | |||
61 | u32 pre_igvalue; | ||
62 | u32 cur_igvalue; | ||
63 | |||
64 | u8 backoff_enable_flag; | ||
65 | char backoff_val; | ||
66 | char backoffval_range_max; | ||
67 | char backoffval_range_min; | ||
68 | u8 rx_gain_range_max; | ||
69 | u8 rx_gain_range_min; | ||
70 | |||
71 | long rssi_val; | ||
72 | }; | ||
73 | |||
74 | enum dm_dig_alg { | 32 | enum dm_dig_alg { |
75 | DIG_ALGO_BY_FALSE_ALARM = 0, | 33 | DIG_ALGO_BY_FALSE_ALARM = 0, |
76 | DIG_ALGO_BY_RSSI = 1, | 34 | DIG_ALGO_BY_RSSI = 1, |
@@ -154,8 +112,6 @@ enum dm_ratr_sta { | |||
154 | #define DM_DIG_BACKOFF_MAX 12 | 112 | #define DM_DIG_BACKOFF_MAX 12 |
155 | #define DM_DIG_BACKOFF_MIN -4 | 113 | #define DM_DIG_BACKOFF_MIN -4 |
156 | 114 | ||
157 | extern struct dig_t digtable; | ||
158 | |||
159 | void rtl92s_dm_watchdog(struct ieee80211_hw *hw); | 115 | void rtl92s_dm_watchdog(struct ieee80211_hw *hw); |
160 | void rtl92s_dm_init(struct ieee80211_hw *hw); | 116 | void rtl92s_dm_init(struct ieee80211_hw *hw); |
161 | void rtl92s_dm_init_edca_turbo(struct ieee80211_hw *hw); | 117 | void rtl92s_dm_init_edca_turbo(struct ieee80211_hw *hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/phy.c b/drivers/net/wireless/rtlwifi/rtl8192se/phy.c index 4a499928e4c6..8d7099bc472c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/phy.c | |||
@@ -1450,6 +1450,7 @@ static void _rtl92s_phy_set_fwcmd_io(struct ieee80211_hw *hw) | |||
1450 | bool rtl92s_phy_set_fw_cmd(struct ieee80211_hw *hw, enum fwcmd_iotype fw_cmdio) | 1450 | bool rtl92s_phy_set_fw_cmd(struct ieee80211_hw *hw, enum fwcmd_iotype fw_cmdio) |
1451 | { | 1451 | { |
1452 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1452 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1453 | struct dig_t *digtable = &rtlpriv->dm_digtable; | ||
1453 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 1454 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
1454 | struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); | 1455 | struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); |
1455 | u32 fw_param = FW_CMD_IO_PARA_QUERY(rtlpriv); | 1456 | u32 fw_param = FW_CMD_IO_PARA_QUERY(rtlpriv); |
@@ -1588,16 +1589,16 @@ bool rtl92s_phy_set_fw_cmd(struct ieee80211_hw *hw, enum fwcmd_iotype fw_cmdio) | |||
1588 | FW_SS_CTL); | 1589 | FW_SS_CTL); |
1589 | 1590 | ||
1590 | if (rtlpriv->dm.dm_flag & HAL_DM_DIG_DISABLE || | 1591 | if (rtlpriv->dm.dm_flag & HAL_DM_DIG_DISABLE || |
1591 | !digtable.dig_enable_flag) | 1592 | !digtable->dig_enable_flag) |
1592 | fw_cmdmap &= ~FW_DIG_ENABLE_CTL; | 1593 | fw_cmdmap &= ~FW_DIG_ENABLE_CTL; |
1593 | 1594 | ||
1594 | if ((rtlpriv->dm.dm_flag & HAL_DM_HIPWR_DISABLE) || | 1595 | if ((rtlpriv->dm.dm_flag & HAL_DM_HIPWR_DISABLE) || |
1595 | rtlpriv->dm.dynamic_txpower_enable) | 1596 | rtlpriv->dm.dynamic_txpower_enable) |
1596 | fw_cmdmap &= ~FW_HIGH_PWR_ENABLE_CTL; | 1597 | fw_cmdmap &= ~FW_HIGH_PWR_ENABLE_CTL; |
1597 | 1598 | ||
1598 | if ((digtable.dig_ext_port_stage == | 1599 | if ((digtable->dig_ext_port_stage == |
1599 | DIG_EXT_PORT_STAGE_0) || | 1600 | DIG_EXT_PORT_STAGE_0) || |
1600 | (digtable.dig_ext_port_stage == | 1601 | (digtable->dig_ext_port_stage == |
1601 | DIG_EXT_PORT_STAGE_1)) | 1602 | DIG_EXT_PORT_STAGE_1)) |
1602 | fw_cmdmap &= ~FW_DIG_ENABLE_CTL; | 1603 | fw_cmdmap &= ~FW_DIG_ENABLE_CTL; |
1603 | 1604 | ||
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h index 521398803099..bd816aef26dc 100644 --- a/drivers/net/wireless/rtlwifi/wifi.h +++ b/drivers/net/wireless/rtlwifi/wifi.h | |||
@@ -1592,6 +1592,65 @@ struct rtl_debug { | |||
1592 | char proc_name[20]; | 1592 | char proc_name[20]; |
1593 | }; | 1593 | }; |
1594 | 1594 | ||
1595 | struct ps_t { | ||
1596 | u8 pre_ccastate; | ||
1597 | u8 cur_ccasate; | ||
1598 | u8 pre_rfstate; | ||
1599 | u8 cur_rfstate; | ||
1600 | long rssi_val_min; | ||
1601 | }; | ||
1602 | |||
1603 | struct dig_t { | ||
1604 | u32 rssi_lowthresh; | ||
1605 | u32 rssi_highthresh; | ||
1606 | u32 fa_lowthresh; | ||
1607 | u32 fa_highthresh; | ||
1608 | long last_min_undecorated_pwdb_for_dm; | ||
1609 | long rssi_highpower_lowthresh; | ||
1610 | long rssi_highpower_highthresh; | ||
1611 | u32 recover_cnt; | ||
1612 | u32 pre_igvalue; | ||
1613 | u32 cur_igvalue; | ||
1614 | long rssi_val; | ||
1615 | u8 dig_enable_flag; | ||
1616 | u8 dig_ext_port_stage; | ||
1617 | u8 dig_algorithm; | ||
1618 | u8 dig_twoport_algorithm; | ||
1619 | u8 dig_dbgmode; | ||
1620 | u8 dig_slgorithm_switch; | ||
1621 | u8 cursta_connectctate; | ||
1622 | u8 presta_connectstate; | ||
1623 | u8 curmultista_connectstate; | ||
1624 | char backoff_val; | ||
1625 | char backoff_val_range_max; | ||
1626 | char backoff_val_range_min; | ||
1627 | u8 rx_gain_range_max; | ||
1628 | u8 rx_gain_range_min; | ||
1629 | u8 min_undecorated_pwdb_for_dm; | ||
1630 | u8 rssi_val_min; | ||
1631 | u8 pre_cck_pd_state; | ||
1632 | u8 cur_cck_pd_state; | ||
1633 | u8 pre_cck_fa_state; | ||
1634 | u8 cur_cck_fa_state; | ||
1635 | u8 pre_ccastate; | ||
1636 | u8 cur_ccasate; | ||
1637 | u8 large_fa_hit; | ||
1638 | u8 forbidden_igi; | ||
1639 | u8 dig_state; | ||
1640 | u8 dig_highpwrstate; | ||
1641 | u8 cur_sta_connectstate; | ||
1642 | u8 pre_sta_connectstate; | ||
1643 | u8 cur_ap_connectstate; | ||
1644 | u8 pre_ap_connectstate; | ||
1645 | u8 cur_pd_thstate; | ||
1646 | u8 pre_pd_thstate; | ||
1647 | u8 cur_cs_ratiostate; | ||
1648 | u8 pre_cs_ratiostate; | ||
1649 | u8 backoff_enable_flag; | ||
1650 | char backoffval_range_max; | ||
1651 | char backoffval_range_min; | ||
1652 | }; | ||
1653 | |||
1595 | struct rtl_priv { | 1654 | struct rtl_priv { |
1596 | struct completion firmware_loading_complete; | 1655 | struct completion firmware_loading_complete; |
1597 | struct rtl_locks locks; | 1656 | struct rtl_locks locks; |
@@ -1629,6 +1688,10 @@ struct rtl_priv { | |||
1629 | interface or hardware */ | 1688 | interface or hardware */ |
1630 | unsigned long status; | 1689 | unsigned long status; |
1631 | 1690 | ||
1691 | /* tables for dm */ | ||
1692 | struct dig_t dm_digtable; | ||
1693 | struct ps_t dm_pstable; | ||
1694 | |||
1632 | /* data buffer pointer for USB reads */ | 1695 | /* data buffer pointer for USB reads */ |
1633 | __le32 *usb_data; | 1696 | __le32 *usb_data; |
1634 | int usb_data_index; | 1697 | int usb_data_index; |