@@ -95,11 +95,27 @@ struct mana_ib_cq {
9595 mana_handle_t cq_handle ;
9696};
9797
98+ enum mana_rc_queue_type {
99+ MANA_RC_SEND_QUEUE_REQUESTER = 0 ,
100+ MANA_RC_SEND_QUEUE_RESPONDER ,
101+ MANA_RC_SEND_QUEUE_FMR ,
102+ MANA_RC_RECV_QUEUE_REQUESTER ,
103+ MANA_RC_RECV_QUEUE_RESPONDER ,
104+ MANA_RC_QUEUE_TYPE_MAX ,
105+ };
106+
107+ struct mana_ib_rc_qp {
108+ struct mana_ib_queue queues [MANA_RC_QUEUE_TYPE_MAX ];
109+ };
110+
98111struct mana_ib_qp {
99112 struct ib_qp ibqp ;
100113
101114 mana_handle_t qp_handle ;
102- struct mana_ib_queue raw_sq ;
115+ union {
116+ struct mana_ib_queue raw_sq ;
117+ struct mana_ib_rc_qp rc_qp ;
118+ };
103119
104120 /* The port on the IB device, starting with 1 */
105121 u32 port ;
@@ -122,6 +138,8 @@ enum mana_ib_command_code {
122138 MANA_IB_CONFIG_MAC_ADDR = 0x30005 ,
123139 MANA_IB_CREATE_CQ = 0x30008 ,
124140 MANA_IB_DESTROY_CQ = 0x30009 ,
141+ MANA_IB_CREATE_RC_QP = 0x3000a ,
142+ MANA_IB_DESTROY_RC_QP = 0x3000b ,
125143};
126144
127145struct mana_ib_query_adapter_caps_req {
@@ -230,6 +248,40 @@ struct mana_rnic_destroy_cq_resp {
230248 struct gdma_resp_hdr hdr ;
231249}; /* HW Data */
232250
251+ struct mana_rnic_create_qp_req {
252+ struct gdma_req_hdr hdr ;
253+ mana_handle_t adapter ;
254+ mana_handle_t pd_handle ;
255+ mana_handle_t send_cq_handle ;
256+ mana_handle_t recv_cq_handle ;
257+ u64 dma_region [MANA_RC_QUEUE_TYPE_MAX ];
258+ u64 deprecated [2 ];
259+ u64 flags ;
260+ u32 doorbell_page ;
261+ u32 max_send_wr ;
262+ u32 max_recv_wr ;
263+ u32 max_send_sge ;
264+ u32 max_recv_sge ;
265+ u32 reserved ;
266+ }; /* HW Data */
267+
268+ struct mana_rnic_create_qp_resp {
269+ struct gdma_resp_hdr hdr ;
270+ mana_handle_t rc_qp_handle ;
271+ u32 queue_ids [MANA_RC_QUEUE_TYPE_MAX ];
272+ u32 reserved ;
273+ }; /* HW Data*/
274+
275+ struct mana_rnic_destroy_rc_qp_req {
276+ struct gdma_req_hdr hdr ;
277+ mana_handle_t adapter ;
278+ mana_handle_t rc_qp_handle ;
279+ }; /* HW Data */
280+
281+ struct mana_rnic_destroy_rc_qp_resp {
282+ struct gdma_resp_hdr hdr ;
283+ }; /* HW Data */
284+
233285static inline struct gdma_context * mdev_to_gc (struct mana_ib_dev * mdev )
234286{
235287 return mdev -> gdma_dev -> gdma_context ;
@@ -354,4 +406,8 @@ int mana_ib_gd_config_mac(struct mana_ib_dev *mdev, enum mana_ib_addr_op op, u8
354406int mana_ib_gd_create_cq (struct mana_ib_dev * mdev , struct mana_ib_cq * cq , u32 doorbell );
355407
356408int mana_ib_gd_destroy_cq (struct mana_ib_dev * mdev , struct mana_ib_cq * cq );
409+
410+ int mana_ib_gd_create_rc_qp (struct mana_ib_dev * mdev , struct mana_ib_qp * qp ,
411+ struct ib_qp_init_attr * attr , u32 doorbell , u64 flags );
412+ int mana_ib_gd_destroy_rc_qp (struct mana_ib_dev * mdev , struct mana_ib_qp * qp );
357413#endif
0 commit comments