diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/base.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/base.c | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c index 59381fe8ed0..4494d130b37 100644 --- a/drivers/net/wireless/rtlwifi/base.c +++ b/drivers/net/wireless/rtlwifi/base.c @@ -826,6 +826,30 @@ int rtlwifi_rate_mapping(struct ieee80211_hw *hw,  }  EXPORT_SYMBOL(rtlwifi_rate_mapping); +bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb) +{ +	struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); +	struct rtl_priv *rtlpriv = rtl_priv(hw); +	__le16 fc = rtl_get_fc(skb); + +	if (rtlpriv->dm.supp_phymode_switch && +	    mac->link_state < MAC80211_LINKED && +	    (ieee80211_is_auth(fc) || ieee80211_is_probe_req(fc))) { +		if (rtlpriv->cfg->ops->check_switch_to_dmdp) +			rtlpriv->cfg->ops->check_switch_to_dmdp(hw); +	} +	if (ieee80211_is_auth(fc)) { +		RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG, "MAC80211_LINKING\n"); +		rtl_ips_nic_on(hw); + +		mac->link_state = MAC80211_LINKING; +		/* Dual mac */ +		rtlpriv->phy.need_iqk = true; +	} + +	return true; +} +  void rtl_get_tcb_desc(struct ieee80211_hw *hw,  		      struct ieee80211_tx_info *info,  		      struct ieee80211_sta *sta,  |