Eric Dumazet [off-list ref] :
[...]
# grep -n napi drivers/net/ethernet/realtek/8139cp.c
327: struct napi_struct napi;
436: napi_gro_receive(&cp->napi, skb);
468:static int cp_rx_poll(struct napi_struct *napi, int budget)
470: struct cp_private *cp = container_of(napi, struct cp_private, napi);
566: napi_gro_flush(napi, false);
568: __napi_complete(napi);
605: if (napi_schedule_prep(&cp->napi)) {
607: __napi_schedule(&cp->napi);
1132: napi_enable(&cp->napi);
1149: napi_disable(&cp->napi);
1160: napi_disable(&cp->napi);
1933: netif_napi_add(dev, &cp->napi, cp_rx_poll, 16);
Not all drivers use napi_gro_receive/napi_gro_flush.
It could be worth comparing with drivers/net/ethernet/via/via-rhine.c (small)
or drivers/net/ethernet/broadcom/tg3.c (bigger).
--
Ueimor