Skip to content

Commit 915cc7a

Browse files
mustafakismailjgunthorpe
authored andcommitted
RDMA/irdma: Add miscellaneous utility definitions
Add miscellaneous utility functions and headers. Link: https://lore.kernel.org/r/20210602205138.889-13-shiraz.saleem@intel.com Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com> Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
1 parent 551c46e commit 915cc7a

File tree

4 files changed

+2814
-0
lines changed

4 files changed

+2814
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */
2+
/* Copyright (c) 2015 - 2021 Intel Corporation */
3+
#ifndef IRDMA_OSDEP_H
4+
#define IRDMA_OSDEP_H
5+
6+
#include <linux/pci.h>
7+
#include <linux/bitfield.h>
8+
#include <crypto/hash.h>
9+
#include <rdma/ib_verbs.h>
10+
11+
#define STATS_TIMER_DELAY 60000
12+
13+
struct irdma_dma_info {
14+
dma_addr_t *dmaaddrs;
15+
};
16+
17+
struct irdma_dma_mem {
18+
void *va;
19+
dma_addr_t pa;
20+
u32 size;
21+
} __packed;
22+
23+
struct irdma_virt_mem {
24+
void *va;
25+
u32 size;
26+
} __packed;
27+
28+
struct irdma_sc_vsi;
29+
struct irdma_sc_dev;
30+
struct irdma_sc_qp;
31+
struct irdma_puda_buf;
32+
struct irdma_puda_cmpl_info;
33+
struct irdma_update_sds_info;
34+
struct irdma_hmc_fcn_info;
35+
struct irdma_manage_vf_pble_info;
36+
struct irdma_hw;
37+
struct irdma_pci_f;
38+
39+
struct ib_device *to_ibdev(struct irdma_sc_dev *dev);
40+
u8 __iomem *irdma_get_hw_addr(void *dev);
41+
void irdma_ieq_mpa_crc_ae(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp);
42+
enum irdma_status_code irdma_vf_wait_vchnl_resp(struct irdma_sc_dev *dev);
43+
bool irdma_vf_clear_to_send(struct irdma_sc_dev *dev);
44+
void irdma_add_dev_ref(struct irdma_sc_dev *dev);
45+
void irdma_put_dev_ref(struct irdma_sc_dev *dev);
46+
enum irdma_status_code irdma_ieq_check_mpacrc(struct shash_desc *desc,
47+
void *addr, u32 len, u32 val);
48+
struct irdma_sc_qp *irdma_ieq_get_qp(struct irdma_sc_dev *dev,
49+
struct irdma_puda_buf *buf);
50+
void irdma_send_ieq_ack(struct irdma_sc_qp *qp);
51+
void irdma_ieq_update_tcpip_info(struct irdma_puda_buf *buf, u16 len,
52+
u32 seqnum);
53+
void irdma_free_hash_desc(struct shash_desc *hash_desc);
54+
enum irdma_status_code irdma_init_hash_desc(struct shash_desc **hash_desc);
55+
enum irdma_status_code
56+
irdma_puda_get_tcpip_info(struct irdma_puda_cmpl_info *info,
57+
struct irdma_puda_buf *buf);
58+
enum irdma_status_code irdma_cqp_sds_cmd(struct irdma_sc_dev *dev,
59+
struct irdma_update_sds_info *info);
60+
enum irdma_status_code
61+
irdma_cqp_manage_hmc_fcn_cmd(struct irdma_sc_dev *dev,
62+
struct irdma_hmc_fcn_info *hmcfcninfo,
63+
u16 *pmf_idx);
64+
enum irdma_status_code
65+
irdma_cqp_query_fpm_val_cmd(struct irdma_sc_dev *dev,
66+
struct irdma_dma_mem *val_mem, u8 hmc_fn_id);
67+
enum irdma_status_code
68+
irdma_cqp_commit_fpm_val_cmd(struct irdma_sc_dev *dev,
69+
struct irdma_dma_mem *val_mem, u8 hmc_fn_id);
70+
enum irdma_status_code irdma_alloc_query_fpm_buf(struct irdma_sc_dev *dev,
71+
struct irdma_dma_mem *mem);
72+
void *irdma_remove_cqp_head(struct irdma_sc_dev *dev);
73+
void irdma_term_modify_qp(struct irdma_sc_qp *qp, u8 next_state, u8 term,
74+
u8 term_len);
75+
void irdma_terminate_done(struct irdma_sc_qp *qp, int timeout_occurred);
76+
void irdma_terminate_start_timer(struct irdma_sc_qp *qp);
77+
void irdma_terminate_del_timer(struct irdma_sc_qp *qp);
78+
void irdma_hw_stats_start_timer(struct irdma_sc_vsi *vsi);
79+
void irdma_hw_stats_stop_timer(struct irdma_sc_vsi *vsi);
80+
void wr32(struct irdma_hw *hw, u32 reg, u32 val);
81+
u32 rd32(struct irdma_hw *hw, u32 reg);
82+
u64 rd64(struct irdma_hw *hw, u32 reg);
83+
enum irdma_status_code irdma_map_vm_page_list(struct irdma_hw *hw, void *va,
84+
dma_addr_t *pg_dma, u32 pg_cnt);
85+
void irdma_unmap_vm_page_list(struct irdma_hw *hw, dma_addr_t *pg_dma, u32 pg_cnt);
86+
#endif /* IRDMA_OSDEP_H */
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */
2+
/* Copyright (c) 2016 - 2021 Intel Corporation */
3+
#ifndef IRDMA_PROTOS_H
4+
#define IRDMA_PROTOS_H
5+
6+
#define PAUSE_TIMER_VAL 0xffff
7+
#define REFRESH_THRESHOLD 0x7fff
8+
#define HIGH_THRESHOLD 0x800
9+
#define LOW_THRESHOLD 0x200
10+
#define ALL_TC2PFC 0xff
11+
#define CQP_COMPL_WAIT_TIME_MS 10
12+
#define CQP_TIMEOUT_THRESHOLD 500
13+
14+
/* init operations */
15+
enum irdma_status_code irdma_sc_dev_init(enum irdma_vers ver,
16+
struct irdma_sc_dev *dev,
17+
struct irdma_device_init_info *info);
18+
void irdma_sc_rt_init(struct irdma_sc_dev *dev);
19+
void irdma_sc_cqp_post_sq(struct irdma_sc_cqp *cqp);
20+
__le64 *irdma_sc_cqp_get_next_send_wqe(struct irdma_sc_cqp *cqp, u64 scratch);
21+
enum irdma_status_code
22+
irdma_sc_mr_fast_register(struct irdma_sc_qp *qp,
23+
struct irdma_fast_reg_stag_info *info, bool post_sq);
24+
/* HMC/FPM functions */
25+
enum irdma_status_code irdma_sc_init_iw_hmc(struct irdma_sc_dev *dev,
26+
u8 hmc_fn_id);
27+
/* stats misc */
28+
enum irdma_status_code
29+
irdma_cqp_gather_stats_cmd(struct irdma_sc_dev *dev,
30+
struct irdma_vsi_pestat *pestat, bool wait);
31+
void irdma_cqp_gather_stats_gen1(struct irdma_sc_dev *dev,
32+
struct irdma_vsi_pestat *pestat);
33+
void irdma_hw_stats_read_all(struct irdma_vsi_pestat *stats,
34+
struct irdma_dev_hw_stats *stats_values,
35+
u64 *hw_stats_regs_32, u64 *hw_stats_regs_64,
36+
u8 hw_rev);
37+
enum irdma_status_code
38+
irdma_cqp_ws_node_cmd(struct irdma_sc_dev *dev, u8 cmd,
39+
struct irdma_ws_node_info *node_info);
40+
enum irdma_status_code irdma_cqp_up_map_cmd(struct irdma_sc_dev *dev, u8 cmd,
41+
struct irdma_up_info *map_info);
42+
enum irdma_status_code irdma_cqp_ceq_cmd(struct irdma_sc_dev *dev,
43+
struct irdma_sc_ceq *sc_ceq, u8 op);
44+
enum irdma_status_code irdma_cqp_aeq_cmd(struct irdma_sc_dev *dev,
45+
struct irdma_sc_aeq *sc_aeq, u8 op);
46+
enum irdma_status_code
47+
irdma_cqp_stats_inst_cmd(struct irdma_sc_vsi *vsi, u8 cmd,
48+
struct irdma_stats_inst_info *stats_info);
49+
u16 irdma_alloc_ws_node_id(struct irdma_sc_dev *dev);
50+
void irdma_free_ws_node_id(struct irdma_sc_dev *dev, u16 node_id);
51+
void irdma_update_stats(struct irdma_dev_hw_stats *hw_stats,
52+
struct irdma_gather_stats *gather_stats,
53+
struct irdma_gather_stats *last_gather_stats);
54+
/* vsi functions */
55+
enum irdma_status_code irdma_vsi_stats_init(struct irdma_sc_vsi *vsi,
56+
struct irdma_vsi_stats_info *info);
57+
void irdma_vsi_stats_free(struct irdma_sc_vsi *vsi);
58+
void irdma_sc_vsi_init(struct irdma_sc_vsi *vsi,
59+
struct irdma_vsi_init_info *info);
60+
enum irdma_status_code irdma_sc_add_cq_ctx(struct irdma_sc_ceq *ceq,
61+
struct irdma_sc_cq *cq);
62+
void irdma_sc_remove_cq_ctx(struct irdma_sc_ceq *ceq, struct irdma_sc_cq *cq);
63+
/* misc L2 param change functions */
64+
void irdma_change_l2params(struct irdma_sc_vsi *vsi,
65+
struct irdma_l2params *l2params);
66+
void irdma_sc_suspend_resume_qps(struct irdma_sc_vsi *vsi, u8 suspend);
67+
enum irdma_status_code irdma_cqp_qp_suspend_resume(struct irdma_sc_qp *qp,
68+
u8 cmd);
69+
void irdma_qp_add_qos(struct irdma_sc_qp *qp);
70+
void irdma_qp_rem_qos(struct irdma_sc_qp *qp);
71+
struct irdma_sc_qp *irdma_get_qp_from_list(struct list_head *head,
72+
struct irdma_sc_qp *qp);
73+
void irdma_reinitialize_ieq(struct irdma_sc_vsi *vsi);
74+
u16 irdma_alloc_ws_node_id(struct irdma_sc_dev *dev);
75+
void irdma_free_ws_node_id(struct irdma_sc_dev *dev, u16 node_id);
76+
/* terminate functions*/
77+
void irdma_terminate_send_fin(struct irdma_sc_qp *qp);
78+
79+
void irdma_terminate_connection(struct irdma_sc_qp *qp,
80+
struct irdma_aeqe_info *info);
81+
82+
void irdma_terminate_received(struct irdma_sc_qp *qp,
83+
struct irdma_aeqe_info *info);
84+
/* dynamic memory allocation */
85+
/* misc */
86+
u8 irdma_get_encoded_wqe_size(u32 wqsize, enum irdma_queue_type queue_type);
87+
void irdma_modify_qp_to_err(struct irdma_sc_qp *sc_qp);
88+
enum irdma_status_code
89+
irdma_sc_static_hmc_pages_allocated(struct irdma_sc_cqp *cqp, u64 scratch,
90+
u8 hmc_fn_id, bool post_sq,
91+
bool poll_registers);
92+
enum irdma_status_code irdma_cfg_fpm_val(struct irdma_sc_dev *dev,
93+
u32 qp_count);
94+
enum irdma_status_code irdma_get_rdma_features(struct irdma_sc_dev *dev);
95+
void free_sd_mem(struct irdma_sc_dev *dev);
96+
enum irdma_status_code irdma_process_cqp_cmd(struct irdma_sc_dev *dev,
97+
struct cqp_cmds_info *pcmdinfo);
98+
enum irdma_status_code irdma_process_bh(struct irdma_sc_dev *dev);
99+
enum irdma_status_code irdma_cqp_sds_cmd(struct irdma_sc_dev *dev,
100+
struct irdma_update_sds_info *info);
101+
enum irdma_status_code
102+
irdma_cqp_query_fpm_val_cmd(struct irdma_sc_dev *dev,
103+
struct irdma_dma_mem *val_mem, u8 hmc_fn_id);
104+
enum irdma_status_code
105+
irdma_cqp_commit_fpm_val_cmd(struct irdma_sc_dev *dev,
106+
struct irdma_dma_mem *val_mem, u8 hmc_fn_id);
107+
enum irdma_status_code irdma_alloc_query_fpm_buf(struct irdma_sc_dev *dev,
108+
struct irdma_dma_mem *mem);
109+
enum irdma_status_code
110+
irdma_cqp_manage_hmc_fcn_cmd(struct irdma_sc_dev *dev,
111+
struct irdma_hmc_fcn_info *hmcfcninfo,
112+
u16 *pmf_idx);
113+
void irdma_add_dev_ref(struct irdma_sc_dev *dev);
114+
void irdma_put_dev_ref(struct irdma_sc_dev *dev);
115+
void *irdma_remove_cqp_head(struct irdma_sc_dev *dev);
116+
#endif /* IRDMA_PROTOS_H */
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */
2+
/* Copyright (c) 2015 - 2020 Intel Corporation */
3+
#ifndef IRDMA_STATUS_H
4+
#define IRDMA_STATUS_H
5+
6+
/* Error Codes */
7+
enum irdma_status_code {
8+
IRDMA_SUCCESS = 0,
9+
IRDMA_ERR_NVM = -1,
10+
IRDMA_ERR_NVM_CHECKSUM = -2,
11+
IRDMA_ERR_CFG = -4,
12+
IRDMA_ERR_PARAM = -5,
13+
IRDMA_ERR_DEVICE_NOT_SUPPORTED = -6,
14+
IRDMA_ERR_RESET_FAILED = -7,
15+
IRDMA_ERR_SWFW_SYNC = -8,
16+
IRDMA_ERR_NO_MEMORY = -9,
17+
IRDMA_ERR_BAD_PTR = -10,
18+
IRDMA_ERR_INVALID_PD_ID = -11,
19+
IRDMA_ERR_INVALID_QP_ID = -12,
20+
IRDMA_ERR_INVALID_CQ_ID = -13,
21+
IRDMA_ERR_INVALID_CEQ_ID = -14,
22+
IRDMA_ERR_INVALID_AEQ_ID = -15,
23+
IRDMA_ERR_INVALID_SIZE = -16,
24+
IRDMA_ERR_INVALID_ARP_INDEX = -17,
25+
IRDMA_ERR_INVALID_FPM_FUNC_ID = -18,
26+
IRDMA_ERR_QP_INVALID_MSG_SIZE = -19,
27+
IRDMA_ERR_QP_TOOMANY_WRS_POSTED = -20,
28+
IRDMA_ERR_INVALID_FRAG_COUNT = -21,
29+
IRDMA_ERR_Q_EMPTY = -22,
30+
IRDMA_ERR_INVALID_ALIGNMENT = -23,
31+
IRDMA_ERR_FLUSHED_Q = -24,
32+
IRDMA_ERR_INVALID_PUSH_PAGE_INDEX = -25,
33+
IRDMA_ERR_INVALID_INLINE_DATA_SIZE = -26,
34+
IRDMA_ERR_TIMEOUT = -27,
35+
IRDMA_ERR_OPCODE_MISMATCH = -28,
36+
IRDMA_ERR_CQP_COMPL_ERROR = -29,
37+
IRDMA_ERR_INVALID_VF_ID = -30,
38+
IRDMA_ERR_INVALID_HMCFN_ID = -31,
39+
IRDMA_ERR_BACKING_PAGE_ERROR = -32,
40+
IRDMA_ERR_NO_PBLCHUNKS_AVAILABLE = -33,
41+
IRDMA_ERR_INVALID_PBLE_INDEX = -34,
42+
IRDMA_ERR_INVALID_SD_INDEX = -35,
43+
IRDMA_ERR_INVALID_PAGE_DESC_INDEX = -36,
44+
IRDMA_ERR_INVALID_SD_TYPE = -37,
45+
IRDMA_ERR_MEMCPY_FAILED = -38,
46+
IRDMA_ERR_INVALID_HMC_OBJ_INDEX = -39,
47+
IRDMA_ERR_INVALID_HMC_OBJ_COUNT = -40,
48+
IRDMA_ERR_BUF_TOO_SHORT = -43,
49+
IRDMA_ERR_BAD_IWARP_CQE = -44,
50+
IRDMA_ERR_NVM_BLANK_MODE = -45,
51+
IRDMA_ERR_NOT_IMPL = -46,
52+
IRDMA_ERR_PE_DOORBELL_NOT_ENA = -47,
53+
IRDMA_ERR_NOT_READY = -48,
54+
IRDMA_NOT_SUPPORTED = -49,
55+
IRDMA_ERR_FIRMWARE_API_VER = -50,
56+
IRDMA_ERR_RING_FULL = -51,
57+
IRDMA_ERR_MPA_CRC = -61,
58+
IRDMA_ERR_NO_TXBUFS = -62,
59+
IRDMA_ERR_SEQ_NUM = -63,
60+
IRDMA_ERR_list_empty = -64,
61+
IRDMA_ERR_INVALID_MAC_ADDR = -65,
62+
IRDMA_ERR_BAD_STAG = -66,
63+
IRDMA_ERR_CQ_COMPL_ERROR = -67,
64+
IRDMA_ERR_Q_DESTROYED = -68,
65+
IRDMA_ERR_INVALID_FEAT_CNT = -69,
66+
IRDMA_ERR_REG_CQ_FULL = -70,
67+
IRDMA_ERR_VF_MSG_ERROR = -71,
68+
IRDMA_ERR_NO_INTR = -72,
69+
IRDMA_ERR_REG_QSET = -73,
70+
};
71+
#endif /* IRDMA_STATUS_H */

0 commit comments

Comments
 (0)