diff options
Diffstat (limited to 'sys/contrib/dev/mediatek/mt76/mt7921/mac.c')
| -rw-r--r-- | sys/contrib/dev/mediatek/mt76/mt7921/mac.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/sys/contrib/dev/mediatek/mt76/mt7921/mac.c b/sys/contrib/dev/mediatek/mt76/mt7921/mac.c index 25010d2ea442..577b27d9faa0 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7921/mac.c +++ b/sys/contrib/dev/mediatek/mt76/mt7921/mac.c @@ -472,7 +472,7 @@ void mt7921_mac_add_txs(struct mt792x_dev *dev, void *data)  	rcu_read_lock(); -	wcid = rcu_dereference(dev->mt76.wcid[wcidx]); +	wcid = mt76_wcid_ptr(dev, wcidx);  	if (!wcid)  		goto out; @@ -531,7 +531,7 @@ static void mt7921_mac_tx_free(struct mt792x_dev *dev, void *data, int len)  			count++;  			idx = FIELD_GET(MT_TX_FREE_WLAN_ID, info); -			wcid = rcu_dereference(dev->mt76.wcid[idx]); +			wcid = mt76_wcid_ptr(dev, idx);  			sta = wcid_to_sta(wcid);  			if (!sta)  				continue; @@ -690,6 +690,8 @@ void mt7921_mac_reset_work(struct work_struct *work)  		if (!ret)  			break;  	} +	if (mt76_is_sdio(&dev->mt76) && atomic_read(&dev->mt76.bus_hung)) +		return;  	if (i == 10)  		dev_err(dev->mt76.dev, "chip reset failed\n"); @@ -831,7 +833,7 @@ void mt7921_usb_sdio_tx_complete_skb(struct mt76_dev *mdev,  	u16 idx;  	idx = le32_get_bits(txwi[1], MT_TXD1_WLAN_IDX); -	wcid = rcu_dereference(mdev->wcid[idx]); +	wcid = __mt76_wcid_ptr(mdev, idx);  	sta = wcid_to_sta(wcid);  	if (sta && likely(e->skb->protocol != cpu_to_be16(ETH_P_PAE))) | 
