nfp: reorganize the app table
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>
This commit is contained in:
parent
f449657f83
commit
2c4197a041
1 changed files with 6 additions and 10 deletions
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
@ -116,17 +116,13 @@ exit_unlock:
|
|||
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);
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue