#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
 };
 
 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);
        app->pf = pf;
        app->cpp = pf->cpp;
        app->pdev = pf->pdev;
-       app->type = apps[i];
+       app->type = apps[id];
 
        return app;
 }