On Mon, 2025-10-27 at 17:00 -0700, Daniel Zahka wrote:
@@ -670,9 +813,57 @@ static int accel_psp_fs_init_tx(struct mlx5e_psp_fs *fs) return -ENOMEM; mutex_init(&tx_fs->mutex);
- flow_counter = mlx5_fc_create(mdev, false);
- if (IS_ERR(flow_counter)) {
mlx5_core_warn(mdev,"fail to create psp tx flow countererr=%pe\n",
flow_counter);err = PTR_ERR(flow_counter);goto out_err;- }
- tx_fs->tx_counter = flow_counter;
Nit: Moving the flow counter init before the mutex init would simplify cleanup a bit (simple return instead of goto out_err).
+static void +mlx5e_accel_psp_fs_get_stats_fill(struct mlx5e_priv *priv, void *psp_stats) +{
- struct mlx5e_psp_stats *stats = (struct mlx5e_psp_stats
*)psp_stats;
Why can't this function receive an mlx5e_psp_stats pointer directly? It would avoid the boilerplate cast.
+static void +mlx5e_psp_get_stats(struct psp_dev *psd, struct psp_dev_stats *stats) +{
- struct mlx5e_priv *priv = netdev_priv(psd->main_netdev);
- struct mlx5e_psp_stats nstats;
- mlx5e_accel_psp_fs_get_stats_fill(priv, &nstats);
I don't see the point of the intermediate struct mlx5e_psp_stats, this function could query counters directly into stats.
+struct mlx5e_psp_stats {
- u64 psp_rx_pkts;
- u64 psp_rx_bytes;
- u64 psp_rx_pkts_auth_fail;
- u64 psp_rx_bytes_auth_fail;
- u64 psp_rx_pkts_frame_err;
- u64 psp_rx_bytes_frame_err;
- u64 psp_rx_pkts_drop;
- u64 psp_rx_bytes_drop;
- u64 psp_tx_pkts;
- u64 psp_tx_bytes;
- u64 psp_tx_pkts_drop;
- u64 psp_tx_bytes_drop;
+};
struct mlx5e_psp { struct psp_dev *psp; struct psp_dev_caps caps; struct mlx5e_psp_fs *fs; atomic_t tx_key_cnt;
- atomic_t tx_drop;
- /* Stats manage */
- struct mlx5e_psp_stats stats;
This does not appear written anywhere. Is it planned to be used in a future patch?
Cosmin.