diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/core.c')
-rw-r--r-- | drivers/net/wireless/rtlwifi/core.c | 19 |
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 | */ |
507 | static int rtl_op_conf_tx(struct ieee80211_hw *hw, u16 queue, | 507 | static 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 | ||
773 | static u64 rtl_op_get_tsf(struct ieee80211_hw *hw) | 779 | static 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 | ||
782 | static void rtl_op_set_tsf(struct ieee80211_hw *hw, u64 tsf) | 788 | static 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 | ||
792 | static void rtl_op_reset_tsf(struct ieee80211_hw *hw) | 799 | static 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, |