| 1 |
|
| 2 |
|
| 3 |
|
| 4 | #ifndef _IONIC_STATS_H_
|
| 5 | #define _IONIC_STATS_H_
|
| 6 |
|
| 7 | #define IONIC_STAT_INVALID (cpu_to_le64(~0ULL))
|
| 8 |
|
| 9 | #define IONIC_STAT_TO_OFFSET(type, stat_name) (offsetof(type, stat_name))
|
| 10 |
|
| 11 | #define IONIC_STAT_DESC(type, stat_name) { \
|
| 12 | .name = #stat_name, \
|
| 13 | .offset = IONIC_STAT_TO_OFFSET(type, stat_name) \
|
| 14 | }
|
| 15 |
|
| 16 | #define IONIC_PORT_STAT_DESC(stat_name) \
|
| 17 | IONIC_STAT_DESC(struct ionic_port_stats, stat_name)
|
| 18 |
|
| 19 | #define IONIC_LIF_STAT_DESC(stat_name) \
|
| 20 | IONIC_STAT_DESC(struct ionic_lif_sw_stats, stat_name)
|
| 21 |
|
| 22 | #define IONIC_TX_STAT_DESC(stat_name) \
|
| 23 | IONIC_STAT_DESC(struct ionic_tx_stats, stat_name)
|
| 24 |
|
| 25 | #define IONIC_RX_STAT_DESC(stat_name) \
|
| 26 | IONIC_STAT_DESC(struct ionic_rx_stats, stat_name)
|
| 27 |
|
| 28 | #define IONIC_TX_Q_STAT_DESC(stat_name) \
|
| 29 | IONIC_STAT_DESC(struct ionic_queue, stat_name)
|
| 30 |
|
| 31 | #define IONIC_CQ_STAT_DESC(stat_name) \
|
| 32 | IONIC_STAT_DESC(struct ionic_cq, stat_name)
|
| 33 |
|
| 34 | #define IONIC_INTR_STAT_DESC(stat_name) \
|
| 35 | IONIC_STAT_DESC(struct ionic_intr_info, stat_name)
|
| 36 |
|
| 37 | #define IONIC_NAPI_STAT_DESC(stat_name) \
|
| 38 | IONIC_STAT_DESC(struct ionic_napi_stats, stat_name)
|
| 39 |
|
| 40 |
|
| 41 | struct ionic_stats_group_intf {
|
| 42 | void (*get_strings)(struct ionic_lif *lif, u8 **buf);
|
| 43 | void (*get_values)(struct ionic_lif *lif, u64 **buf);
|
| 44 | u64 (*get_count)(struct ionic_lif *lif);
|
| 45 | };
|
| 46 |
|
| 47 | extern const struct ionic_stats_group_intf ionic_stats_groups[];
|
| 48 | extern const int ionic_num_stats_grps;
|
| 49 |
|
| 50 | #define IONIC_READ_STAT64(base_ptr, desc_ptr) \
|
| 51 | (*((u64 *)(((u8 *)(base_ptr)) + (desc_ptr)->offset)))
|
| 52 |
|
| 53 | #define IONIC_READ_STAT_LE64(base_ptr, desc_ptr) \
|
| 54 | __le64_to_cpu(*((__le64 *)(((u8 *)(base_ptr)) + (desc_ptr)->offset)))
|
| 55 |
|
| 56 | struct ionic_stat_desc {
|
| 57 | char name[ETH_GSTRING_LEN];
|
| 58 | u64 offset;
|
| 59 | };
|
| 60 |
|
| 61 | #endif
|