@@ -911,15 +911,73 @@ mlxsw_devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port,
911
911
pool_index , threshold );
912
912
}
913
913
914
+ static int mlxsw_devlink_sb_occ_snapshot (struct devlink * devlink ,
915
+ unsigned int sb_index )
916
+ {
917
+ struct mlxsw_core * mlxsw_core = devlink_priv (devlink );
918
+ struct mlxsw_driver * mlxsw_driver = mlxsw_core -> driver ;
919
+
920
+ if (!mlxsw_driver -> sb_occ_snapshot )
921
+ return - EOPNOTSUPP ;
922
+ return mlxsw_driver -> sb_occ_snapshot (mlxsw_core , sb_index );
923
+ }
924
+
925
+ static int mlxsw_devlink_sb_occ_max_clear (struct devlink * devlink ,
926
+ unsigned int sb_index )
927
+ {
928
+ struct mlxsw_core * mlxsw_core = devlink_priv (devlink );
929
+ struct mlxsw_driver * mlxsw_driver = mlxsw_core -> driver ;
930
+
931
+ if (!mlxsw_driver -> sb_occ_max_clear )
932
+ return - EOPNOTSUPP ;
933
+ return mlxsw_driver -> sb_occ_max_clear (mlxsw_core , sb_index );
934
+ }
935
+
936
+ static int
937
+ mlxsw_devlink_sb_occ_port_pool_get (struct devlink_port * devlink_port ,
938
+ unsigned int sb_index , u16 pool_index ,
939
+ u32 * p_cur , u32 * p_max )
940
+ {
941
+ struct mlxsw_core * mlxsw_core = devlink_priv (devlink_port -> devlink );
942
+ struct mlxsw_driver * mlxsw_driver = mlxsw_core -> driver ;
943
+ struct mlxsw_core_port * mlxsw_core_port = __dl_port (devlink_port );
944
+
945
+ if (!mlxsw_driver -> sb_occ_port_pool_get )
946
+ return - EOPNOTSUPP ;
947
+ return mlxsw_driver -> sb_occ_port_pool_get (mlxsw_core_port , sb_index ,
948
+ pool_index , p_cur , p_max );
949
+ }
950
+
951
+ static int
952
+ mlxsw_devlink_sb_occ_tc_port_bind_get (struct devlink_port * devlink_port ,
953
+ unsigned int sb_index , u16 tc_index ,
954
+ enum devlink_sb_pool_type pool_type ,
955
+ u32 * p_cur , u32 * p_max )
956
+ {
957
+ struct mlxsw_core * mlxsw_core = devlink_priv (devlink_port -> devlink );
958
+ struct mlxsw_driver * mlxsw_driver = mlxsw_core -> driver ;
959
+ struct mlxsw_core_port * mlxsw_core_port = __dl_port (devlink_port );
960
+
961
+ if (!mlxsw_driver -> sb_occ_tc_port_bind_get )
962
+ return - EOPNOTSUPP ;
963
+ return mlxsw_driver -> sb_occ_tc_port_bind_get (mlxsw_core_port ,
964
+ sb_index , tc_index ,
965
+ pool_type , p_cur , p_max );
966
+ }
967
+
914
968
static const struct devlink_ops mlxsw_devlink_ops = {
915
- .port_split = mlxsw_devlink_port_split ,
916
- .port_unsplit = mlxsw_devlink_port_unsplit ,
917
- .sb_pool_get = mlxsw_devlink_sb_pool_get ,
918
- .sb_pool_set = mlxsw_devlink_sb_pool_set ,
919
- .sb_port_pool_get = mlxsw_devlink_sb_port_pool_get ,
920
- .sb_port_pool_set = mlxsw_devlink_sb_port_pool_set ,
921
- .sb_tc_pool_bind_get = mlxsw_devlink_sb_tc_pool_bind_get ,
922
- .sb_tc_pool_bind_set = mlxsw_devlink_sb_tc_pool_bind_set ,
969
+ .port_split = mlxsw_devlink_port_split ,
970
+ .port_unsplit = mlxsw_devlink_port_unsplit ,
971
+ .sb_pool_get = mlxsw_devlink_sb_pool_get ,
972
+ .sb_pool_set = mlxsw_devlink_sb_pool_set ,
973
+ .sb_port_pool_get = mlxsw_devlink_sb_port_pool_get ,
974
+ .sb_port_pool_set = mlxsw_devlink_sb_port_pool_set ,
975
+ .sb_tc_pool_bind_get = mlxsw_devlink_sb_tc_pool_bind_get ,
976
+ .sb_tc_pool_bind_set = mlxsw_devlink_sb_tc_pool_bind_set ,
977
+ .sb_occ_snapshot = mlxsw_devlink_sb_occ_snapshot ,
978
+ .sb_occ_max_clear = mlxsw_devlink_sb_occ_max_clear ,
979
+ .sb_occ_port_pool_get = mlxsw_devlink_sb_occ_port_pool_get ,
980
+ .sb_occ_tc_port_bind_get = mlxsw_devlink_sb_occ_tc_port_bind_get ,
923
981
};
924
982
925
983
int mlxsw_core_bus_device_register (const struct mlxsw_bus_info * mlxsw_bus_info ,
0 commit comments