mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 05:16:57 +00:00
mt76: add fixes to merged patches
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
+6
-4
@@ -1087,7 +1087,7 @@ mt7928_mac_add_txs_skb_msg(struct mt792x_dev *dev, struct mt76_wcid *wcid,
|
|||||||
|
|
||||||
info->status.rates[0].idx = -1;
|
info->status.rates[0].idx = -1;
|
||||||
|
|
||||||
txrate = pevt->tx_rate;
|
txrate = le16_to_cpu(pevt->tx_rate);
|
||||||
|
|
||||||
rate.mcs = FIELD_GET(MT_TX_RATE_IDX, txrate);
|
rate.mcs = FIELD_GET(MT_TX_RATE_IDX, txrate);
|
||||||
rate.nss = FIELD_GET(MT_TX_RATE_NSS, txrate) + 1;
|
rate.nss = FIELD_GET(MT_TX_RATE_NSS, txrate) + 1;
|
||||||
@@ -1236,10 +1236,12 @@ void mt7925_mac_add_txs(struct mt792x_dev *dev, void *data)
|
|||||||
|
|
||||||
txs_fm = le32_get_bits(txs_data[0], MT_TXS0_TXS_FORMAT);
|
txs_fm = le32_get_bits(txs_data[0], MT_TXS0_TXS_FORMAT);
|
||||||
|
|
||||||
if (is_mt7928(&dev->mt76) && txs_fm != TXS_FM_MPDU && txs_fm != TXS_FM_PPDU)
|
if (is_mt7928(&dev->mt76)) {
|
||||||
return;
|
if (txs_fm != TXS_FM_MPDU && txs_fm != TXS_FM_PPDU)
|
||||||
else if (txs_fm > 1)
|
return;
|
||||||
|
} else if (txs_fm > 1) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
wcidx = le32_get_bits(txs_data[2], MT_TXS2_WCID);
|
wcidx = le32_get_bits(txs_data[2], MT_TXS2_WCID);
|
||||||
pid = le32_get_bits(txs_data[3], MT_TXS3_PID);
|
pid = le32_get_bits(txs_data[3], MT_TXS3_PID);
|
||||||
|
|||||||
+8
-4
@@ -130,11 +130,16 @@ EXPORT_SYMBOL_GPL(mt792xu_check_bus);
|
|||||||
|
|
||||||
int mt792xu_reset_on_bus_error(struct mt792x_dev *dev)
|
int mt792xu_reset_on_bus_error(struct mt792x_dev *dev)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err;
|
||||||
|
|
||||||
if (!atomic_read(&dev->mt76.bus_hung))
|
/* Once hung, the no-op bus ops stay installed until the queued USB
|
||||||
err = mt792xu_check_bus(dev);
|
* reset re-probes the device. Do not clear bus_hung here, or the caller
|
||||||
|
* would run a full reset over dropped register I/O and report success.
|
||||||
|
*/
|
||||||
|
if (atomic_read(&dev->mt76.bus_hung))
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
err = mt792xu_check_bus(dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
mt792xu_set_bus_hung(dev);
|
mt792xu_set_bus_hung(dev);
|
||||||
mt792xu_queue_usb_reset(dev, err);
|
mt792xu_queue_usb_reset(dev, err);
|
||||||
@@ -142,7 +147,6 @@ int mt792xu_reset_on_bus_error(struct mt792x_dev *dev)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_set(&dev->mt76.bus_hung, false);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt792xu_reset_on_bus_error);
|
EXPORT_SYMBOL_GPL(mt792xu_reset_on_bus_error);
|
||||||
|
|||||||
@@ -755,8 +755,6 @@ void mt76u_stop_rx(struct mt76_dev *dev)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
mt76_worker_disable(&dev->usb.rx_worker);
|
mt76_worker_disable(&dev->usb.rx_worker);
|
||||||
if (dev->napi_dev)
|
|
||||||
napi_disable(&dev->napi[MT_RXQ_MAIN]);
|
|
||||||
|
|
||||||
mt76_for_each_q_rx(dev, i) {
|
mt76_for_each_q_rx(dev, i) {
|
||||||
struct mt76_queue *q = &dev->q_rx[i];
|
struct mt76_queue *q = &dev->q_rx[i];
|
||||||
@@ -765,6 +763,13 @@ void mt76u_stop_rx(struct mt76_dev *dev)
|
|||||||
for (j = 0; j < q->ndesc; j++)
|
for (j = 0; j < q->ndesc; j++)
|
||||||
usb_poison_urb(q->entry[j].urb);
|
usb_poison_urb(q->entry[j].urb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The MAIN queue napi stays enabled for the device lifetime. The URBs
|
||||||
|
* are now poisoned, so mt76u_complete_rx() can no longer reschedule it;
|
||||||
|
* just drain any in-flight poll before the caller frees or resets.
|
||||||
|
*/
|
||||||
|
if (dev->napi_dev)
|
||||||
|
napi_synchronize(&dev->napi[MT_RXQ_MAIN]);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76u_stop_rx);
|
EXPORT_SYMBOL_GPL(mt76u_stop_rx);
|
||||||
|
|
||||||
@@ -785,8 +790,6 @@ int mt76u_resume_rx(struct mt76_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mt76_worker_enable(&dev->usb.rx_worker);
|
mt76_worker_enable(&dev->usb.rx_worker);
|
||||||
if (dev->napi_dev)
|
|
||||||
napi_enable(&dev->napi[MT_RXQ_MAIN]);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1086,8 +1089,8 @@ void mt76u_queues_deinit(struct mt76_dev *dev)
|
|||||||
mt76u_stop_rx(dev);
|
mt76u_stop_rx(dev);
|
||||||
mt76u_stop_tx(dev);
|
mt76u_stop_tx(dev);
|
||||||
|
|
||||||
/* mt76u_stop_rx() (above) already napi_disable()d the MAIN queue */
|
|
||||||
if (dev->napi_dev) {
|
if (dev->napi_dev) {
|
||||||
|
napi_disable(&dev->napi[MT_RXQ_MAIN]);
|
||||||
netif_napi_del(&dev->napi[MT_RXQ_MAIN]);
|
netif_napi_del(&dev->napi[MT_RXQ_MAIN]);
|
||||||
free_netdev(dev->napi_dev);
|
free_netdev(dev->napi_dev);
|
||||||
dev->napi_dev = NULL;
|
dev->napi_dev = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user