diff options
| -rw-r--r-- | drivers/net/wireless/realtek/rtw88/pci.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c index bc3a36402e56..d90928be663b 100644 --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c | |||
| @@ -500,6 +500,17 @@ static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) | |||
| 500 | rtwpci->rx_tag = 0; | 500 | rtwpci->rx_tag = 0; |
| 501 | } | 501 | } |
| 502 | 502 | ||
| 503 | static void rtw_pci_dma_release(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) | ||
| 504 | { | ||
| 505 | struct rtw_pci_tx_ring *tx_ring; | ||
| 506 | u8 queue; | ||
| 507 | |||
| 508 | for (queue = 0; queue < RTK_MAX_TX_QUEUE_NUM; queue++) { | ||
| 509 | tx_ring = &rtwpci->tx_rings[queue]; | ||
| 510 | rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring); | ||
| 511 | } | ||
| 512 | } | ||
| 513 | |||
| 503 | static int rtw_pci_start(struct rtw_dev *rtwdev) | 514 | static int rtw_pci_start(struct rtw_dev *rtwdev) |
| 504 | { | 515 | { |
| 505 | struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; | 516 | struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; |
| @@ -521,6 +532,7 @@ static void rtw_pci_stop(struct rtw_dev *rtwdev) | |||
| 521 | 532 | ||
| 522 | spin_lock_irqsave(&rtwpci->irq_lock, flags); | 533 | spin_lock_irqsave(&rtwpci->irq_lock, flags); |
| 523 | rtw_pci_disable_interrupt(rtwdev, rtwpci); | 534 | rtw_pci_disable_interrupt(rtwdev, rtwpci); |
| 535 | rtw_pci_dma_release(rtwdev, rtwpci); | ||
| 524 | spin_unlock_irqrestore(&rtwpci->irq_lock, flags); | 536 | spin_unlock_irqrestore(&rtwpci->irq_lock, flags); |
| 525 | } | 537 | } |
| 526 | 538 | ||
