root/drivers/infiniband/hw/mana/counters.h
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2024 Microsoft Corporation. All rights reserved.
 */

#ifndef _COUNTERS_H_
#define _COUNTERS_H_

#include "mana_ib.h"

enum mana_ib_port_counters {
        MANA_IB_REQUESTER_TIMEOUT,
        MANA_IB_REQUESTER_OOS_NAK,
        MANA_IB_REQUESTER_RNR_NAK,
        MANA_IB_RESPONDER_RNR_NAK,
        MANA_IB_RESPONDER_OOS,
        MANA_IB_RESPONDER_DUP_REQUEST,
        MANA_IB_REQUESTER_IMPLICIT_NAK,
        MANA_IB_REQUESTER_READRESP_PSN_MISMATCH,
        MANA_IB_NAK_INV_REQ,
        MANA_IB_NAK_ACCESS_ERR,
        MANA_IB_NAK_OPP_ERR,
        MANA_IB_NAK_INV_READ,
        MANA_IB_RESPONDER_LOCAL_LEN_ERR,
        MANA_IB_REQUESTOR_LOCAL_PROT_ERR,
        MANA_IB_RESPONDER_REM_ACCESS_ERR,
        MANA_IB_RESPONDER_LOCAL_QP_ERR,
        MANA_IB_RESPONDER_MALFORMED_WQE,
        MANA_IB_GENERAL_HW_ERR,
        MANA_IB_REQUESTER_RNR_NAK_RETRIES_EXCEEDED,
        MANA_IB_REQUESTER_RETRIES_EXCEEDED,
        MANA_IB_TOTAL_FATAL_ERR,
        MANA_IB_RECEIVED_CNPS,
        MANA_IB_NUM_QPS_CONGESTED,
        MANA_IB_RATE_INC_EVENTS,
        MANA_IB_NUM_QPS_RECOVERED,
        MANA_IB_CURRENT_RATE,
        MANA_IB_DUP_RX_REQ,
        MANA_IB_TX_BYTES,
        MANA_IB_RX_BYTES,
        MANA_IB_RX_SEND_REQ,
        MANA_IB_RX_WRITE_REQ,
        MANA_IB_RX_READ_REQ,
        MANA_IB_TX_PKT,
        MANA_IB_RX_PKT,
};

enum mana_ib_device_counters {
        MANA_IB_SENT_CNPS,
        MANA_IB_RECEIVED_ECNS,
        MANA_IB_RECEIVED_CNP_COUNT,
        MANA_IB_QP_CONGESTED_EVENTS,
        MANA_IB_QP_RECOVERED_EVENTS,
        MANA_IB_DEV_RATE_INC_EVENTS,
};

struct rdma_hw_stats *mana_ib_alloc_hw_port_stats(struct ib_device *ibdev,
                                                  u32 port_num);
struct rdma_hw_stats *mana_ib_alloc_hw_device_stats(struct ib_device *ibdev);
int mana_ib_get_hw_stats(struct ib_device *ibdev, struct rdma_hw_stats *stats,
                         u32 port_num, int index);
#endif /* _COUNTERS_H_ */