On Thu, 19 Dec 2024 23:05:30 +0900 Taehee Yoo wrote: > > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > > index f88b641533fc..1bfff7f29310 100644 > > > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c > > > @@ -395,6 +395,10 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog) > > > bp->dev->mtu, BNXT_MAX_PAGE_MODE_MTU); > > > return -EOPNOTSUPP; > > > } > > > + if (prog && bp->flags & BNXT_FLAG_HDS) { > > > + netdev_warn(dev, "XDP is disallowed when HDS is enabled.\n"); > > > + return -EOPNOTSUPP; > > > + } > > > > And this check should also live in the core, now that core has access > > to dev->ethtool->hds_config ? I think you can add this check to the > > core in the same patch as the chunk referred to above. > > The bnxt_en disallows setting up both single and multi buffer XDP, but core > checks only single buffer XDP. So, if multi buffer XDP is attaching to > the bnxt_en driver when HDS is enabled, the core can't filter it. Hm. Did you find this in the code, or did Broadcom folks suggest it? AFAICT bnxt supports multi-buf XDP. Is there something in the code that special-cases aggregation but doesn't work for pure HDS?