/* update HW stats in background for next time */
        mlx5e_queue_update_stats(priv);
-       memcpy(stats, &priv->stats.vf_vport, sizeof(*stats));
+       mlx5e_stats_copy_rep_stats(stats, &priv->stats.rep_stats);
 }
 
 static int mlx5e_rep_change_mtu(struct net_device *netdev, int new_mtu)
 
        struct mlx5e_vnic_env_stats vnic;
        struct mlx5e_vport_stats vport;
        struct mlx5e_pport_stats pport;
-       struct rtnl_link_stats64 vf_vport;
        struct mlx5e_pcie_stats pcie;
        struct mlx5e_rep_stats rep_stats;
 };
 
+static inline void mlx5e_stats_copy_rep_stats(struct rtnl_link_stats64 *vf_vport,
+                                             struct mlx5e_rep_stats *rep_stats)
+{
+       memset(vf_vport, 0, sizeof(*vf_vport));
+       vf_vport->rx_packets = rep_stats->vport_rx_packets;
+       vf_vport->tx_packets = rep_stats->vport_tx_packets;
+       vf_vport->rx_bytes = rep_stats->vport_rx_bytes;
+       vf_vport->tx_bytes = rep_stats->vport_tx_bytes;
+}
+
 extern mlx5e_stats_grp_t mlx5e_nic_stats_grps[];
 unsigned int mlx5e_nic_stats_grps_num(struct mlx5e_priv *priv);
 
 
                        if (err)
                                return err;
 
-                       rpriv->prev_vf_vport_stats = priv->stats.vf_vport;
+                       mlx5e_stats_copy_rep_stats(&rpriv->prev_vf_vport_stats,
+                                                  &priv->stats.rep_stats);
                        break;
                default:
                        NL_SET_ERR_MSG_MOD(extack, "mlx5 supports only police action for matchall");
        u64 dbytes;
        u64 dpkts;
 
-       cur_stats = priv->stats.vf_vport;
+       mlx5e_stats_copy_rep_stats(&cur_stats, &priv->stats.rep_stats);
        dpkts = cur_stats.rx_packets - rpriv->prev_vf_vport_stats.rx_packets;
        dbytes = cur_stats.rx_bytes - rpriv->prev_vf_vport_stats.rx_bytes;
        rpriv->prev_vf_vport_stats = cur_stats;