Lines Matching refs:bpf

4 #include <linux/bpf.h>
18 nfp_bpf_cmsg_alloc(struct nfp_app_bpf *bpf, unsigned int size)
22 skb = nfp_app_ctrl_msg_alloc(bpf->app, size, GFP_KERNEL);
29 nfp_bpf_cmsg_map_req_size(struct nfp_app_bpf *bpf, unsigned int n)
34 size += (bpf->cmsg_key_sz + bpf->cmsg_val_sz) * n;
40 nfp_bpf_cmsg_map_req_alloc(struct nfp_app_bpf *bpf, unsigned int n)
42 return nfp_bpf_cmsg_alloc(bpf, nfp_bpf_cmsg_map_req_size(bpf, n));
46 nfp_bpf_cmsg_map_reply_size(struct nfp_app_bpf *bpf, unsigned int n)
51 size += (bpf->cmsg_key_sz + bpf->cmsg_val_sz) * n;
57 nfp_bpf_ctrl_rc_to_errno(struct nfp_app_bpf *bpf,
74 cmsg_warn(bpf, "FW responded with invalid status: %u\n", rc);
82 nfp_bpf_ctrl_alloc_map(struct nfp_app_bpf *bpf, struct bpf_map *map)
90 skb = nfp_bpf_cmsg_alloc(bpf, sizeof(*req));
101 skb = nfp_ccm_communicate(&bpf->ccm, skb, NFP_CCM_TYPE_BPF_MAP_ALLOC,
107 err = nfp_bpf_ctrl_rc_to_errno(bpf, &reply->reply_hdr);
120 void nfp_bpf_ctrl_free_map(struct nfp_app_bpf *bpf, struct nfp_bpf_map *nfp_map)
127 skb = nfp_bpf_cmsg_alloc(bpf, sizeof(*req));
129 cmsg_warn(bpf, "leaking map - failed to allocate msg\n");
136 skb = nfp_ccm_communicate(&bpf->ccm, skb, NFP_CCM_TYPE_BPF_MAP_FREE,
139 cmsg_warn(bpf, "leaking map - I/O error\n");
144 err = nfp_bpf_ctrl_rc_to_errno(bpf, &reply->reply_hdr);
146 cmsg_warn(bpf, "leaking map - FW responded with: %d\n", err);
152 nfp_bpf_ctrl_req_key(struct nfp_app_bpf *bpf, struct cmsg_req_map_op *req,
155 return &req->data[bpf->cmsg_key_sz * n + bpf->cmsg_val_sz * n];
159 nfp_bpf_ctrl_req_val(struct nfp_app_bpf *bpf, struct cmsg_req_map_op *req,
162 return &req->data[bpf->cmsg_key_sz * (n + 1) + bpf->cmsg_val_sz * n];
166 nfp_bpf_ctrl_reply_key(struct nfp_app_bpf *bpf, struct cmsg_reply_map_op *reply,
169 return &reply->data[bpf->cmsg_key_sz * n + bpf->cmsg_val_sz * n];
173 nfp_bpf_ctrl_reply_val(struct nfp_app_bpf *bpf, struct cmsg_reply_map_op *reply,
176 return &reply->data[bpf->cmsg_key_sz * (n + 1) + bpf->cmsg_val_sz * n];
203 struct nfp_app_bpf *bpf = nfp_map->bpf;
207 n_entries = nfp_bpf_ctrl_op_cache_fill(op) ? bpf->cmsg_cache_cnt : 1;
230 cached_key = nfp_bpf_ctrl_reply_key(bpf, reply, i);
235 memcpy(out_value, nfp_bpf_ctrl_reply_val(bpf, reply, i),
242 nfp_bpf_ctrl_reply_key(bpf, reply, i + 1),
297 struct nfp_app_bpf *bpf = nfp_map->bpf;
315 skb = nfp_bpf_cmsg_map_req_alloc(bpf, 1);
328 memcpy(nfp_bpf_ctrl_req_key(bpf, req, 0), key, map->key_size);
330 memcpy(nfp_bpf_ctrl_req_val(bpf, req, 0), value,
333 skb = nfp_ccm_communicate(&bpf->ccm, skb, op, 0);
340 cmsg_warn(bpf, "cmsg drop - type 0x%02x too short %d!\n",
348 err = nfp_bpf_ctrl_rc_to_errno(bpf, &reply->reply_hdr);
358 if (skb->len != nfp_bpf_cmsg_map_reply_size(bpf, reply_entries)) {
359 cmsg_warn(bpf, "cmsg drop - type 0x%02x too short %d for %d entries!\n",
367 memcpy(out_key, nfp_bpf_ctrl_reply_key(bpf, reply, 0),
370 memcpy(out_value, nfp_bpf_ctrl_reply_val(bpf, reply, 0),
417 unsigned int nfp_bpf_ctrl_cmsg_min_mtu(struct nfp_app_bpf *bpf)
419 return max(nfp_bpf_cmsg_map_req_size(bpf, 1),
420 nfp_bpf_cmsg_map_reply_size(bpf, 1));
423 unsigned int nfp_bpf_ctrl_cmsg_mtu(struct nfp_app_bpf *bpf)
426 nfp_bpf_cmsg_map_req_size(bpf, NFP_BPF_MAP_CACHE_CNT),
427 nfp_bpf_cmsg_map_reply_size(bpf, NFP_BPF_MAP_CACHE_CNT));
430 unsigned int nfp_bpf_ctrl_cmsg_cache_cnt(struct nfp_app_bpf *bpf)
434 mtu = bpf->app->ctrl->dp.mtu;
435 entry_sz = bpf->cmsg_key_sz + bpf->cmsg_val_sz;
444 struct nfp_app_bpf *bpf = app->priv;
447 cmsg_warn(bpf, "cmsg drop - too short %d!\n", skb->len);
453 if (!nfp_bpf_event_output(bpf, skb->data, skb->len))
460 nfp_ccm_rx(&bpf->ccm, skb);
467 struct nfp_app_bpf *bpf = app->priv;
470 cmsg_warn(bpf, "cmsg drop - too short %d!\n", len);
475 nfp_bpf_event_output(bpf, data, len);
477 cmsg_warn(bpf, "cmsg drop - msg type %d with raw buffer!\n",