nfp: wrap napi add/del logic
There will be more NAPI register logic once AF_XDP support is added, wrap our already conditional napi add/del into helpers. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Niklas Söderlund <niklas.soderlund@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3cdb35fb9c
commit
58eb436353
@ -2638,6 +2638,25 @@ static void nfp_net_rx_rings_free(struct nfp_net_dp *dp)
|
||||
kfree(dp->rx_rings);
|
||||
}
|
||||
|
||||
static void
|
||||
nfp_net_napi_add(struct nfp_net_dp *dp, struct nfp_net_r_vector *r_vec)
|
||||
{
|
||||
if (dp->netdev)
|
||||
netif_napi_add(dp->netdev, &r_vec->napi,
|
||||
nfp_net_poll, NAPI_POLL_WEIGHT);
|
||||
else
|
||||
tasklet_enable(&r_vec->tasklet);
|
||||
}
|
||||
|
||||
static void
|
||||
nfp_net_napi_del(struct nfp_net_dp *dp, struct nfp_net_r_vector *r_vec)
|
||||
{
|
||||
if (dp->netdev)
|
||||
netif_napi_del(&r_vec->napi);
|
||||
else
|
||||
tasklet_disable(&r_vec->tasklet);
|
||||
}
|
||||
|
||||
static void
|
||||
nfp_net_vector_assign_rings(struct nfp_net_dp *dp,
|
||||
struct nfp_net_r_vector *r_vec, int idx)
|
||||
@ -2656,23 +2675,14 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
|
||||
{
|
||||
int err;
|
||||
|
||||
/* Setup NAPI */
|
||||
if (nn->dp.netdev)
|
||||
netif_napi_add(nn->dp.netdev, &r_vec->napi,
|
||||
nfp_net_poll, NAPI_POLL_WEIGHT);
|
||||
else
|
||||
tasklet_enable(&r_vec->tasklet);
|
||||
nfp_net_napi_add(&nn->dp, r_vec);
|
||||
|
||||
snprintf(r_vec->name, sizeof(r_vec->name),
|
||||
"%s-rxtx-%d", nfp_net_name(nn), idx);
|
||||
err = request_irq(r_vec->irq_vector, r_vec->handler, 0, r_vec->name,
|
||||
r_vec);
|
||||
if (err) {
|
||||
if (nn->dp.netdev)
|
||||
netif_napi_del(&r_vec->napi);
|
||||
else
|
||||
tasklet_disable(&r_vec->tasklet);
|
||||
|
||||
nfp_net_napi_del(&nn->dp, r_vec);
|
||||
nn_err(nn, "Error requesting IRQ %d\n", r_vec->irq_vector);
|
||||
return err;
|
||||
}
|
||||
@ -2690,11 +2700,7 @@ static void
|
||||
nfp_net_cleanup_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec)
|
||||
{
|
||||
irq_set_affinity_hint(r_vec->irq_vector, NULL);
|
||||
if (nn->dp.netdev)
|
||||
netif_napi_del(&r_vec->napi);
|
||||
else
|
||||
tasklet_disable(&r_vec->tasklet);
|
||||
|
||||
nfp_net_napi_del(&nn->dp, r_vec);
|
||||
free_irq(r_vec->irq_vector, r_vec);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user