ionic_stats.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright(c) 2017 - 2019 Pensando Systems, Inc */
  3. #ifndef _IONIC_STATS_H_
  4. #define _IONIC_STATS_H_
  5. #define IONIC_STAT_TO_OFFSET(type, stat_name) (offsetof(type, stat_name))
  6. #define IONIC_STAT_DESC(type, stat_name) { \
  7. .name = #stat_name, \
  8. .offset = IONIC_STAT_TO_OFFSET(type, stat_name) \
  9. }
  10. #define IONIC_PORT_STAT_DESC(stat_name) \
  11. IONIC_STAT_DESC(struct ionic_port_stats, stat_name)
  12. #define IONIC_LIF_STAT_DESC(stat_name) \
  13. IONIC_STAT_DESC(struct ionic_lif_sw_stats, stat_name)
  14. #define IONIC_TX_STAT_DESC(stat_name) \
  15. IONIC_STAT_DESC(struct ionic_tx_stats, stat_name)
  16. #define IONIC_RX_STAT_DESC(stat_name) \
  17. IONIC_STAT_DESC(struct ionic_rx_stats, stat_name)
  18. #define IONIC_TX_Q_STAT_DESC(stat_name) \
  19. IONIC_STAT_DESC(struct ionic_queue, stat_name)
  20. #define IONIC_CQ_STAT_DESC(stat_name) \
  21. IONIC_STAT_DESC(struct ionic_cq, stat_name)
  22. #define IONIC_INTR_STAT_DESC(stat_name) \
  23. IONIC_STAT_DESC(struct ionic_intr_info, stat_name)
  24. #define IONIC_NAPI_STAT_DESC(stat_name) \
  25. IONIC_STAT_DESC(struct ionic_napi_stats, stat_name)
  26. /* Interface structure for a particalar stats group */
  27. struct ionic_stats_group_intf {
  28. void (*get_strings)(struct ionic_lif *lif, u8 **buf);
  29. void (*get_values)(struct ionic_lif *lif, u64 **buf);
  30. u64 (*get_count)(struct ionic_lif *lif);
  31. };
  32. extern const struct ionic_stats_group_intf ionic_stats_groups[];
  33. extern const int ionic_num_stats_grps;
  34. #define IONIC_READ_STAT64(base_ptr, desc_ptr) \
  35. (*((u64 *)(((u8 *)(base_ptr)) + (desc_ptr)->offset)))
  36. #define IONIC_READ_STAT_LE64(base_ptr, desc_ptr) \
  37. __le64_to_cpu(*((__le64 *)(((u8 *)(base_ptr)) + (desc_ptr)->offset)))
  38. struct ionic_stat_desc {
  39. char name[ETH_GSTRING_LEN];
  40. u64 offset;
  41. };
  42. #endif /* _IONIC_STATS_H_ */