@@ -955,66 +955,78 @@ static int mv88e6xxx_stats_snapshot(struct mv88e6xxx_chip *chip, int port)
955
955
return err ;
956
956
}
957
957
958
- static struct mv88e6xxx_hw_stat mv88e6xxx_hw_stats [] = {
959
- { "in_good_octets" , 8 , 0x00 , STATS_TYPE_BANK0 , },
960
- { "in_bad_octets" , 4 , 0x02 , STATS_TYPE_BANK0 , },
961
- { "in_unicast" , 4 , 0x04 , STATS_TYPE_BANK0 , },
962
- { "in_broadcasts" , 4 , 0x06 , STATS_TYPE_BANK0 , },
963
- { "in_multicasts" , 4 , 0x07 , STATS_TYPE_BANK0 , },
964
- { "in_pause" , 4 , 0x16 , STATS_TYPE_BANK0 , },
965
- { "in_undersize" , 4 , 0x18 , STATS_TYPE_BANK0 , },
966
- { "in_fragments" , 4 , 0x19 , STATS_TYPE_BANK0 , },
967
- { "in_oversize" , 4 , 0x1a , STATS_TYPE_BANK0 , },
968
- { "in_jabber" , 4 , 0x1b , STATS_TYPE_BANK0 , },
969
- { "in_rx_error" , 4 , 0x1c , STATS_TYPE_BANK0 , },
970
- { "in_fcs_error" , 4 , 0x1d , STATS_TYPE_BANK0 , },
971
- { "out_octets" , 8 , 0x0e , STATS_TYPE_BANK0 , },
972
- { "out_unicast" , 4 , 0x10 , STATS_TYPE_BANK0 , },
973
- { "out_broadcasts" , 4 , 0x13 , STATS_TYPE_BANK0 , },
974
- { "out_multicasts" , 4 , 0x12 , STATS_TYPE_BANK0 , },
975
- { "out_pause" , 4 , 0x15 , STATS_TYPE_BANK0 , },
976
- { "excessive" , 4 , 0x11 , STATS_TYPE_BANK0 , },
977
- { "collisions" , 4 , 0x1e , STATS_TYPE_BANK0 , },
978
- { "deferred" , 4 , 0x05 , STATS_TYPE_BANK0 , },
979
- { "single" , 4 , 0x14 , STATS_TYPE_BANK0 , },
980
- { "multiple" , 4 , 0x17 , STATS_TYPE_BANK0 , },
981
- { "out_fcs_error" , 4 , 0x03 , STATS_TYPE_BANK0 , },
982
- { "late" , 4 , 0x1f , STATS_TYPE_BANK0 , },
983
- { "hist_64bytes" , 4 , 0x08 , STATS_TYPE_BANK0 , },
984
- { "hist_65_127bytes" , 4 , 0x09 , STATS_TYPE_BANK0 , },
985
- { "hist_128_255bytes" , 4 , 0x0a , STATS_TYPE_BANK0 , },
986
- { "hist_256_511bytes" , 4 , 0x0b , STATS_TYPE_BANK0 , },
987
- { "hist_512_1023bytes" , 4 , 0x0c , STATS_TYPE_BANK0 , },
988
- { "hist_1024_max_bytes" , 4 , 0x0d , STATS_TYPE_BANK0 , },
989
- { "sw_in_discards" , 4 , 0x10 , STATS_TYPE_PORT , },
990
- { "sw_in_filtered" , 2 , 0x12 , STATS_TYPE_PORT , },
991
- { "sw_out_filtered" , 2 , 0x13 , STATS_TYPE_PORT , },
992
- { "in_discards" , 4 , 0x00 , STATS_TYPE_BANK1 , },
993
- { "in_filtered" , 4 , 0x01 , STATS_TYPE_BANK1 , },
994
- { "in_accepted" , 4 , 0x02 , STATS_TYPE_BANK1 , },
995
- { "in_bad_accepted" , 4 , 0x03 , STATS_TYPE_BANK1 , },
996
- { "in_good_avb_class_a" , 4 , 0x04 , STATS_TYPE_BANK1 , },
997
- { "in_good_avb_class_b" , 4 , 0x05 , STATS_TYPE_BANK1 , },
998
- { "in_bad_avb_class_a" , 4 , 0x06 , STATS_TYPE_BANK1 , },
999
- { "in_bad_avb_class_b" , 4 , 0x07 , STATS_TYPE_BANK1 , },
1000
- { "tcam_counter_0" , 4 , 0x08 , STATS_TYPE_BANK1 , },
1001
- { "tcam_counter_1" , 4 , 0x09 , STATS_TYPE_BANK1 , },
1002
- { "tcam_counter_2" , 4 , 0x0a , STATS_TYPE_BANK1 , },
1003
- { "tcam_counter_3" , 4 , 0x0b , STATS_TYPE_BANK1 , },
1004
- { "in_da_unknown" , 4 , 0x0e , STATS_TYPE_BANK1 , },
1005
- { "in_management" , 4 , 0x0f , STATS_TYPE_BANK1 , },
1006
- { "out_queue_0" , 4 , 0x10 , STATS_TYPE_BANK1 , },
1007
- { "out_queue_1" , 4 , 0x11 , STATS_TYPE_BANK1 , },
1008
- { "out_queue_2" , 4 , 0x12 , STATS_TYPE_BANK1 , },
1009
- { "out_queue_3" , 4 , 0x13 , STATS_TYPE_BANK1 , },
1010
- { "out_queue_4" , 4 , 0x14 , STATS_TYPE_BANK1 , },
1011
- { "out_queue_5" , 4 , 0x15 , STATS_TYPE_BANK1 , },
1012
- { "out_queue_6" , 4 , 0x16 , STATS_TYPE_BANK1 , },
1013
- { "out_queue_7" , 4 , 0x17 , STATS_TYPE_BANK1 , },
1014
- { "out_cut_through" , 4 , 0x18 , STATS_TYPE_BANK1 , },
1015
- { "out_octets_a" , 4 , 0x1a , STATS_TYPE_BANK1 , },
1016
- { "out_octets_b" , 4 , 0x1b , STATS_TYPE_BANK1 , },
1017
- { "out_management" , 4 , 0x1f , STATS_TYPE_BANK1 , },
958
+ #define MV88E6XXX_HW_STAT_MAPPER (_fn ) \
959
+ _fn(in_good_octets, 8, 0x00, STATS_TYPE_BANK0), \
960
+ _fn(in_bad_octets, 4, 0x02, STATS_TYPE_BANK0), \
961
+ _fn(in_unicast, 4, 0x04, STATS_TYPE_BANK0), \
962
+ _fn(in_broadcasts, 4, 0x06, STATS_TYPE_BANK0), \
963
+ _fn(in_multicasts, 4, 0x07, STATS_TYPE_BANK0), \
964
+ _fn(in_pause, 4, 0x16, STATS_TYPE_BANK0), \
965
+ _fn(in_undersize, 4, 0x18, STATS_TYPE_BANK0), \
966
+ _fn(in_fragments, 4, 0x19, STATS_TYPE_BANK0), \
967
+ _fn(in_oversize, 4, 0x1a, STATS_TYPE_BANK0), \
968
+ _fn(in_jabber, 4, 0x1b, STATS_TYPE_BANK0), \
969
+ _fn(in_rx_error, 4, 0x1c, STATS_TYPE_BANK0), \
970
+ _fn(in_fcs_error, 4, 0x1d, STATS_TYPE_BANK0), \
971
+ _fn(out_octets, 8, 0x0e, STATS_TYPE_BANK0), \
972
+ _fn(out_unicast, 4, 0x10, STATS_TYPE_BANK0), \
973
+ _fn(out_broadcasts, 4, 0x13, STATS_TYPE_BANK0), \
974
+ _fn(out_multicasts, 4, 0x12, STATS_TYPE_BANK0), \
975
+ _fn(out_pause, 4, 0x15, STATS_TYPE_BANK0), \
976
+ _fn(excessive, 4, 0x11, STATS_TYPE_BANK0), \
977
+ _fn(collisions, 4, 0x1e, STATS_TYPE_BANK0), \
978
+ _fn(deferred, 4, 0x05, STATS_TYPE_BANK0), \
979
+ _fn(single, 4, 0x14, STATS_TYPE_BANK0), \
980
+ _fn(multiple, 4, 0x17, STATS_TYPE_BANK0), \
981
+ _fn(out_fcs_error, 4, 0x03, STATS_TYPE_BANK0), \
982
+ _fn(late, 4, 0x1f, STATS_TYPE_BANK0), \
983
+ _fn(hist_64bytes, 4, 0x08, STATS_TYPE_BANK0), \
984
+ _fn(hist_65_127bytes, 4, 0x09, STATS_TYPE_BANK0), \
985
+ _fn(hist_128_255bytes, 4, 0x0a, STATS_TYPE_BANK0), \
986
+ _fn(hist_256_511bytes, 4, 0x0b, STATS_TYPE_BANK0), \
987
+ _fn(hist_512_1023bytes, 4, 0x0c, STATS_TYPE_BANK0), \
988
+ _fn(hist_1024_max_bytes, 4, 0x0d, STATS_TYPE_BANK0), \
989
+ _fn(sw_in_discards, 4, 0x10, STATS_TYPE_PORT), \
990
+ _fn(sw_in_filtered, 2, 0x12, STATS_TYPE_PORT), \
991
+ _fn(sw_out_filtered, 2, 0x13, STATS_TYPE_PORT), \
992
+ _fn(in_discards, 4, 0x00, STATS_TYPE_BANK1), \
993
+ _fn(in_filtered, 4, 0x01, STATS_TYPE_BANK1), \
994
+ _fn(in_accepted, 4, 0x02, STATS_TYPE_BANK1), \
995
+ _fn(in_bad_accepted, 4, 0x03, STATS_TYPE_BANK1), \
996
+ _fn(in_good_avb_class_a, 4, 0x04, STATS_TYPE_BANK1), \
997
+ _fn(in_good_avb_class_b, 4, 0x05, STATS_TYPE_BANK1), \
998
+ _fn(in_bad_avb_class_a, 4, 0x06, STATS_TYPE_BANK1), \
999
+ _fn(in_bad_avb_class_b, 4, 0x07, STATS_TYPE_BANK1), \
1000
+ _fn(tcam_counter_0, 4, 0x08, STATS_TYPE_BANK1), \
1001
+ _fn(tcam_counter_1, 4, 0x09, STATS_TYPE_BANK1), \
1002
+ _fn(tcam_counter_2, 4, 0x0a, STATS_TYPE_BANK1), \
1003
+ _fn(tcam_counter_3, 4, 0x0b, STATS_TYPE_BANK1), \
1004
+ _fn(in_da_unknown, 4, 0x0e, STATS_TYPE_BANK1), \
1005
+ _fn(in_management, 4, 0x0f, STATS_TYPE_BANK1), \
1006
+ _fn(out_queue_0, 4, 0x10, STATS_TYPE_BANK1), \
1007
+ _fn(out_queue_1, 4, 0x11, STATS_TYPE_BANK1), \
1008
+ _fn(out_queue_2, 4, 0x12, STATS_TYPE_BANK1), \
1009
+ _fn(out_queue_3, 4, 0x13, STATS_TYPE_BANK1), \
1010
+ _fn(out_queue_4, 4, 0x14, STATS_TYPE_BANK1), \
1011
+ _fn(out_queue_5, 4, 0x15, STATS_TYPE_BANK1), \
1012
+ _fn(out_queue_6, 4, 0x16, STATS_TYPE_BANK1), \
1013
+ _fn(out_queue_7, 4, 0x17, STATS_TYPE_BANK1), \
1014
+ _fn(out_cut_through, 4, 0x18, STATS_TYPE_BANK1), \
1015
+ _fn(out_octets_a, 4, 0x1a, STATS_TYPE_BANK1), \
1016
+ _fn(out_octets_b, 4, 0x1b, STATS_TYPE_BANK1), \
1017
+ _fn(out_management, 4, 0x1f, STATS_TYPE_BANK1), \
1018
+ /* */
1019
+
1020
+ #define MV88E6XXX_HW_STAT_ENTRY (_string , _size , _reg , _type ) \
1021
+ { #_string, _size, _reg, _type }
1022
+ static const struct mv88e6xxx_hw_stat mv88e6xxx_hw_stats [] = {
1023
+ MV88E6XXX_HW_STAT_MAPPER (MV88E6XXX_HW_STAT_ENTRY )
1024
+ };
1025
+
1026
+ #define MV88E6XXX_HW_STAT_ENUM (_string , _size , _reg , _type ) \
1027
+ MV88E6XXX_HW_STAT_ID_ ## _string
1028
+ enum mv88e6xxx_hw_stat_id {
1029
+ MV88E6XXX_HW_STAT_MAPPER (MV88E6XXX_HW_STAT_ENUM )
1018
1030
};
1019
1031
1020
1032
static uint64_t _mv88e6xxx_get_ethtool_stat (struct mv88e6xxx_chip * chip ,
@@ -1061,7 +1073,7 @@ static uint64_t _mv88e6xxx_get_ethtool_stat(struct mv88e6xxx_chip *chip,
1061
1073
static int mv88e6xxx_stats_get_strings (struct mv88e6xxx_chip * chip ,
1062
1074
uint8_t * data , int types )
1063
1075
{
1064
- struct mv88e6xxx_hw_stat * stat ;
1076
+ const struct mv88e6xxx_hw_stat * stat ;
1065
1077
int i , j ;
1066
1078
1067
1079
for (i = 0 , j = 0 ; i < ARRAY_SIZE (mv88e6xxx_hw_stats ); i ++ ) {
@@ -1142,7 +1154,7 @@ static void mv88e6xxx_get_strings(struct dsa_switch *ds, int port,
1142
1154
static int mv88e6xxx_stats_get_sset_count (struct mv88e6xxx_chip * chip ,
1143
1155
int types )
1144
1156
{
1145
- struct mv88e6xxx_hw_stat * stat ;
1157
+ const struct mv88e6xxx_hw_stat * stat ;
1146
1158
int i , j ;
1147
1159
1148
1160
for (i = 0 , j = 0 ; i < ARRAY_SIZE (mv88e6xxx_hw_stats ); i ++ ) {
@@ -1269,7 +1281,7 @@ static size_t mv88e6xxx_stats_get_stat(struct mv88e6xxx_chip *chip, int port,
1269
1281
static size_t mv88e6xxx_stats_get_stats (struct mv88e6xxx_chip * chip , int port ,
1270
1282
uint64_t * data )
1271
1283
{
1272
- struct mv88e6xxx_hw_stat * stat ;
1284
+ const struct mv88e6xxx_hw_stat * stat ;
1273
1285
size_t i , j ;
1274
1286
1275
1287
for (i = 0 , j = 0 ; i < ARRAY_SIZE (mv88e6xxx_hw_stats ); i ++ ) {
0 commit comments