Skip to content

Commit

Permalink
nfp: reorganize the app table
Browse files Browse the repository at this point in the history
The app table is an unordered array right now.  We have to search
apps by ID.  It also makes it harder to fall back to core NIC if
advanced functions are not compiled into the kernel (e.g. eBPF).
Make the table keyed by app id.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jakub Kicinski authored and David S. Miller committed Nov 2, 2017
1 parent f449657 commit 2c4197a
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions drivers/net/ethernet/netronome/nfp/nfp_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@
#include "nfp_net_repr.h"

static const struct nfp_app_type *apps[] = {
&app_nic,
&app_bpf,
[NFP_APP_CORE_NIC] = &app_nic,
[NFP_APP_BPF_NIC] = &app_bpf,
#ifdef CONFIG_NFP_APP_FLOWER
&app_flower,
[NFP_APP_FLOWER_NIC] = &app_flower,
#endif
};

Expand Down Expand Up @@ -116,17 +116,13 @@ nfp_app_reprs_set(struct nfp_app *app, enum nfp_repr_type type,
struct nfp_app *nfp_app_alloc(struct nfp_pf *pf, enum nfp_app_id id)
{
struct nfp_app *app;
unsigned int i;

for (i = 0; i < ARRAY_SIZE(apps); i++)
if (apps[i]->id == id)
break;
if (i == ARRAY_SIZE(apps)) {
if (id >= ARRAY_SIZE(apps) || !apps[id]) {
nfp_err(pf->cpp, "failed to find app with ID 0x%02hhx\n", id);
return ERR_PTR(-EINVAL);
}

if (WARN_ON(!apps[i]->name || !apps[i]->vnic_alloc))
if (WARN_ON(!apps[id]->name || !apps[id]->vnic_alloc))
return ERR_PTR(-EINVAL);

app = kzalloc(sizeof(*app), GFP_KERNEL);
Expand All @@ -136,7 +132,7 @@ struct nfp_app *nfp_app_alloc(struct nfp_pf *pf, enum nfp_app_id id)
app->pf = pf;
app->cpp = pf->cpp;
app->pdev = pf->pdev;
app->type = apps[i];
app->type = apps[id];

return app;
}
Expand Down

0 comments on commit 2c4197a

Please sign in to comment.