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
|
@ -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…
Reference in New Issue