IB/mlx5: Modify MAD reading counters method to use counter registers
Modify mlx5_ib_process_mad to use PPCNT and query_vport commands instead of MAD_IFC, as MAD_IFC is deprecated on new firmware versions (and doesn't support RoCE anyway). Traffic counters exist in both 32-bit and 64-bit forms. Declaring support of extended coutners results in traffic counters to be read in their 64-bit form only via the query_vport command. Error counters exist only in 32-bit form and read via PPCNT command. This commit also adds counters support in RoCE. Signed-off-by: Meny Yossefi <menyy@mellanox.com> Signed-off-by: Majd Dibbiny <majd@mellanox.com> Reviewed-by: Matan Barak <matanb@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:

committed by
Doug Ledford

parent
1c64bf6f29
commit
3efd9a1121
@@ -105,6 +105,29 @@ __mlx5_mask(typ, fld))
|
||||
___t; \
|
||||
})
|
||||
|
||||
/* Big endian getters */
|
||||
#define MLX5_GET64_BE(typ, p, fld) (*((__be64 *)(p) +\
|
||||
__mlx5_64_off(typ, fld)))
|
||||
|
||||
#define MLX5_GET_BE(type_t, typ, p, fld) ({ \
|
||||
type_t tmp; \
|
||||
switch (sizeof(tmp)) { \
|
||||
case sizeof(u8): \
|
||||
tmp = (__force type_t)MLX5_GET(typ, p, fld); \
|
||||
break; \
|
||||
case sizeof(u16): \
|
||||
tmp = (__force type_t)cpu_to_be16(MLX5_GET(typ, p, fld)); \
|
||||
break; \
|
||||
case sizeof(u32): \
|
||||
tmp = (__force type_t)cpu_to_be32(MLX5_GET(typ, p, fld)); \
|
||||
break; \
|
||||
case sizeof(u64): \
|
||||
tmp = (__force type_t)MLX5_GET64_BE(typ, p, fld); \
|
||||
break; \
|
||||
} \
|
||||
tmp; \
|
||||
})
|
||||
|
||||
enum {
|
||||
MLX5_MAX_COMMANDS = 32,
|
||||
MLX5_CMD_DATA_BLOCK_SIZE = 512,
|
||||
|
Reference in New Issue
Block a user