const struct net_device *out_dev,
                        bool ingress, int *p_span_id)
 {
+       struct mlxsw_sp_span_agent_parms agent_parms;
        struct mlxsw_sp_port *mlxsw_sp_port;
        struct mlxsw_sp *mlxsw_sp = priv;
        int err;
 
-       err = mlxsw_sp_span_agent_get(mlxsw_sp, out_dev, p_span_id);
+       agent_parms.to_dev = out_dev;
+       err = mlxsw_sp_span_agent_get(mlxsw_sp, p_span_id, &agent_parms);
        if (err)
                return err;
 
 
                              struct mlxsw_sp_mall_entry *mall_entry)
 {
        struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
+       struct mlxsw_sp_span_agent_parms agent_parms;
        struct mlxsw_sp_span_trigger_parms parms;
        enum mlxsw_sp_span_trigger trigger;
        int err;
                return -EINVAL;
        }
 
-       err = mlxsw_sp_span_agent_get(mlxsw_sp, mall_entry->mirror.to_dev,
-                                     &mall_entry->mirror.span_id);
+       agent_parms.to_dev = mall_entry->mirror.to_dev;
+       err = mlxsw_sp_span_agent_get(mlxsw_sp, &mall_entry->mirror.span_id,
+                                     &agent_parms);
        if (err)
                return err;
 
 
 {
        struct mlxsw_sp_port *mlxsw_sp_port = qevent_binding->mlxsw_sp_port;
        struct mlxsw_sp_span_trigger_parms trigger_parms = {};
+       struct mlxsw_sp_span_agent_parms agent_parms = {
+               .to_dev = mall_entry->mirror.to_dev,
+       };
        int span_id;
        int err;
 
-       err = mlxsw_sp_span_agent_get(mlxsw_sp, mall_entry->mirror.to_dev, &span_id);
+       err = mlxsw_sp_span_agent_get(mlxsw_sp, &span_id, &agent_parms);
        if (err)
                return err;
 
 
        mlxsw_core_schedule_work(&mlxsw_sp->span->work);
 }
 
-int mlxsw_sp_span_agent_get(struct mlxsw_sp *mlxsw_sp,
-                           const struct net_device *to_dev, int *p_span_id)
+int mlxsw_sp_span_agent_get(struct mlxsw_sp *mlxsw_sp, int *p_span_id,
+                           const struct mlxsw_sp_span_agent_parms *parms)
 {
+       const struct net_device *to_dev = parms->to_dev;
        const struct mlxsw_sp_span_entry_ops *ops;
        struct mlxsw_sp_span_entry *span_entry;
        struct mlxsw_sp_span_parms sparms;
 
        int span_id;
 };
 
+struct mlxsw_sp_span_agent_parms {
+       const struct net_device *to_dev;
+};
+
 struct mlxsw_sp_span_entry_ops;
 
 struct mlxsw_sp_span_ops {
 int mlxsw_sp_span_port_mtu_update(struct mlxsw_sp_port *port, u16 mtu);
 void mlxsw_sp_span_speed_update_work(struct work_struct *work);
 
-int mlxsw_sp_span_agent_get(struct mlxsw_sp *mlxsw_sp,
-                           const struct net_device *to_dev, int *p_span_id);
+int mlxsw_sp_span_agent_get(struct mlxsw_sp *mlxsw_sp, int *p_span_id,
+                           const struct mlxsw_sp_span_agent_parms *parms);
 void mlxsw_sp_span_agent_put(struct mlxsw_sp *mlxsw_sp, int span_id);
 int mlxsw_sp_span_analyzed_port_get(struct mlxsw_sp_port *mlxsw_sp_port,
                                    bool ingress);