aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/core.c')
-rw-r--r--drivers/net/wireless/rtlwifi/core.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
index 1bdc1aa305c0..3f0f056fae9c 100644
--- a/drivers/net/wireless/rtlwifi/core.c
+++ b/drivers/net/wireless/rtlwifi/core.c
@@ -504,7 +504,8 @@ static int _rtl_get_hal_qnum(u16 queue)
504 *for mac80211 VO=0, VI=1, BE=2, BK=3 504 *for mac80211 VO=0, VI=1, BE=2, BK=3
505 *for rtl819x BE=0, BK=1, VI=2, VO=3 505 *for rtl819x BE=0, BK=1, VI=2, VO=3
506 */ 506 */
507static int rtl_op_conf_tx(struct ieee80211_hw *hw, u16 queue, 507static int rtl_op_conf_tx(struct ieee80211_hw *hw,
508 struct ieee80211_vif *vif, u16 queue,
508 const struct ieee80211_tx_queue_params *param) 509 const struct ieee80211_tx_queue_params *param)
509{ 510{
510 struct rtl_priv *rtlpriv = rtl_priv(hw); 511 struct rtl_priv *rtlpriv = rtl_priv(hw);
@@ -610,6 +611,11 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw *hw,
610 611
611 mac->link_state = MAC80211_NOLINK; 612 mac->link_state = MAC80211_NOLINK;
612 memset(mac->bssid, 0, 6); 613 memset(mac->bssid, 0, 6);
614
615 /* reset sec info */
616 rtl_cam_reset_sec_info(hw);
617
618 rtl_cam_reset_all_entry(hw);
613 mac->vendor = PEER_UNKNOWN; 619 mac->vendor = PEER_UNKNOWN;
614 620
615 RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG, 621 RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
@@ -770,7 +776,7 @@ out:
770 mutex_unlock(&rtlpriv->locks.conf_mutex); 776 mutex_unlock(&rtlpriv->locks.conf_mutex);
771} 777}
772 778
773static u64 rtl_op_get_tsf(struct ieee80211_hw *hw) 779static u64 rtl_op_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
774{ 780{
775 struct rtl_priv *rtlpriv = rtl_priv(hw); 781 struct rtl_priv *rtlpriv = rtl_priv(hw);
776 u64 tsf; 782 u64 tsf;
@@ -779,7 +785,8 @@ static u64 rtl_op_get_tsf(struct ieee80211_hw *hw)
779 return tsf; 785 return tsf;
780} 786}
781 787
782static void rtl_op_set_tsf(struct ieee80211_hw *hw, u64 tsf) 788static void rtl_op_set_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
789 u64 tsf)
783{ 790{
784 struct rtl_priv *rtlpriv = rtl_priv(hw); 791 struct rtl_priv *rtlpriv = rtl_priv(hw);
785 struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); 792 struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
@@ -789,7 +796,8 @@ static void rtl_op_set_tsf(struct ieee80211_hw *hw, u64 tsf)
789 rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_CORRECT_TSF, (u8 *) (&bibss)); 796 rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_CORRECT_TSF, (u8 *) (&bibss));
790} 797}
791 798
792static void rtl_op_reset_tsf(struct ieee80211_hw *hw) 799static void rtl_op_reset_tsf(struct ieee80211_hw *hw,
800 struct ieee80211_vif *vif)
793{ 801{
794 struct rtl_priv *rtlpriv = rtl_priv(hw); 802 struct rtl_priv *rtlpriv = rtl_priv(hw);
795 u8 tmp = 0; 803 u8 tmp = 0;
@@ -1063,6 +1071,9 @@ static int rtl_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
1063 *or clear all entry here. 1071 *or clear all entry here.
1064 */ 1072 */
1065 rtl_cam_delete_one_entry(hw, mac_addr, key_idx); 1073 rtl_cam_delete_one_entry(hw, mac_addr, key_idx);
1074
1075 rtl_cam_reset_sec_info(hw);
1076
1066 break; 1077 break;
1067 default: 1078 default:
1068 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, 1079 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,