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: Andy Gospodarek <gospo@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a7559bc8c1
commit
9f4b28301c
2 changed files with 4 additions and 4 deletions
|
@ -1939,8 +1939,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
|
||||||
xdp_active = true;
|
xdp_active = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* skip running XDP prog if there are aggregation bufs */
|
if (xdp_active) {
|
||||||
if (!agg_bufs && xdp_active) {
|
|
||||||
if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &len, event)) {
|
if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &len, event)) {
|
||||||
rc = 1;
|
rc = 1;
|
||||||
goto next_rx;
|
goto next_rx;
|
||||||
|
|
|
@ -387,8 +387,9 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog)
|
||||||
int tx_xdp = 0, rc, tc;
|
int tx_xdp = 0, rc, tc;
|
||||||
struct bpf_prog *old;
|
struct bpf_prog *old;
|
||||||
|
|
||||||
if (prog && bp->dev->mtu > BNXT_MAX_PAGE_MODE_MTU) {
|
if (prog && !prog->aux->xdp_has_frags &&
|
||||||
netdev_warn(dev, "MTU %d larger than largest XDP supported MTU %d.\n",
|
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);
|
bp->dev->mtu, BNXT_MAX_PAGE_MODE_MTU);
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue