|
@@ -468,3 +468,21 @@ err_unlock:
|
|
|
err_free:
|
|
|
dev_kfree_skb_any(skb);
|
|
|
}
|
|
|
+
|
|
|
+void
|
|
|
+nfp_bpf_ctrl_msg_rx_raw(struct nfp_app *app, const void *data, unsigned int len)
|
|
|
+{
|
|
|
+ struct nfp_app_bpf *bpf = app->priv;
|
|
|
+ const struct cmsg_hdr *hdr = data;
|
|
|
+
|
|
|
+ if (unlikely(len < sizeof(struct cmsg_reply_map_simple))) {
|
|
|
+ cmsg_warn(bpf, "cmsg drop - too short %d!\n", len);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (hdr->type == CMSG_TYPE_BPF_EVENT)
|
|
|
+ nfp_bpf_event_output(bpf, data, len);
|
|
|
+ else
|
|
|
+ cmsg_warn(bpf, "cmsg drop - msg type %d with raw buffer!\n",
|
|
|
+ hdr->type);
|
|
|
+}
|