diff options
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x02_util.c')
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 23 | 
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c index aec73a0295e8..0960fc56b672 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c @@ -153,15 +153,7 @@ void mt76x02_init_device(struct mt76x02_dev *dev)  	hw->max_rate_tries = 1;  	hw->extra_tx_headroom = 2; -	wiphy->interface_modes = -		BIT(NL80211_IFTYPE_STATION) | -		BIT(NL80211_IFTYPE_AP) | -#ifdef CONFIG_MAC80211_MESH -		BIT(NL80211_IFTYPE_MESH_POINT) | -#endif -		BIT(NL80211_IFTYPE_ADHOC); - -	if (mt76_is_usb(dev)) { +	if (mt76_is_usb(&dev->mt76)) {  		hw->extra_tx_headroom += sizeof(struct mt76x02_txwi) +  					 MT_DMA_HDR_LEN;  		wiphy->iface_combinations = mt76x02u_if_comb; @@ -190,7 +182,6 @@ void mt76x02_init_device(struct mt76x02_dev *dev)  	hw->vif_data_size = sizeof(struct mt76x02_vif);  	ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES); -	ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);  	dev->mt76.global_wcid.idx = 255;  	dev->mt76.global_wcid.hw_key_idx = -1; @@ -264,6 +255,7 @@ int mt76x02_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,  	msta->wcid.hw_key_idx = -1;  	mt76x02_mac_wcid_setup(dev, idx, mvif->idx, sta->addr);  	mt76x02_mac_wcid_set_drop(dev, idx, false); +	ewma_pktlen_init(&msta->pktlen);  	if (vif->type == NL80211_IFTYPE_AP)  		set_bit(MT_WCID_FLAG_CHECK_PS, &msta->wcid.flags); @@ -365,12 +357,14 @@ int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,  	u16 tid = params->tid;  	u16 ssn = params->ssn;  	struct mt76_txq *mtxq; +	int ret = 0;  	if (!txq)  		return -EINVAL;  	mtxq = (struct mt76_txq *)txq->drv_priv; +	mutex_lock(&dev->mt76.mutex);  	switch (action) {  	case IEEE80211_AMPDU_RX_START:  		mt76_rx_aggr_start(&dev->mt76, &msta->wcid, tid, @@ -393,15 +387,16 @@ int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,  		break;  	case IEEE80211_AMPDU_TX_START:  		mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn); -		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); +		ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;  		break;  	case IEEE80211_AMPDU_TX_STOP_CONT:  		mtxq->aggr = false;  		ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);  		break;  	} +	mutex_unlock(&dev->mt76.mutex); -	return 0; +	return ret;  }  EXPORT_SYMBOL_GPL(mt76x02_ampdu_action); @@ -443,7 +438,7 @@ int mt76x02_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,  	 * data registers and sent via HW beacons engine, they require to  	 * be already encrypted.  	 */ -	if (mt76_is_usb(dev) && +	if (mt76_is_usb(&dev->mt76) &&  	    vif->type == NL80211_IFTYPE_AP &&  	    !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE))  		return -EOPNOTSUPP; @@ -624,7 +619,7 @@ void mt76x02_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta,  	int idx = msta->wcid.idx;  	mt76_stop_tx_queues(&dev->mt76, sta, true); -	if (mt76_is_mmio(dev)) +	if (mt76_is_mmio(mdev))  		mt76x02_mac_wcid_set_drop(dev, idx, ps);  }  EXPORT_SYMBOL_GPL(mt76x02_sta_ps);  | 

