Link IRQs to NAPI instances with netif_napi_set_irq. This information
can be queried with the netdev-genl API.
Compare the output of /proc/interrupts for my tg3 device with the output of
netdev-genl after applying this patch:
$ cat /proc/interrupts | grep eth0 | cut -f1 --delimiter=':'
331
332
333
334
335
$ ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/netdev.yaml \
--dump napi-get --json='{"ifindex": 2}'
[{'id': 149, 'ifindex': 2, 'irq': 335},
{'id': 148, 'ifindex': 2, 'irq': 334},
{'id': 147, 'ifindex': 2, 'irq': 333},
{'id': 146, 'ifindex': 2, 'irq': 332},
{'id': 145, 'ifindex': 2, 'irq': 331}]
Signed-off-by: Joe Damato <jdamato@fastly.com>
---
drivers/net/ethernet/broadcom/tg3.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 378815917741..ddf0bb65c929 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -7413,9 +7413,10 @@ static void tg3_napi_init(struct tg3 *tp)
{
int i;
- netif_napi_add(tp->dev, &tp->napi[0].napi, tg3_poll);
- for (i = 1; i < tp->irq_cnt; i++)
- netif_napi_add(tp->dev, &tp->napi[i].napi, tg3_poll_msix);
+ for (i = 0; i < tp->irq_cnt; i++) {
+ netif_napi_add(tp->dev, &tp->napi[i].napi, i ? tg3_poll_msix : tg3_poll);
+ netif_napi_set_irq(&tp->napi[i].napi, tp->napi[i].irq_vec);
+ }
}
static void tg3_napi_fini(struct tg3 *tp)
--
2.25.1
On Wed, Sep 25, 2024 at 9:51 PM Joe Damato <jdamato@fastly.com> wrote: > > Link IRQs to NAPI instances with netif_napi_set_irq. This information > can be queried with the netdev-genl API. > > Compare the output of /proc/interrupts for my tg3 device with the output of > netdev-genl after applying this patch: > > $ cat /proc/interrupts | grep eth0 | cut -f1 --delimiter=':' > 331 > 332 > 333 > 334 > 335 > > $ ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/netdev.yaml \ > --dump napi-get --json='{"ifindex": 2}' > > [{'id': 149, 'ifindex': 2, 'irq': 335}, > {'id': 148, 'ifindex': 2, 'irq': 334}, > {'id': 147, 'ifindex': 2, 'irq': 333}, > {'id': 146, 'ifindex': 2, 'irq': 332}, > {'id': 145, 'ifindex': 2, 'irq': 331}] > > Signed-off-by: Joe Damato <jdamato@fastly.com> > --- > drivers/net/ethernet/broadcom/tg3.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c > index 378815917741..ddf0bb65c929 100644 > --- a/drivers/net/ethernet/broadcom/tg3.c > +++ b/drivers/net/ethernet/broadcom/tg3.c > @@ -7413,9 +7413,10 @@ static void tg3_napi_init(struct tg3 *tp) > { > int i; > > - netif_napi_add(tp->dev, &tp->napi[0].napi, tg3_poll); > - for (i = 1; i < tp->irq_cnt; i++) > - netif_napi_add(tp->dev, &tp->napi[i].napi, tg3_poll_msix); > + for (i = 0; i < tp->irq_cnt; i++) { > + netif_napi_add(tp->dev, &tp->napi[i].napi, i ? tg3_poll_msix : tg3_poll); > + netif_napi_set_irq(&tp->napi[i].napi, tp->napi[i].irq_vec); > + } > } > > static void tg3_napi_fini(struct tg3 *tp) > -- > 2.25.1 > Thank you. LGTM. You can use Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
© 2016 - 2024 Red Hat, Inc.