提交 0bf1f883 编写于 作者: R Roland Vossen 提交者: John W. Linville

brcm80211: smac: removed MPC related code

The chip init sequence enables MPC (Minimum Power Consumption), but the
driver disables it after that. As there are no interfaces to enable this
mode the related code is unused (member variable wlc->mpc is false).
Reviewed-by: NAlwin Beukers <alwin@broadcom.com>
Reviewed-by: NArend van Spriel <arend@broadcom.com>
Reviewed-by: NPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: NRoland Vossen <rvossen@broadcom.com>
Signed-off-by: NArend van Spriel <arend@broadcom.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 dfded557
...@@ -1079,7 +1079,7 @@ static struct brcms_info *brcms_attach(u16 vendor, u16 device, ...@@ -1079,7 +1079,7 @@ static struct brcms_info *brcms_attach(u16 vendor, u16 device,
wl->pub->ieee_hw = hw; wl->pub->ieee_hw = hw;
/* disable mpc */ /* disable mpc */
brcms_c_set_radio_mpc(wl->wlc, false); brcms_c_set_radio_mpc(wl->wlc);
/* register our interrupt handler */ /* register our interrupt handler */
if (request_irq(irq, brcms_isr, IRQF_SHARED, KBUILD_MODNAME, wl)) { if (request_irq(irq, brcms_isr, IRQF_SHARED, KBUILD_MODNAME, wl)) {
......
...@@ -419,20 +419,6 @@ static int brcms_chspec_bw(u16 chanspec) ...@@ -419,20 +419,6 @@ static int brcms_chspec_bw(u16 chanspec)
return BRCMS_10_MHZ; return BRCMS_10_MHZ;
} }
/*
* return true if Minimum Power Consumption should
* be entered, false otherwise
*/
static bool brcms_c_is_non_delay_mpc(struct brcms_c_info *wlc)
{
return false;
}
static bool brcms_c_ismpc(struct brcms_c_info *wlc)
{
return (wlc->mpc_delay_off == 0) && (brcms_c_is_non_delay_mpc(wlc));
}
static void brcms_c_bsscfg_mfree(struct brcms_bss_cfg *cfg) static void brcms_c_bsscfg_mfree(struct brcms_bss_cfg *cfg)
{ {
if (cfg == NULL) if (cfg == NULL)
...@@ -4350,56 +4336,18 @@ static void brcms_b_watchdog(void *arg) ...@@ -4350,56 +4336,18 @@ static void brcms_b_watchdog(void *arg)
static void brcms_c_radio_mpc_upd(struct brcms_c_info *wlc) static void brcms_c_radio_mpc_upd(struct brcms_c_info *wlc)
{ {
bool mpc_radio, radio_state;
/* /*
* Clear the WL_RADIO_MPC_DISABLE bit when mpc feature is disabled * Clear the WL_RADIO_MPC_DISABLE bit when mpc feature is disabled
* in case the WL_RADIO_MPC_DISABLE bit was set. Stop the radio * in case the WL_RADIO_MPC_DISABLE bit was set. Stop the radio
* monitor also when WL_RADIO_MPC_DISABLE is the only reason that * monitor also when WL_RADIO_MPC_DISABLE is the only reason that
* the radio is going down. * the radio is going down.
*/ */
if (!wlc->mpc) { if (!wlc->pub->radio_disabled)
if (!wlc->pub->radio_disabled)
return;
mboolclr(wlc->pub->radio_disabled, WL_RADIO_MPC_DISABLE);
brcms_c_radio_upd(wlc);
if (!wlc->pub->radio_disabled)
brcms_c_radio_monitor_stop(wlc);
return; return;
} mboolclr(wlc->pub->radio_disabled, WL_RADIO_MPC_DISABLE);
brcms_c_radio_upd(wlc);
/* if (!wlc->pub->radio_disabled)
* sync ismpc logic with WL_RADIO_MPC_DISABLE bit in brcms_c_radio_monitor_stop(wlc);
* wlc->pub->radio_disabled to go ON, always call radio_upd
* synchronously to go OFF, postpone radio_upd to later when
* context is safe(e.g. watchdog)
*/
radio_state =
(mboolisset(wlc->pub->radio_disabled, WL_RADIO_MPC_DISABLE) ? OFF :
ON);
mpc_radio = (brcms_c_ismpc(wlc) == true) ? OFF : ON;
if (radio_state == ON && mpc_radio == OFF)
wlc->mpc_delay_off = wlc->mpc_dlycnt;
else if (radio_state == OFF && mpc_radio == ON) {
mboolclr(wlc->pub->radio_disabled, WL_RADIO_MPC_DISABLE);
brcms_c_radio_upd(wlc);
if (wlc->mpc_offcnt < BRCMS_MPC_THRESHOLD)
wlc->mpc_dlycnt = BRCMS_MPC_MAX_DELAYCNT;
else
wlc->mpc_dlycnt = BRCMS_MPC_MIN_DELAYCNT;
}
/*
* Below logic is meant to capture the transition from mpc off
* to mpc on for reasons other than wlc->mpc_delay_off keeping
* the mpc off. In that case reset wlc->mpc_delay_off to
* wlc->mpc_dlycnt, so that we restart the countdown of mpc_delay_off
*/
if ((wlc->prev_non_delay_mpc == false) &&
(brcms_c_is_non_delay_mpc(wlc) == true) && wlc->mpc_delay_off)
wlc->mpc_delay_off = wlc->mpc_dlycnt;
wlc->prev_non_delay_mpc = brcms_c_is_non_delay_mpc(wlc);
} }
/* common watchdog code */ /* common watchdog code */
...@@ -4427,8 +4375,6 @@ static void brcms_c_watchdog(void *arg) ...@@ -4427,8 +4375,6 @@ static void brcms_c_watchdog(void *arg)
if (--wlc->mpc_delay_off == 0) { if (--wlc->mpc_delay_off == 0) {
mboolset(wlc->pub->radio_disabled, mboolset(wlc->pub->radio_disabled,
WL_RADIO_MPC_DISABLE); WL_RADIO_MPC_DISABLE);
if (wlc->mpc && brcms_c_ismpc(wlc))
wlc->mpc_offcnt = 0;
} }
} }
...@@ -5200,9 +5146,6 @@ static void brcms_c_ap_upd(struct brcms_c_info *wlc) ...@@ -5200,9 +5146,6 @@ static void brcms_c_ap_upd(struct brcms_c_info *wlc)
{ {
/* STA-BSS; short capable */ /* STA-BSS; short capable */
wlc->PLCPHdr_override = BRCMS_PLCP_SHORT; wlc->PLCPHdr_override = BRCMS_PLCP_SHORT;
/* fixup mpc */
wlc->mpc = true;
} }
/* Initialize just the hardware when coming out of POR or S3/S5 system states */ /* Initialize just the hardware when coming out of POR or S3/S5 system states */
...@@ -8192,9 +8135,8 @@ int brcms_c_get_tx_power(struct brcms_c_info *wlc) ...@@ -8192,9 +8135,8 @@ int brcms_c_get_tx_power(struct brcms_c_info *wlc)
return (int)(qdbm / BRCMS_TXPWR_DB_FACTOR); return (int)(qdbm / BRCMS_TXPWR_DB_FACTOR);
} }
void brcms_c_set_radio_mpc(struct brcms_c_info *wlc, bool mpc) void brcms_c_set_radio_mpc(struct brcms_c_info *wlc)
{ {
wlc->mpc = mpc;
brcms_c_radio_mpc_upd(wlc); brcms_c_radio_mpc_upd(wlc);
} }
......
...@@ -427,7 +427,6 @@ struct brcms_txq_info { ...@@ -427,7 +427,6 @@ struct brcms_txq_info {
* bandinit_pending: track band init in auto band. * bandinit_pending: track band init in auto band.
* radio_monitor: radio timer is running. * radio_monitor: radio timer is running.
* going_down: down path intermediate variable. * going_down: down path intermediate variable.
* mpc: enable minimum power consumption.
* mpc_dlycnt: # of watchdog cnt before turn disable radio. * mpc_dlycnt: # of watchdog cnt before turn disable radio.
* mpc_offcnt: # of watchdog cnt that radio is disabled. * mpc_offcnt: # of watchdog cnt that radio is disabled.
* mpc_delay_off: delay radio disable by # of watchdog cnt. * mpc_delay_off: delay radio disable by # of watchdog cnt.
...@@ -522,7 +521,6 @@ struct brcms_c_info { ...@@ -522,7 +521,6 @@ struct brcms_c_info {
bool radio_monitor; bool radio_monitor;
bool going_down; bool going_down;
bool mpc;
u8 mpc_dlycnt; u8 mpc_dlycnt;
u8 mpc_offcnt; u8 mpc_offcnt;
u8 mpc_delay_off; u8 mpc_delay_off;
......
...@@ -596,7 +596,7 @@ extern void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, ...@@ -596,7 +596,7 @@ extern void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc,
u8 interval); u8 interval);
extern int brcms_c_set_tx_power(struct brcms_c_info *wlc, int txpwr); extern int brcms_c_set_tx_power(struct brcms_c_info *wlc, int txpwr);
extern int brcms_c_get_tx_power(struct brcms_c_info *wlc); extern int brcms_c_get_tx_power(struct brcms_c_info *wlc);
extern void brcms_c_set_radio_mpc(struct brcms_c_info *wlc, bool mpc); extern void brcms_c_set_radio_mpc(struct brcms_c_info *wlc);
extern bool brcms_c_check_radio_disabled(struct brcms_c_info *wlc); extern bool brcms_c_check_radio_disabled(struct brcms_c_info *wlc);
#endif /* _BRCM_PUB_H_ */ #endif /* _BRCM_PUB_H_ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册