diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2013-09-26 14:25:27 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-10-03 16:24:30 -0400 |
commit | 4f4826da8cae59c167fc730b5db6f0659c2d37ce (patch) | |
tree | 040035bf6e8805d7d6a606dabe2dc37e62c6388f | |
parent | c6d372998415f3c4bc45737b63bbed6d82b2d956 (diff) |
rtlwifi: Implement a common rtl_phy_scan_operation_backup() routine
Several of the drivers supported by rtlwifi individually implement the same
routine that supports scans. As a first step, create this routine in
driver rtlwifi.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rtlwifi/base.c | 29 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/base.h | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c index 8bb4a9a01a18..9a78e3daf742 100644 --- a/drivers/net/wireless/rtlwifi/base.c +++ b/drivers/net/wireless/rtlwifi/base.c | |||
@@ -1613,6 +1613,35 @@ err_free: | |||
1613 | } | 1613 | } |
1614 | EXPORT_SYMBOL(rtl_send_smps_action); | 1614 | EXPORT_SYMBOL(rtl_send_smps_action); |
1615 | 1615 | ||
1616 | void rtl_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation) | ||
1617 | { | ||
1618 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
1619 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | ||
1620 | enum io_type iotype; | ||
1621 | |||
1622 | if (!is_hal_stop(rtlhal)) { | ||
1623 | switch (operation) { | ||
1624 | case SCAN_OPT_BACKUP: | ||
1625 | iotype = IO_CMD_PAUSE_DM_BY_SCAN; | ||
1626 | rtlpriv->cfg->ops->set_hw_reg(hw, | ||
1627 | HW_VAR_IO_CMD, | ||
1628 | (u8 *)&iotype); | ||
1629 | break; | ||
1630 | case SCAN_OPT_RESTORE: | ||
1631 | iotype = IO_CMD_RESUME_DM_BY_SCAN; | ||
1632 | rtlpriv->cfg->ops->set_hw_reg(hw, | ||
1633 | HW_VAR_IO_CMD, | ||
1634 | (u8 *)&iotype); | ||
1635 | break; | ||
1636 | default: | ||
1637 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
1638 | "Unknown Scan Backup operation.\n"); | ||
1639 | break; | ||
1640 | } | ||
1641 | } | ||
1642 | } | ||
1643 | EXPORT_SYMBOL(rtl_phy_scan_operation_backup); | ||
1644 | |||
1616 | /* There seem to be issues in mac80211 regarding when del ba frames can be | 1645 | /* There seem to be issues in mac80211 regarding when del ba frames can be |
1617 | * received. As a work around, we make a fake del_ba if we receive a ba_req; | 1646 | * received. As a work around, we make a fake del_ba if we receive a ba_req; |
1618 | * however, rx_agg was opened to let mac80211 release some ba related | 1647 | * however, rx_agg was opened to let mac80211 release some ba related |
diff --git a/drivers/net/wireless/rtlwifi/base.h b/drivers/net/wireless/rtlwifi/base.h index c07f114e7d1b..0cd07420777a 100644 --- a/drivers/net/wireless/rtlwifi/base.h +++ b/drivers/net/wireless/rtlwifi/base.h | |||
@@ -152,5 +152,6 @@ int rtlwifi_rate_mapping(struct ieee80211_hw *hw, | |||
152 | bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb); | 152 | bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb); |
153 | struct sk_buff *rtl_make_del_ba(struct ieee80211_hw *hw, | 153 | struct sk_buff *rtl_make_del_ba(struct ieee80211_hw *hw, |
154 | u8 *sa, u8 *bssid, u16 tid); | 154 | u8 *sa, u8 *bssid, u16 tid); |
155 | void rtl_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation); | ||
155 | 156 | ||
156 | #endif | 157 | #endif |