All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: netdev@vger.kernel.org
Cc: Stephen Hemminger <stephen@networkplumber.org>
Subject: [RFC 3/6] i40e: use extack for bpf errors
Date: Thu, 28 Feb 2019 10:38:06 -0800	[thread overview]
Message-ID: <20190228183809.25417-4-sthemmin@microsoft.com> (raw)
In-Reply-To: <20190228183809.25417-1-sthemmin@microsoft.com>

From: Stephen Hemminger <stephen@networkplumber.org>

If ndo_bpf fails fill in error string with reason.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index da62218eb70a..3de1f2590ca0 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -11831,7 +11831,8 @@ static netdev_features_t i40e_features_check(struct sk_buff *skb,
  * @prog: XDP program
  **/
 static int i40e_xdp_setup(struct i40e_vsi *vsi,
-			  struct bpf_prog *prog)
+			  struct bpf_prog *prog,
+			  struct netlink_ext_ack *extack)
 {
 	int frame_size = vsi->netdev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
 	struct i40e_pf *pf = vsi->back;
@@ -11840,8 +11841,10 @@ static int i40e_xdp_setup(struct i40e_vsi *vsi,
 	int i;
 
 	/* Don't allow frames that span over multiple buffers */
-	if (frame_size > vsi->rx_buf_len)
+	if (frame_size > vsi->rx_buf_len) {
+		NL_SET_ERR_MSG(extack, "XDP does not support multiple buffers");
 		return -EINVAL;
+	}
 
 	if (!i40e_enabled_xdp_vsi(vsi) && !prog)
 		return 0;
@@ -12140,12 +12143,14 @@ static int i40e_xdp(struct net_device *dev,
 	struct i40e_netdev_priv *np = netdev_priv(dev);
 	struct i40e_vsi *vsi = np->vsi;
 
-	if (vsi->type != I40E_VSI_MAIN)
+	if (vsi->type != I40E_VSI_MAIN) {
+		NL_SET_ERR_MSG(xdp->extack, "XDP not allowed on VF");
 		return -EINVAL;
+	}
 
 	switch (xdp->command) {
 	case XDP_SETUP_PROG:
-		return i40e_xdp_setup(vsi, xdp->prog);
+		return i40e_xdp_setup(vsi, xdp->prog, xdp->extack);
 	case XDP_QUERY_PROG:
 		xdp->prog_id = vsi->xdp_prog ? vsi->xdp_prog->aux->id : 0;
 		return 0;
@@ -12153,6 +12158,7 @@ static int i40e_xdp(struct net_device *dev,
 		return i40e_xsk_umem_setup(vsi, xdp->xsk.umem,
 					   xdp->xsk.queue_id);
 	default:
+		NL_SET_ERR_MSG(xdp->extack, "Unknown XDP command");
 		return -EINVAL;
 	}
 }
-- 
2.17.1


  parent reply	other threads:[~2019-02-28 18:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-28 18:38 [RFC 0/7] ndo_bpf error reporting Stephen Hemminger
2019-02-28 18:38 ` [RFC 1/6] bnxt: use extack for xdp error messages Stephen Hemminger
2019-02-28 18:43   ` Jakub Kicinski
2019-02-28 18:38 ` [RFC 2/6] ixgbe: use extack for xdp errors Stephen Hemminger
2019-02-28 19:04   ` Dan Williams
2019-02-28 18:38 ` Stephen Hemminger [this message]
2019-02-28 18:38 ` [RFC 4/6] ixgebvf: report xdp errors through extack Stephen Hemminger
2019-02-28 18:38 ` [RFC 5/6] mlx4: report " Stephen Hemminger
2019-02-28 18:38 ` [RFC 6/6] mlx5: report XDP " Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190228183809.25417-4-sthemmin@microsoft.com \
    --to=stephen@networkplumber.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.