@@ -1668,11 +1668,10 @@ int mlx5e_tc_query_route_vport(struct net_device *out_dev, struct net_device *ro
16681668{
16691669 struct mlx5e_priv * out_priv , * route_priv ;
16701670 struct mlx5_core_dev * route_mdev ;
1671- struct mlx5_devcom * devcom ;
1671+ struct mlx5_devcom_comp_dev * pos ;
16721672 struct mlx5_eswitch * esw ;
16731673 u16 vhca_id ;
16741674 int err ;
1675- int i ;
16761675
16771676 out_priv = netdev_priv (out_dev );
16781677 esw = out_priv -> mdev -> priv .eswitch ;
@@ -1688,10 +1687,8 @@ int mlx5e_tc_query_route_vport(struct net_device *out_dev, struct net_device *ro
16881687 return err ;
16891688
16901689 rcu_read_lock ();
1691- devcom = out_priv -> mdev -> priv .devcom ;
16921690 err = - ENODEV ;
1693- mlx5_devcom_for_each_peer_entry_rcu (devcom , MLX5_DEVCOM_ESW_OFFLOADS ,
1694- esw , i ) {
1691+ mlx5_devcom_for_each_peer_entry_rcu (esw -> devcom , esw , pos ) {
16951692 err = mlx5_eswitch_vhca_id_to_vport (esw , vhca_id , vport );
16961693 if (!err )
16971694 break ;
@@ -2031,15 +2028,15 @@ static void mlx5e_tc_del_flow(struct mlx5e_priv *priv,
20312028 struct mlx5e_tc_flow * flow )
20322029{
20332030 if (mlx5e_is_eswitch_flow (flow )) {
2034- struct mlx5_devcom * devcom = flow -> priv -> mdev -> priv .devcom ;
2031+ struct mlx5_devcom_comp_dev * devcom = flow -> priv -> mdev -> priv .eswitch -> devcom ;
20352032
2036- if (!mlx5_devcom_for_each_peer_begin (devcom , MLX5_DEVCOM_ESW_OFFLOADS )) {
2033+ if (!mlx5_devcom_for_each_peer_begin (devcom )) {
20372034 mlx5e_tc_del_fdb_flow (priv , flow );
20382035 return ;
20392036 }
20402037
20412038 mlx5e_tc_del_fdb_peers_flow (flow );
2042- mlx5_devcom_for_each_peer_end (devcom , MLX5_DEVCOM_ESW_OFFLOADS );
2039+ mlx5_devcom_for_each_peer_end (devcom );
20432040 mlx5e_tc_del_fdb_flow (priv , flow );
20442041 } else {
20452042 mlx5e_tc_del_nic_flow (priv , flow );
@@ -4216,8 +4213,7 @@ static bool is_peer_flow_needed(struct mlx5e_tc_flow *flow)
42164213 flow_flag_test (flow , INGRESS );
42174214 bool act_is_encap = !!(attr -> action &
42184215 MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT );
4219- bool esw_paired = mlx5_devcom_comp_is_ready (esw_attr -> in_mdev -> priv .devcom ,
4220- MLX5_DEVCOM_ESW_OFFLOADS );
4216+ bool esw_paired = mlx5_devcom_comp_is_ready (esw_attr -> in_mdev -> priv .eswitch -> devcom );
42214217
42224218 if (!esw_paired )
42234219 return false;
@@ -4471,14 +4467,13 @@ mlx5e_add_fdb_flow(struct mlx5e_priv *priv,
44714467 struct net_device * filter_dev ,
44724468 struct mlx5e_tc_flow * * __flow )
44734469{
4474- struct mlx5_devcom * devcom = priv -> mdev -> priv .devcom ;
4470+ struct mlx5_devcom_comp_dev * devcom = priv -> mdev -> priv .eswitch -> devcom , * pos ;
44754471 struct mlx5e_rep_priv * rpriv = priv -> ppriv ;
44764472 struct mlx5_eswitch_rep * in_rep = rpriv -> rep ;
44774473 struct mlx5_core_dev * in_mdev = priv -> mdev ;
44784474 struct mlx5_eswitch * peer_esw ;
44794475 struct mlx5e_tc_flow * flow ;
44804476 int err ;
4481- int i ;
44824477
44834478 flow = __mlx5e_add_fdb_flow (priv , f , flow_flags , filter_dev , in_rep ,
44844479 in_mdev );
@@ -4490,27 +4485,25 @@ mlx5e_add_fdb_flow(struct mlx5e_priv *priv,
44904485 return 0 ;
44914486 }
44924487
4493- if (!mlx5_devcom_for_each_peer_begin (devcom , MLX5_DEVCOM_ESW_OFFLOADS )) {
4488+ if (!mlx5_devcom_for_each_peer_begin (devcom )) {
44944489 err = - ENODEV ;
44954490 goto clean_flow ;
44964491 }
44974492
4498- mlx5_devcom_for_each_peer_entry (devcom ,
4499- MLX5_DEVCOM_ESW_OFFLOADS ,
4500- peer_esw , i ) {
4493+ mlx5_devcom_for_each_peer_entry (devcom , peer_esw , pos ) {
45014494 err = mlx5e_tc_add_fdb_peer_flow (f , flow , flow_flags , peer_esw );
45024495 if (err )
45034496 goto peer_clean ;
45044497 }
45054498
4506- mlx5_devcom_for_each_peer_end (devcom , MLX5_DEVCOM_ESW_OFFLOADS );
4499+ mlx5_devcom_for_each_peer_end (devcom );
45074500
45084501 * __flow = flow ;
45094502 return 0 ;
45104503
45114504peer_clean :
45124505 mlx5e_tc_del_fdb_peers_flow (flow );
4513- mlx5_devcom_for_each_peer_end (devcom , MLX5_DEVCOM_ESW_OFFLOADS );
4506+ mlx5_devcom_for_each_peer_end (devcom );
45144507clean_flow :
45154508 mlx5e_tc_del_fdb_flow (priv , flow );
45164509 return err ;
@@ -4728,7 +4721,7 @@ int mlx5e_tc_fill_action_stats(struct mlx5e_priv *priv,
47284721int mlx5e_stats_flower (struct net_device * dev , struct mlx5e_priv * priv ,
47294722 struct flow_cls_offload * f , unsigned long flags )
47304723{
4731- struct mlx5_devcom * devcom = priv -> mdev -> priv .devcom ;
4724+ struct mlx5_eswitch * esw = priv -> mdev -> priv .eswitch ;
47324725 struct rhashtable * tc_ht = get_tc_ht (priv , flags );
47334726 struct mlx5e_tc_flow * flow ;
47344727 struct mlx5_fc * counter ;
@@ -4764,7 +4757,7 @@ int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv,
47644757 /* Under multipath it's possible for one rule to be currently
47654758 * un-offloaded while the other rule is offloaded.
47664759 */
4767- if (!mlx5_devcom_for_each_peer_begin (devcom , MLX5_DEVCOM_ESW_OFFLOADS ))
4760+ if (esw && !mlx5_devcom_for_each_peer_begin (esw -> devcom ))
47684761 goto out ;
47694762
47704763 if (flow_flag_test (flow , DUP )) {
@@ -4795,7 +4788,8 @@ int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv,
47954788 }
47964789
47974790no_peer_counter :
4798- mlx5_devcom_for_each_peer_end (devcom , MLX5_DEVCOM_ESW_OFFLOADS );
4791+ if (esw )
4792+ mlx5_devcom_for_each_peer_end (esw -> devcom );
47994793out :
48004794 flow_stats_update (& f -> stats , bytes , packets , 0 , lastuse ,
48014795 FLOW_ACTION_HW_STATS_DELAYED );
0 commit comments