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:
@@ -486,13 +486,6 @@ static void rtw_pci_disable_interrupt(struct rtw_dev *rtwdev,
|
|||||||
rtwpci->irq_enabled = false;
|
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)
|
static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
|
||||||
{
|
{
|
||||||
/* reset dma and rx tag */
|
/* 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;
|
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)
|
static void rtw_pci_dma_release(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
|
||||||
{
|
{
|
||||||
struct rtw_pci_tx_ring *tx_ring;
|
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;
|
struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
rtw_pci_dma_reset(rtwdev, rtwpci);
|
|
||||||
|
|
||||||
spin_lock_irqsave(&rtwpci->irq_lock, flags);
|
spin_lock_irqsave(&rtwpci->irq_lock, flags);
|
||||||
rtw_pci_enable_interrupt(rtwdev, rtwpci);
|
rtw_pci_enable_interrupt(rtwdev, rtwpci);
|
||||||
spin_unlock_irqrestore(&rtwpci->irq_lock, flags);
|
spin_unlock_irqrestore(&rtwpci->irq_lock, flags);
|
||||||
|
|||||||
Reference in New Issue
Block a user