Commit 4da98eea authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Daniel Borkmann

nfp: bpf: add map data structure

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: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent a3884572
...@@ -313,6 +313,8 @@ static int nfp_bpf_init(struct nfp_app *app) ...@@ -313,6 +313,8 @@ static int nfp_bpf_init(struct nfp_app *app)
bpf->app = app; bpf->app = app;
app->priv = bpf; app->priv = bpf;
INIT_LIST_HEAD(&bpf->map_list);
err = nfp_bpf_parse_capabilities(app); err = nfp_bpf_parse_capabilities(app);
if (err) if (err)
goto err_free_bpf; goto err_free_bpf;
...@@ -326,7 +328,10 @@ static int nfp_bpf_init(struct nfp_app *app) ...@@ -326,7 +328,10 @@ static int nfp_bpf_init(struct nfp_app *app)
static void nfp_bpf_clean(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 = { const struct nfp_app_type app_bpf = {
......
...@@ -93,6 +93,8 @@ enum pkt_vec { ...@@ -93,6 +93,8 @@ enum pkt_vec {
* struct nfp_app_bpf - bpf app priv structure * struct nfp_app_bpf - bpf app priv structure
* @app: backpointer to the app * @app: backpointer to the app
* *
* @map_list: list of offloaded maps
*
* @adjust_head: adjust head capability * @adjust_head: adjust head capability
* @flags: extra flags for adjust head * @flags: extra flags for adjust head
* @off_min: minimal packet offset within buffer required * @off_min: minimal packet offset within buffer required
...@@ -103,6 +105,8 @@ enum pkt_vec { ...@@ -103,6 +105,8 @@ enum pkt_vec {
struct nfp_app_bpf { struct nfp_app_bpf {
struct nfp_app *app; struct nfp_app *app;
struct list_head map_list;
struct nfp_bpf_cap_adjust_head { struct nfp_bpf_cap_adjust_head {
u32 flags; u32 flags;
int off_min; int off_min;
...@@ -112,6 +116,20 @@ struct nfp_app_bpf { ...@@ -112,6 +116,20 @@ struct nfp_app_bpf {
} adjust_head; } 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_prog;
struct nfp_insn_meta; struct nfp_insn_meta;
typedef int (*instr_cb_t)(struct nfp_prog *, struct nfp_insn_meta *); typedef int (*instr_cb_t)(struct nfp_prog *, struct nfp_insn_meta *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment