summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/netronome/nfp/nfp_app.h
diff options
context:
space:
mode:
authorJakub Kicinski <jakub.kicinski@netronome.com>2017-06-05 17:01:50 -0700
committerDavid S. Miller <davem@davemloft.net>2017-06-07 12:51:40 -0400
commit77ece8d5f1960f82d66b68fbc0c92938cdfa2688 (patch)
tree1893305364dc6fbedb678407702496bccb1cf1ce /drivers/net/ethernet/netronome/nfp/nfp_app.h
parent5c0dbe9ecf02349490794a4205d61c6603390082 (diff)
nfp: add control vNIC datapath
Since control vNICs don't have a netdev, they can't use napi and queuing stack provides. Add simple tasklet-based data receive and send of control messages with queuing on a skb_list. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_app.h')
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_app.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h
index 13efdefffa1a..f6091ad0a9a9 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_app.h
+++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h
@@ -38,6 +38,7 @@ struct bpf_prog;
struct net_device;
struct pci_dev;
struct tc_to_netdev;
+struct sk_buff;
struct nfp_app;
struct nfp_cpp;
struct nfp_pf;
@@ -55,6 +56,7 @@ extern const struct nfp_app_type app_bpf;
* struct nfp_app_type - application definition
* @id: application ID
* @name: application name
+ * @ctrl_has_meta: control messages have prepend of type:5/port:CTRL
*
* Callbacks
* @init: perform basic app checks
@@ -69,6 +71,8 @@ struct nfp_app_type {
enum nfp_app_id id;
const char *name;
+ bool ctrl_has_meta;
+
int (*init)(struct nfp_app *app);
const char *(*extra_cap)(struct nfp_app *app, struct nfp_net *nn);
@@ -99,6 +103,8 @@ struct nfp_app {
const struct nfp_app_type *type;
};
+bool nfp_ctrl_tx(struct nfp_net *nn, struct sk_buff *skb);
+
static inline int nfp_app_init(struct nfp_app *app)
{
if (!app->type->init)
@@ -125,6 +131,11 @@ static inline const char *nfp_app_name(struct nfp_app *app)
return app->type->name;
}
+static inline bool nfp_app_ctrl_has_meta(struct nfp_app *app)
+{
+ return app->type->ctrl_has_meta;
+}
+
static inline const char *nfp_app_extra_cap(struct nfp_app *app,
struct nfp_net *nn)
{