Message ID | 1647806284-8529-12-git-send-email-michael.chan@broadcom.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | bnxt: Support XDP multi buffer | expand |
On Sun, 20 Mar 2022 15:58:04 -0400 Michael Chan wrote: > From: Andy Gospodarek <gospo@broadcom.com> > > 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. > > Signed-off-by: Andy Gospodarek <gospo@broadcom.com> > Signed-off-by: Michael Chan <michael.chan@broadcom.com> > --- > drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +-- > drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 5 ----- > 2 files changed, 1 insertion(+), 7 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > index 84c89ee7dc2f..4f7213af1955 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > @@ -1937,8 +1937,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; > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > index adbd92971209..3780b491a1d4 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > @@ -374,11 +374,6 @@ 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) { This seems to be missing taking prog->aux->xdp_has_frags into account. > - netdev_warn(dev, "MTU %d larger than largest XDP supported MTU %d.\n", > - bp->dev->mtu, BNXT_MAX_PAGE_MODE_MTU); > - return -EOPNOTSUPP; > - } > if (!(bp->flags & BNXT_FLAG_SHARED_RINGS)) { > netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n"); > return -EOPNOTSUPP;
On Mon, Mar 21, 2022 at 11:09:58PM -0700, Jakub Kicinski wrote: > On Sun, 20 Mar 2022 15:58:04 -0400 Michael Chan wrote: > > From: Andy Gospodarek <gospo@broadcom.com> > > > > 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. > > > > Signed-off-by: Andy Gospodarek <gospo@broadcom.com> > > Signed-off-by: Michael Chan <michael.chan@broadcom.com> > > --- > > drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +-- > > drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 5 ----- > > 2 files changed, 1 insertion(+), 7 deletions(-) > > > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > > index 84c89ee7dc2f..4f7213af1955 100644 > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > > @@ -1937,8 +1937,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; > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > index adbd92971209..3780b491a1d4 100644 > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > @@ -374,11 +374,6 @@ 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) { > > This seems to be missing taking prog->aux->xdp_has_frags into account. > Thanks for the review! I've sent Michael an updated patch and we should be able to get a v3 out this morning to cover this. > > - netdev_warn(dev, "MTU %d larger than largest XDP supported MTU %d.\n", > > - bp->dev->mtu, BNXT_MAX_PAGE_MODE_MTU); > > - return -EOPNOTSUPP; > > - } > > if (!(bp->flags & BNXT_FLAG_SHARED_RINGS)) { > > netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n"); > > return -EOPNOTSUPP; >
On Tue, Mar 22, 2022 at 3:26 AM Andy Gospodarek <andrew.gospodarek@broadcom.com> wrote: > > On Mon, Mar 21, 2022 at 11:09:58PM -0700, Jakub Kicinski wrote: > > On Sun, 20 Mar 2022 15:58:04 -0400 Michael Chan wrote: > > > From: Andy Gospodarek <gospo@broadcom.com> > > > > > > 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. > > > > > > Signed-off-by: Andy Gospodarek <gospo@broadcom.com> > > > Signed-off-by: Michael Chan <michael.chan@broadcom.com> > > > --- > > > drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +-- > > > drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 5 ----- > > > 2 files changed, 1 insertion(+), 7 deletions(-) > > > > > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > > > index 84c89ee7dc2f..4f7213af1955 100644 > > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c > > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > > > @@ -1937,8 +1937,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; > > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > > index adbd92971209..3780b491a1d4 100644 > > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > > @@ -374,11 +374,6 @@ 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) { > > > > This seems to be missing taking prog->aux->xdp_has_frags into account. > > > > Thanks for the review! I've sent Michael an updated patch and we should be > able to get a v3 out this morning to cover this. > We'll send v3 when net-next opens up again in 2 weeks.
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 84c89ee7dc2f..4f7213af1955 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1937,8 +1937,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; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index adbd92971209..3780b491a1d4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -374,11 +374,6 @@ 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", - bp->dev->mtu, BNXT_MAX_PAGE_MODE_MTU); - return -EOPNOTSUPP; - } if (!(bp->flags & BNXT_FLAG_SHARED_RINGS)) { netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n"); return -EOPNOTSUPP;