|
@@ -69,8 +69,10 @@ extern const struct nfp_app_type app_flower;
|
|
|
* @init: perform basic app checks and init
|
|
|
* @clean: clean app state
|
|
|
* @extra_cap: extra capabilities string
|
|
|
- * @vnic_init: init vNICs (assign port types, etc.)
|
|
|
- * @vnic_clean: clean up app's vNIC state
|
|
|
+ * @vnic_alloc: allocate vNICs (assign port types, etc.)
|
|
|
+ * @vnic_free: free up app's vNIC state
|
|
|
+ * @vnic_init: vNIC netdev was registered
|
|
|
+ * @vnic_clean: vNIC netdev about to be unregistered
|
|
|
* @repr_open: representor netdev open callback
|
|
|
* @repr_stop: representor netdev stop callback
|
|
|
* @start: start application logic
|
|
@@ -95,8 +97,10 @@ struct nfp_app_type {
|
|
|
|
|
|
const char *(*extra_cap)(struct nfp_app *app, struct nfp_net *nn);
|
|
|
|
|
|
- int (*vnic_init)(struct nfp_app *app, struct nfp_net *nn,
|
|
|
- unsigned int id);
|
|
|
+ int (*vnic_alloc)(struct nfp_app *app, struct nfp_net *nn,
|
|
|
+ unsigned int id);
|
|
|
+ void (*vnic_free)(struct nfp_app *app, struct nfp_net *nn);
|
|
|
+ int (*vnic_init)(struct nfp_app *app, struct nfp_net *nn);
|
|
|
void (*vnic_clean)(struct nfp_app *app, struct nfp_net *nn);
|
|
|
|
|
|
int (*repr_open)(struct nfp_app *app, struct nfp_repr *repr);
|
|
@@ -157,10 +161,23 @@ static inline void nfp_app_clean(struct nfp_app *app)
|
|
|
app->type->clean(app);
|
|
|
}
|
|
|
|
|
|
-static inline int nfp_app_vnic_init(struct nfp_app *app, struct nfp_net *nn,
|
|
|
- unsigned int id)
|
|
|
+static inline int nfp_app_vnic_alloc(struct nfp_app *app, struct nfp_net *nn,
|
|
|
+ unsigned int id)
|
|
|
{
|
|
|
- return app->type->vnic_init(app, nn, id);
|
|
|
+ return app->type->vnic_alloc(app, nn, id);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void nfp_app_vnic_free(struct nfp_app *app, struct nfp_net *nn)
|
|
|
+{
|
|
|
+ if (app->type->vnic_free)
|
|
|
+ app->type->vnic_free(app, nn);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int nfp_app_vnic_init(struct nfp_app *app, struct nfp_net *nn)
|
|
|
+{
|
|
|
+ if (!app->type->vnic_init)
|
|
|
+ return 0;
|
|
|
+ return app->type->vnic_init(app, nn);
|
|
|
}
|
|
|
|
|
|
static inline void nfp_app_vnic_clean(struct nfp_app *app, struct nfp_net *nn)
|
|
@@ -308,7 +325,7 @@ void nfp_app_free(struct nfp_app *app);
|
|
|
|
|
|
/* Callbacks shared between apps */
|
|
|
|
|
|
-int nfp_app_nic_vnic_init(struct nfp_app *app, struct nfp_net *nn,
|
|
|
- unsigned int id);
|
|
|
+int nfp_app_nic_vnic_alloc(struct nfp_app *app, struct nfp_net *nn,
|
|
|
+ unsigned int id);
|
|
|
|
|
|
#endif
|