From: Joshua Hay <[email protected]>
Date: Tue,  2 Jun 2026 10:20:22 -0700

> The current XDP implementation uses queue based scheduling for its TxQs.
> If the FW does not advertise support for queue based scheduling, do not
> enable XDP. Add the missing capability check at the start of the XDP
> configuration. This will temporarily break XDP while a flow based
> implementation is worked on, as well as while FWs with queue based by
> default are rolled out.
> 
> Fixes: 705457e7211f ("idpf: implement XDP_SETUP_PROG in ndo_bpf for splitq")
> Signed-off-by: Joshua Hay <[email protected]>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> Reviewed-by: Madhu Chittim <[email protected]>
> ---
> v1->v2: use local extack to use pass either properly initialized
> xdp->extack or NULL to netlink macro.
> ---
>  drivers/net/ethernet/intel/idpf/xdp.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/idpf/xdp.c 
> b/drivers/net/ethernet/intel/idpf/xdp.c
> index cbccd4546768..ecec7db4ebc0 100644
> --- a/drivers/net/ethernet/intel/idpf/xdp.c
> +++ b/drivers/net/ethernet/intel/idpf/xdp.c
> @@ -510,6 +510,16 @@ int idpf_xdp(struct net_device *dev, struct netdev_bpf 
> *xdp)
>       if (!idpf_is_queue_model_split(vport->dflt_qv_rsrc.txq_model))
>               goto notsupp;
>  
> +     if (!idpf_is_cap_ena(vport->adapter, IDPF_OTHER_CAPS,
> +                          VIRTCHNL2_CAP_SPLITQ_QSCHED)) {
> +             struct netlink_ext_ack *extack = xdp->command == XDP_SETUP_PROG 
> ?
> +                                              xdp->extack : NULL;

xdp->extack is NULL when removing the program? Interesting.

> +
> +             NL_SET_ERR_MSG_MOD(extack,
> +                                "Device does not support requested XDP Tx 
> scheduling mode");
> +             goto notsupp;
> +     }
> +
>       switch (xdp->command) {
>       case XDP_SETUP_PROG:
>               ret = idpf_xdp_setup_prog(vport, xdp);


Thanks,
Olek

Reply via email to