+int
+mlx5_vdpa_steer_update(struct mlx5_vdpa_priv *priv)
+{
+ int ret = mlx5_vdpa_rqt_prepare(priv);
+
+ if (ret == 0) {
+ mlx5_vdpa_rss_flows_destroy(priv);
+ if (priv->steer.rqt) {
+ claim_zero(mlx5_devx_cmd_destroy(priv->steer.rqt));
+ priv->steer.rqt = NULL;
+ }
+ } else if (ret < 0) {
+ return ret;
+ } else if (!priv->steer.rss[0].flow) {
+ ret = mlx5_vdpa_rss_flows_create(priv);
+ if (ret) {
+ DRV_LOG(ERR, "Cannot create RSS flows.");
+ return -1;
+ }
+ }
+ return 0;
+}
+