rtw88: pci: reset dma when reset pci trx ring
When PCI trx rings are reset, the DMA engine should also be reset. Otherswise, the rx_tag of rx flow is not synchronous to hw. Remove DMA reset when rtw_pci_start() as we added it in rtw_pci_setup(). Signed-off-by: Chin-Yen Lee <timlee@realtek.com> Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com> Reviewed-by: Chris Chiu <chiu@endlessm.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Родитель
25cab7e71d
Коммит
fd30e891e0
|
@ -486,13 +486,6 @@ static void rtw_pci_disable_interrupt(struct rtw_dev *rtwdev,
|
|||
rtwpci->irq_enabled = false;
|
||||
}
|
||||
|
||||
static int rtw_pci_setup(struct rtw_dev *rtwdev)
|
||||
{
|
||||
rtw_pci_reset_trx_ring(rtwdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
|
||||
{
|
||||
/* reset dma and rx tag */
|
||||
|
@ -501,6 +494,16 @@ static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
|
|||
rtwpci->rx_tag = 0;
|
||||
}
|
||||
|
||||
static int rtw_pci_setup(struct rtw_dev *rtwdev)
|
||||
{
|
||||
struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv;
|
||||
|
||||
rtw_pci_reset_trx_ring(rtwdev);
|
||||
rtw_pci_dma_reset(rtwdev, rtwpci);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rtw_pci_dma_release(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
|
||||
{
|
||||
struct rtw_pci_tx_ring *tx_ring;
|
||||
|
@ -518,8 +521,6 @@ static int rtw_pci_start(struct rtw_dev *rtwdev)
|
|||
struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv;
|
||||
unsigned long flags;
|
||||
|
||||
rtw_pci_dma_reset(rtwdev, rtwpci);
|
||||
|
||||
spin_lock_irqsave(&rtwpci->irq_lock, flags);
|
||||
rtw_pci_enable_interrupt(rtwdev, rtwpci);
|
||||
spin_unlock_irqrestore(&rtwpci->irq_lock, flags);
|
||||
|
|
Загрузка…
Ссылка в новой задаче