Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit acc2abbb authored by Quentin Monnet's avatar Quentin Monnet Committed by David S. Miller
Browse files

nfp: bpf: plumb extack into functions related to XDP offload



Pass a pointer to an extack object to nfp_app_xdp_offload() in order to
prepare for extack usage in the nfp driver. Next step will be to forward
this extack pointer to nfp_net_bpf_offload(), once this function is able
to use it for printing error messages.

Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f9eda14f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ static bool nfp_net_ebpf_capable(struct nfp_net *nn)

static int
nfp_bpf_xdp_offload(struct nfp_app *app, struct nfp_net *nn,
		    struct bpf_prog *prog)
		    struct bpf_prog *prog, struct netlink_ext_ack *extack)
{
	bool running, xdp_running;
	int ret;
@@ -73,7 +73,7 @@ nfp_bpf_xdp_offload(struct nfp_app *app, struct nfp_net *nn,
	ret = nfp_net_bpf_offload(nn, prog, running);
	/* Stop offload if replace not possible */
	if (ret && prog)
		nfp_bpf_xdp_offload(app, nn, NULL);
		nfp_bpf_xdp_offload(app, nn, NULL, extack);

	nn->dp.bpf_offload_xdp = prog && !ret;
	return ret;
+6 −3
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
struct bpf_prog;
struct net_device;
struct netdev_bpf;
struct netlink_ext_ack;
struct pci_dev;
struct sk_buff;
struct sk_buff;
@@ -138,7 +139,8 @@ struct nfp_app_type {
	int (*bpf)(struct nfp_app *app, struct nfp_net *nn,
		   struct netdev_bpf *xdp);
	int (*xdp_offload)(struct nfp_app *app, struct nfp_net *nn,
			   struct bpf_prog *prog);
			   struct bpf_prog *prog,
			   struct netlink_ext_ack *extack);

	int (*sriov_enable)(struct nfp_app *app, int num_vfs);
	void (*sriov_disable)(struct nfp_app *app);
@@ -324,11 +326,12 @@ static inline int nfp_app_bpf(struct nfp_app *app, struct nfp_net *nn,
}

static inline int nfp_app_xdp_offload(struct nfp_app *app, struct nfp_net *nn,
				      struct bpf_prog *prog)
				      struct bpf_prog *prog,
				      struct netlink_ext_ack *extack)
{
	if (!app || !app->type->xdp_offload)
		return -EOPNOTSUPP;
	return app->type->xdp_offload(app, nn, prog);
	return app->type->xdp_offload(app, nn, prog, extack);
}

static inline bool __nfp_app_ctrl_tx(struct nfp_app *app, struct sk_buff *skb)
+1 −1
Original line number Diff line number Diff line
@@ -3403,7 +3403,7 @@ nfp_net_xdp_setup(struct nfp_net *nn, struct bpf_prog *prog, u32 flags,
	if (err)
		return err;

	err = nfp_app_xdp_offload(nn->app, nn, offload_prog);
	err = nfp_app_xdp_offload(nn->app, nn, offload_prog, extack);
	if (err && flags & XDP_FLAGS_HW_MODE)
		return err;