diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/pci.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index abc306b502ac..3deacafdcd5e 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c @@ -1309,6 +1309,7 @@ static bool rtl_pci_tx_chk_waitq_insert(struct ieee80211_hw *hw,  	struct rtl_priv *rtlpriv = rtl_priv(hw);  	struct rtl_sta_info *sta_entry = NULL;  	u8 tid = rtl_get_tid(skb); +	__le16 fc = rtl_get_fc(skb);  	if (!sta)  		return false; @@ -1316,6 +1317,12 @@ static bool rtl_pci_tx_chk_waitq_insert(struct ieee80211_hw *hw,  	if (!rtlpriv->rtlhal.earlymode_enable)  		return false; +	if (ieee80211_is_nullfunc(fc)) +		return false; +	if (ieee80211_is_qos_nullfunc(fc)) +		return false; +	if (ieee80211_is_pspoll(fc)) +		return false;  	if (sta_entry->tids[tid].agg.agg_state != RTL_AGG_OPERATIONAL)  		return false;  	if (_rtl_mac_to_hwqueue(hw, skb) > VO_QUEUE) @@ -1357,10 +1364,8 @@ static int rtl_pci_tx(struct ieee80211_hw *hw,  	u8 own;  	u8 temp_one = 1; -	if (ieee80211_is_auth(fc)) { -		RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG, "MAC80211_LINKING\n"); -		rtl_ips_nic_on(hw); -	} +	if (ieee80211_is_mgmt(fc)) +		rtl_tx_mgmt_proc(hw, skb);  	if (rtlpriv->psc.sw_ps_enabled) {  		if (ieee80211_is_data(fc) && !ieee80211_is_nullfunc(fc) && @@ -1628,7 +1633,7 @@ static bool _rtl_pci_find_adapter(struct pci_dev *pdev,  				 "8192 PCI-E is found - vid/did=%x/%x\n",  				 venderid, deviceid);  			rtlhal->hw_type = HARDWARE_TYPE_RTL8192E; -			break; +			return false;  		case RTL_PCI_REVISION_ID_8192SE:  			RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG,  				 "8192SE is found - vid/did=%x/%x\n", @@ -1643,6 +1648,11 @@ static bool _rtl_pci_find_adapter(struct pci_dev *pdev,  			break;  		} +	} else if (deviceid == RTL_PCI_8723AE_DID) { +		rtlhal->hw_type = HARDWARE_TYPE_RTL8723AE; +		RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, +			 "8723AE PCI-E is found - " +			 "vid/did=%x/%x\n", venderid, deviceid);  	} else if (deviceid == RTL_PCI_8192CET_DID ||  		   deviceid == RTL_PCI_8192CE_DID ||  		   deviceid == RTL_PCI_8191CE_DID || @@ -1746,7 +1756,7 @@ static bool _rtl_pci_find_adapter(struct pci_dev *pdev,  	return true;  } -int __devinit rtl_pci_probe(struct pci_dev *pdev, +int rtl_pci_probe(struct pci_dev *pdev,  			    const struct pci_device_id *id)  {  	struct ieee80211_hw *hw = NULL; @@ -1972,6 +1982,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev)  }  EXPORT_SYMBOL(rtl_pci_disconnect); +#ifdef CONFIG_PM_SLEEP  /***************************************  kernel pci power state define:  PCI_D0         ((pci_power_t __force) 0) @@ -2011,6 +2022,7 @@ int rtl_pci_resume(struct device *dev)  	return 0;  }  EXPORT_SYMBOL(rtl_pci_resume); +#endif /* CONFIG_PM_SLEEP */  struct rtl_intf_ops rtl_pci_ops = {  	.read_efuse_byte = read_efuse_byte,  |