Skip to content

Commit 8a47558

Browse files
committed
Merge branch 'tsnep-napi-fixes'
Gerhard Engleder says: ==================== tsnep: Fixes based on napi.rst Based on the documentation networking/napi.rst some fixes have been done. tsnep driver should be in line with this new documentation after these fixes. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents af21b94 + 46589db commit 8a47558

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

drivers/net/ethernet/engleder/tsnep_ethtool.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,8 @@ static void tsnep_ethtool_get_channels(struct net_device *netdev,
300300
{
301301
struct tsnep_adapter *adapter = netdev_priv(netdev);
302302

303-
ch->max_rx = adapter->num_rx_queues;
304-
ch->max_tx = adapter->num_tx_queues;
305-
ch->rx_count = adapter->num_rx_queues;
306-
ch->tx_count = adapter->num_tx_queues;
303+
ch->max_combined = adapter->num_queues;
304+
ch->combined_count = adapter->num_queues;
307305
}
308306

309307
static int tsnep_ethtool_get_ts_info(struct net_device *netdev,

drivers/net/ethernet/engleder/tsnep_main.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,11 @@ static irqreturn_t tsnep_irq(int irq, void *arg)
8787

8888
/* handle TX/RX queue 0 interrupt */
8989
if ((active & adapter->queue[0].irq_mask) != 0) {
90-
tsnep_disable_irq(adapter, adapter->queue[0].irq_mask);
91-
napi_schedule(&adapter->queue[0].napi);
90+
if (napi_schedule_prep(&adapter->queue[0].napi)) {
91+
tsnep_disable_irq(adapter, adapter->queue[0].irq_mask);
92+
/* schedule after masking to avoid races */
93+
__napi_schedule(&adapter->queue[0].napi);
94+
}
9295
}
9396

9497
return IRQ_HANDLED;
@@ -99,8 +102,11 @@ static irqreturn_t tsnep_irq_txrx(int irq, void *arg)
99102
struct tsnep_queue *queue = arg;
100103

101104
/* handle TX/RX queue interrupt */
102-
tsnep_disable_irq(queue->adapter, queue->irq_mask);
103-
napi_schedule(&queue->napi);
105+
if (napi_schedule_prep(&queue->napi)) {
106+
tsnep_disable_irq(queue->adapter, queue->irq_mask);
107+
/* schedule after masking to avoid races */
108+
__napi_schedule(&queue->napi);
109+
}
104110

105111
return IRQ_HANDLED;
106112
}
@@ -1728,6 +1734,10 @@ static int tsnep_poll(struct napi_struct *napi, int budget)
17281734
if (queue->tx)
17291735
complete = tsnep_tx_poll(queue->tx, budget);
17301736

1737+
/* handle case where we are called by netpoll with a budget of 0 */
1738+
if (unlikely(budget <= 0))
1739+
return budget;
1740+
17311741
if (queue->rx) {
17321742
done = queue->rx->xsk_pool ?
17331743
tsnep_rx_poll_zc(queue->rx, napi, budget) :

0 commit comments

Comments
 (0)