Commit 9f4b2830 authored by Andy Gospodarek's avatar Andy Gospodarek Committed by David S. Miller
Browse files

bnxt: XDP multibuffer enablement



Allow aggregation buffers to be in place in the receive path and
allow XDP programs to be attached when using a larger than 4k MTU.

v3: Add a check to sure XDP program supports multipage packets.

Signed-off-by: default avatarAndy Gospodarek <gospo@broadcom.com>
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a7559bc8
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1939,8 +1939,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
		xdp_active = true;
	}

	/* skip running XDP prog if there are aggregation bufs */
	if (!agg_bufs && xdp_active) {
	if (xdp_active) {
		if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &len, event)) {
			rc = 1;
			goto next_rx;
+3 −2
Original line number Diff line number Diff line
@@ -387,8 +387,9 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog)
	int tx_xdp = 0, rc, tc;
	struct bpf_prog *old;

	if (prog && bp->dev->mtu > BNXT_MAX_PAGE_MODE_MTU) {
		netdev_warn(dev, "MTU %d larger than largest XDP supported MTU %d.\n",
	if (prog && !prog->aux->xdp_has_frags &&
	    bp->dev->mtu > BNXT_MAX_PAGE_MODE_MTU) {
		netdev_warn(dev, "MTU %d larger than %d without XDP frag support.\n",
			    bp->dev->mtu, BNXT_MAX_PAGE_MODE_MTU);
		return -EOPNOTSUPP;
	}