@@ -186,6 +186,32 @@ static void mlx5_infer_tx_affinity_mapping(struct lag_tracker *tracker,
186186 * port2 = 1 ;
187187}
188188
189+ static void mlx5_modify_lag (struct mlx5_lag * ldev ,
190+ struct lag_tracker * tracker )
191+ {
192+ struct mlx5_core_dev * dev0 = ldev -> pf [0 ].dev ;
193+ u8 v2p_port1 , v2p_port2 ;
194+ int err ;
195+
196+ mlx5_infer_tx_affinity_mapping (tracker , & v2p_port1 ,
197+ & v2p_port2 );
198+
199+ if (v2p_port1 != ldev -> v2p_map [0 ] ||
200+ v2p_port2 != ldev -> v2p_map [1 ]) {
201+ ldev -> v2p_map [0 ] = v2p_port1 ;
202+ ldev -> v2p_map [1 ] = v2p_port2 ;
203+
204+ mlx5_core_info (dev0 , "modify lag map port 1:%d port 2:%d" ,
205+ ldev -> v2p_map [0 ], ldev -> v2p_map [1 ]);
206+
207+ err = mlx5_cmd_modify_lag (dev0 , v2p_port1 , v2p_port2 );
208+ if (err )
209+ mlx5_core_err (dev0 ,
210+ "Failed to modify LAG (%d)\n" ,
211+ err );
212+ }
213+ }
214+
189215static int mlx5_create_lag (struct mlx5_lag * ldev ,
190216 struct lag_tracker * tracker )
191217{
@@ -232,8 +258,7 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)
232258 struct mlx5_core_dev * dev0 = ldev -> pf [0 ].dev ;
233259 struct mlx5_core_dev * dev1 = ldev -> pf [1 ].dev ;
234260 struct lag_tracker tracker ;
235- u8 v2p_port1 , v2p_port2 ;
236- int i , err ;
261+ int i ;
237262 bool do_bond ;
238263
239264 if (!dev0 || !dev1 )
@@ -255,20 +280,7 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)
255280 mlx5_add_dev_by_protocol (dev0 , MLX5_INTERFACE_PROTOCOL_IB );
256281 mlx5_nic_vport_enable_roce (dev1 );
257282 } else if (do_bond && mlx5_lag_is_bonded (ldev )) {
258- mlx5_infer_tx_affinity_mapping (& tracker , & v2p_port1 ,
259- & v2p_port2 );
260-
261- if ((v2p_port1 != ldev -> v2p_map [0 ]) ||
262- (v2p_port2 != ldev -> v2p_map [1 ])) {
263- ldev -> v2p_map [0 ] = v2p_port1 ;
264- ldev -> v2p_map [1 ] = v2p_port2 ;
265-
266- err = mlx5_cmd_modify_lag (dev0 , v2p_port1 , v2p_port2 );
267- if (err )
268- mlx5_core_err (dev0 ,
269- "Failed to modify LAG (%d)\n" ,
270- err );
271- }
283+ mlx5_modify_lag (ldev , & tracker );
272284 } else if (!do_bond && mlx5_lag_is_bonded (ldev )) {
273285 mlx5_remove_dev_by_protocol (dev0 , MLX5_INTERFACE_PROTOCOL_IB );
274286 mlx5_nic_vport_disable_roce (dev1 );
0 commit comments