.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ |
---|
1 | 2 | /* QLogic qed NIC Driver |
---|
2 | 3 | * Copyright (c) 2015-2017 QLogic Corporation |
---|
3 | | - * |
---|
4 | | - * This software is available to you under a choice of one of two |
---|
5 | | - * licenses. You may choose to be licensed under the terms of the GNU |
---|
6 | | - * General Public License (GPL) Version 2, available from the file |
---|
7 | | - * COPYING in the main directory of this source tree, or the |
---|
8 | | - * OpenIB.org BSD license below: |
---|
9 | | - * |
---|
10 | | - * Redistribution and use in source and binary forms, with or |
---|
11 | | - * without modification, are permitted provided that the following |
---|
12 | | - * conditions are met: |
---|
13 | | - * |
---|
14 | | - * - Redistributions of source code must retain the above |
---|
15 | | - * copyright notice, this list of conditions and the following |
---|
16 | | - * disclaimer. |
---|
17 | | - * |
---|
18 | | - * - Redistributions in binary form must reproduce the above |
---|
19 | | - * copyright notice, this list of conditions and the following |
---|
20 | | - * disclaimer in the documentation and /or other materials |
---|
21 | | - * provided with the distribution. |
---|
22 | | - * |
---|
23 | | - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
---|
24 | | - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
---|
25 | | - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
---|
26 | | - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
---|
27 | | - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
---|
28 | | - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
---|
29 | | - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
---|
30 | | - * SOFTWARE. |
---|
| 4 | + * Copyright (c) 2019-2020 Marvell International Ltd. |
---|
31 | 5 | */ |
---|
| 6 | + |
---|
32 | 7 | #ifndef _QED_RDMA_IF_H |
---|
33 | 8 | #define _QED_RDMA_IF_H |
---|
34 | 9 | #include <linux/types.h> |
---|
.. | .. |
---|
38 | 13 | #include <linux/qed/qed_if.h> |
---|
39 | 14 | #include <linux/qed/qed_ll2_if.h> |
---|
40 | 15 | #include <linux/qed/rdma_common.h> |
---|
41 | | - |
---|
42 | | -enum qed_roce_ll2_tx_dest { |
---|
43 | | - /* Light L2 TX Destination to the Network */ |
---|
44 | | - QED_ROCE_LL2_TX_DEST_NW, |
---|
45 | | - |
---|
46 | | - /* Light L2 TX Destination to the Loopback */ |
---|
47 | | - QED_ROCE_LL2_TX_DEST_LB, |
---|
48 | | - QED_ROCE_LL2_TX_DEST_MAX |
---|
49 | | -}; |
---|
50 | 16 | |
---|
51 | 17 | #define QED_RDMA_MAX_CNQ_SIZE (0xFFFF) |
---|
52 | 18 | |
---|
.. | .. |
---|
60 | 26 | QED_ROCE_QP_STATE_SQD, |
---|
61 | 27 | QED_ROCE_QP_STATE_ERR, |
---|
62 | 28 | QED_ROCE_QP_STATE_SQE |
---|
| 29 | +}; |
---|
| 30 | + |
---|
| 31 | +enum qed_rdma_qp_type { |
---|
| 32 | + QED_RDMA_QP_TYPE_RC, |
---|
| 33 | + QED_RDMA_QP_TYPE_XRC_INI, |
---|
| 34 | + QED_RDMA_QP_TYPE_XRC_TGT, |
---|
| 35 | + QED_RDMA_QP_TYPE_INVAL = 0xffff, |
---|
63 | 36 | }; |
---|
64 | 37 | |
---|
65 | 38 | enum qed_rdma_tid_type { |
---|
.. | .. |
---|
100 | 73 | u64 max_mr_size; |
---|
101 | 74 | u32 max_cqe; |
---|
102 | 75 | u32 max_mw; |
---|
103 | | - u32 max_fmr; |
---|
104 | 76 | u32 max_mr_mw_fmr_pbl; |
---|
105 | 77 | u64 max_mr_mw_fmr_size; |
---|
106 | 78 | u32 max_pd; |
---|
.. | .. |
---|
234 | 206 | |
---|
235 | 207 | struct qed_rdma_add_user_out_params { |
---|
236 | 208 | u16 dpi; |
---|
237 | | - u64 dpi_addr; |
---|
| 209 | + void __iomem *dpi_addr; |
---|
238 | 210 | u64 dpi_phys_addr; |
---|
239 | 211 | u32 dpi_size; |
---|
240 | 212 | u16 wid_count; |
---|
.. | .. |
---|
270 | 242 | bool pbl_two_level; |
---|
271 | 243 | u8 pbl_page_size_log; |
---|
272 | 244 | u8 page_size_log; |
---|
273 | | - u32 fbo; |
---|
274 | 245 | u64 length; |
---|
275 | 246 | u64 vaddr; |
---|
276 | | - bool zbva; |
---|
277 | 247 | bool phy_mr; |
---|
278 | 248 | bool dma_mr; |
---|
279 | 249 | |
---|
.. | .. |
---|
300 | 270 | u16 num_pages; |
---|
301 | 271 | u16 pd_id; |
---|
302 | 272 | u16 page_size; |
---|
| 273 | + |
---|
| 274 | + /* XRC related only */ |
---|
| 275 | + bool reserved_key_en; |
---|
| 276 | + bool is_xrc; |
---|
| 277 | + u32 cq_cid; |
---|
| 278 | + u16 xrcd_id; |
---|
303 | 279 | }; |
---|
304 | 280 | |
---|
305 | 281 | struct qed_rdma_destroy_cq_in_params { |
---|
.. | .. |
---|
328 | 304 | u16 rq_num_pages; |
---|
329 | 305 | u64 rq_pbl_ptr; |
---|
330 | 306 | u16 srq_id; |
---|
| 307 | + u16 xrcd_id; |
---|
331 | 308 | u8 stats_queue; |
---|
| 309 | + enum qed_rdma_qp_type qp_type; |
---|
| 310 | + u8 flags; |
---|
| 311 | +#define QED_ROCE_EDPM_MODE_MASK 0x1 |
---|
| 312 | +#define QED_ROCE_EDPM_MODE_SHIFT 0 |
---|
332 | 313 | }; |
---|
333 | 314 | |
---|
334 | 315 | struct qed_rdma_create_qp_out_params { |
---|
.. | .. |
---|
438 | 419 | |
---|
439 | 420 | struct qed_rdma_destroy_srq_in_params { |
---|
440 | 421 | u16 srq_id; |
---|
| 422 | + bool is_xrc; |
---|
441 | 423 | }; |
---|
442 | 424 | |
---|
443 | 425 | struct qed_rdma_modify_srq_in_params { |
---|
444 | 426 | u32 wqe_limit; |
---|
445 | 427 | u16 srq_id; |
---|
| 428 | + bool is_xrc; |
---|
446 | 429 | }; |
---|
447 | 430 | |
---|
448 | 431 | struct qed_rdma_stats_out_params { |
---|
.. | .. |
---|
581 | 564 | int n_seg; |
---|
582 | 565 | struct qed_roce_ll2_buffer payload[RDMA_MAX_SGE_PER_SQ_WQE]; |
---|
583 | 566 | int roce_mode; |
---|
584 | | - enum qed_roce_ll2_tx_dest tx_dest; |
---|
| 567 | + enum qed_ll2_tx_dest tx_dest; |
---|
585 | 568 | }; |
---|
586 | 569 | |
---|
587 | 570 | enum qed_rdma_type { |
---|
.. | .. |
---|
620 | 603 | int (*rdma_set_rdma_int)(struct qed_dev *cdev, u16 cnt); |
---|
621 | 604 | int (*rdma_alloc_pd)(void *rdma_cxt, u16 *pd); |
---|
622 | 605 | void (*rdma_dealloc_pd)(void *rdma_cxt, u16 pd); |
---|
| 606 | + int (*rdma_alloc_xrcd)(void *rdma_cxt, u16 *xrcd); |
---|
| 607 | + void (*rdma_dealloc_xrcd)(void *rdma_cxt, u16 xrcd); |
---|
623 | 608 | int (*rdma_create_cq)(void *rdma_cxt, |
---|
624 | 609 | struct qed_rdma_create_cq_in_params *params, |
---|
625 | 610 | u16 *icid); |
---|
.. | .. |
---|
679 | 664 | int (*ll2_set_mac_filter)(struct qed_dev *cdev, |
---|
680 | 665 | u8 *old_mac_address, u8 *new_mac_address); |
---|
681 | 666 | |
---|
| 667 | + int (*iwarp_set_engine_affin)(struct qed_dev *cdev, bool b_reset); |
---|
| 668 | + |
---|
682 | 669 | int (*iwarp_connect)(void *rdma_cxt, |
---|
683 | 670 | struct qed_iwarp_connect_in *iparams, |
---|
684 | 671 | struct qed_iwarp_connect_out *oparams); |
---|