Skip to content

Commit

Permalink
nfp: bpf: add map data structure
Browse files Browse the repository at this point in the history
To be able to split code into reasonable chunks we need to add
the map data structures already.  Later patches will add code
piece by piece.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
  • Loading branch information
Jakub Kicinski authored and Daniel Borkmann committed Jan 14, 2018
1 parent a388457 commit 4da98ee
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/net/ethernet/netronome/nfp/bpf/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,8 @@ static int nfp_bpf_init(struct nfp_app *app)
bpf->app = app;
app->priv = bpf;

INIT_LIST_HEAD(&bpf->map_list);

err = nfp_bpf_parse_capabilities(app);
if (err)
goto err_free_bpf;
Expand All @@ -326,7 +328,10 @@ static int nfp_bpf_init(struct nfp_app *app)

static void nfp_bpf_clean(struct nfp_app *app)
{
kfree(app->priv);
struct nfp_app_bpf *bpf = app->priv;

WARN_ON(!list_empty(&bpf->map_list));
kfree(bpf);
}

const struct nfp_app_type app_bpf = {
Expand Down
18 changes: 18 additions & 0 deletions drivers/net/ethernet/netronome/nfp/bpf/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ enum pkt_vec {
* struct nfp_app_bpf - bpf app priv structure
* @app: backpointer to the app
*
* @map_list: list of offloaded maps
*
* @adjust_head: adjust head capability
* @flags: extra flags for adjust head
* @off_min: minimal packet offset within buffer required
Expand All @@ -103,6 +105,8 @@ enum pkt_vec {
struct nfp_app_bpf {
struct nfp_app *app;

struct list_head map_list;

struct nfp_bpf_cap_adjust_head {
u32 flags;
int off_min;
Expand All @@ -112,6 +116,20 @@ struct nfp_app_bpf {
} adjust_head;
};

/**
* struct nfp_bpf_map - private per-map data attached to BPF maps for offload
* @offmap: pointer to the offloaded BPF map
* @bpf: back pointer to bpf app private structure
* @tid: table id identifying map on datapath
* @l: link on the nfp_app_bpf->map_list list
*/
struct nfp_bpf_map {
struct bpf_offloaded_map *offmap;
struct nfp_app_bpf *bpf;
u32 tid;
struct list_head l;
};

struct nfp_prog;
struct nfp_insn_meta;
typedef int (*instr_cb_t)(struct nfp_prog *, struct nfp_insn_meta *);
Expand Down

0 comments on commit 4da98ee

Please sign in to comment.