nvethernet: use osi_handle_dma_intr() API

Bug 200671160

Change-Id: Id293c02529beb7e72ef567508c74c1a7de6bae79
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2497651
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Bhadram Varka
2021-03-12 15:17:05 +05:30
committed by Revanth Kumar Uppala
parent e411787070
commit 71fa042ce4

View File

@@ -490,20 +490,20 @@ irqreturn_t ether_vm_isr(int irq, void *data)
txrx = temp & 1U;
if (txrx) {
osi_clear_vm_rx_intr(osi_dma, chan);
rx_napi = pdata->rx_napi[chan];
if (likely(napi_schedule_prep(&rx_napi->napi))) {
osi_disable_chan_rx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_RX_INTR,
OSI_DMA_INTR_DISABLE);
/* TODO: Schedule NAPI on different CPU core */
__napi_schedule(&rx_napi->napi);
}
} else {
osi_clear_vm_tx_intr(osi_dma, chan);
tx_napi = pdata->tx_napi[chan];
if (likely(napi_schedule_prep(&tx_napi->napi))) {
osi_disable_chan_tx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_TX_INTR,
OSI_DMA_INTR_DISABLE);
/* TODO: Schedule NAPI on different CPU core */
__napi_schedule(&tx_napi->napi);
}
@@ -542,7 +542,9 @@ static irqreturn_t ether_tx_chan_isr(int irq, void *data)
unsigned long val;
raw_spin_lock_irqsave(&pdata->rlock, flags);
osi_disable_chan_tx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_TX_INTR,
OSI_DMA_INTR_DISABLE);
raw_spin_unlock_irqrestore(&pdata->rlock, flags);
val = osi_core->xstats.tx_normal_irq_n[chan];
@@ -588,7 +590,9 @@ static irqreturn_t ether_rx_chan_isr(int irq, void *data)
unsigned long val, flags;
raw_spin_lock_irqsave(&pdata->rlock, flags);
osi_disable_chan_rx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_RX_INTR,
OSI_DMA_INTR_DISABLE);
raw_spin_unlock_irqrestore(&pdata->rlock, flags);
val = osi_core->xstats.rx_normal_irq_n[chan];
@@ -2821,7 +2825,9 @@ static int ether_napi_poll_rx(struct napi_struct *napi, int budget)
if (received < budget) {
napi_complete(napi);
raw_spin_lock_irqsave(&pdata->rlock, flags);
osi_enable_chan_rx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_RX_INTR,
OSI_DMA_INTR_ENABLE);
raw_spin_unlock_irqrestore(&pdata->rlock, flags);
}
@@ -2866,7 +2872,9 @@ static int ether_napi_poll_tx(struct napi_struct *napi, int budget)
if (processed < budget) {
napi_complete(napi);
raw_spin_lock_irqsave(&pdata->rlock, flags);
osi_enable_chan_tx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_TX_INTR,
OSI_DMA_INTR_ENABLE);
raw_spin_unlock_irqrestore(&pdata->rlock, flags);
}
@@ -4497,8 +4505,12 @@ static int ether_suspend_noirq(struct device *dev)
for (i = 0; i < osi_dma->num_dma_chans; i++) {
chan = osi_dma->dma_chans[i];
osi_disable_chan_tx_intr(osi_dma, chan);
osi_disable_chan_rx_intr(osi_dma, chan);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_TX_INTR,
OSI_DMA_INTR_DISABLE);
osi_handle_dma_intr(osi_dma, chan,
OSI_DMA_CH_RX_INTR,
OSI_DMA_INTR_DISABLE);
}
free_dma_resources(pdata);