Re: [PATCH net] eth: gve: use appropriate helper to set xdp_features

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-By: Jeroen de Borst <jeroendb@xxxxxxxxxx>



On Mon, Jan 6, 2025 at 10:02 AM Jakub Kicinski <kuba@xxxxxxxxxx> wrote:
>
> Commit f85949f98206 ("xdp: add xdp_set_features_flag utility routine")
> added routines to inform the core about XDP flag changes.
> GVE support was added around the same time and missed using them.
>
> GVE only changes the flags on error recover or resume.
> Presumably the flags may change during resume if VM migrated.
> User would not get the notification and upper devices would
> not get a chance to recalculate their flags.
>
> Fixes: 75eaae158b1b ("gve: Add XDP DROP and TX support for GQI-QPL format")
> Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
> ---
> CC: jeroendb@xxxxxxxxxx
> CC: pkaligineedi@xxxxxxxxxx
> CC: shailend@xxxxxxxxxx
> CC: hawk@xxxxxxxxxx
> CC: john.fastabend@xxxxxxxxx
> CC: willemb@xxxxxxxxxx
> CC: bpf@xxxxxxxxxxxxxxx
> ---
>  drivers/net/ethernet/google/gve/gve_main.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c
> index 8a8f6ab12a98..533e659b15b3 100644
> --- a/drivers/net/ethernet/google/gve/gve_main.c
> +++ b/drivers/net/ethernet/google/gve/gve_main.c
> @@ -2241,14 +2241,18 @@ static void gve_service_task(struct work_struct *work)
>
>  static void gve_set_netdev_xdp_features(struct gve_priv *priv)
>  {
> +       xdp_features_t xdp_features;
> +
>         if (priv->queue_format == GVE_GQI_QPL_FORMAT) {
> -               priv->dev->xdp_features = NETDEV_XDP_ACT_BASIC;
> -               priv->dev->xdp_features |= NETDEV_XDP_ACT_REDIRECT;
> -               priv->dev->xdp_features |= NETDEV_XDP_ACT_NDO_XMIT;
> -               priv->dev->xdp_features |= NETDEV_XDP_ACT_XSK_ZEROCOPY;
> +               xdp_features = NETDEV_XDP_ACT_BASIC;
> +               xdp_features |= NETDEV_XDP_ACT_REDIRECT;
> +               xdp_features |= NETDEV_XDP_ACT_NDO_XMIT;
> +               xdp_features |= NETDEV_XDP_ACT_XSK_ZEROCOPY;
>         } else {
> -               priv->dev->xdp_features = 0;
> +               xdp_features = 0;
>         }
> +
> +       xdp_set_features_flag(priv->dev, xdp_features);
>  }
>
>  static int gve_init_priv(struct gve_priv *priv, bool skip_describe_device)
> --
> 2.47.1
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux