Re: cdcd52d41e24 - main - irdma: Add RDMA driver for Intel(R) Ethernet Controller E810
Date: Mon, 30 May 2022 14:44:21 UTC
On 5/29/22 02:52, Ravi Pokala wrote:
> Hi Eric,
>
> This change appears to have broken the amd64 LINT-{NOINET,NOINET6,NOIP} kernels:
>
> LINT-NOINET
> ----------------------------------------------------------------
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1659:11: error: implicit declaration of function 'ip_ifp_find' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
> netdev = ip_ifp_find(&init_net, htonl(addr[0]));
> ^
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1659:11: note: did you mean 'ip6_ifp_find'?
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../ofed/include/rdma/ib_addr_freebsd.h:64:1: note: 'ip6_ifp_find' declared here
> ip6_ifp_find(struct vnet *vnet, struct in6_addr addr, uint16_t scope_id)
> ^
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1659:9: error: incompatible integer to pointer conversion assigning to 'struct ifnet *' from 'int' [-Werror,-Wint-conversion]
> netdev = ip_ifp_find(&init_net, htonl(addr[0]));
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 2 errors generated.
> --- irdma_cm.o ---
> ----------------------------------------------------------------
>
> LINT-NOINET6
> ----------------------------------------------------------------
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1638:11: error: implicit declaration of function 'ip6_ifp_find' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
> ip_dev = ip6_ifp_find(&init_net, laddr6, 0);
> ^
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1638:11: note: did you mean 'ip_ifp_find'?
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../ofed/include/rdma/ib_addr_freebsd.h:36:1: note: 'ip_ifp_find' declared here
> ip_ifp_find(struct vnet *vnet, uint32_t addr)
> ^
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1638:9: error: incompatible integer to pointer conversion assigning to 'struct ifnet *' from 'int' [-Werror,-Wint-conversion]
> ip_dev = ip6_ifp_find(&init_net, laddr6, 0);
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 2 errors generated.
> --- irdma_cm.o ---
> ----------------------------------------------------------------
>
> LINT-NOIP:
> ----------------------------------------------------------------
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1638:11: error: implicit declaration of function 'ip6_ifp_find' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
> ip_dev = ip6_ifp_find(&init_net, laddr6, 0);
> ^
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1638:9: error: incompatible integer to pointer conversion assigning to 'struct ifnet *' from 'int' [-Werror,-Wint-conversion]
> ip_dev = ip6_ifp_find(&init_net, laddr6, 0);
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1659:11: error: implicit declaration of function 'ip_ifp_find' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
> netdev = ip_ifp_find(&init_net, htonl(addr[0]));
> ^
> /usr/home/rpokala/freebsd/src/clean-main/sys/modules/irdma/../../dev/irdma/irdma_cm.c:1659:9: error: incompatible integer to pointer conversion assigning to 'struct ifnet *' from 'int' [-Werror,-Wint-conversion]
> netdev = ip_ifp_find(&init_net, htonl(addr[0]));
> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 4 errors generated.
> --- irdma_cm.o ---
> ----------------------------------------------------------------
>
Hi,
I posted a fix for this, which resolves the issue for me. I will commit
it later today if I don't hear anything back.
https://reviews.freebsd.org/D35343
Cheers,
Mitchell
> Thanks,
>
> Ravi (rpokala@)
>
> -----Original Message-----
> From: <owner-src-committers@freebsd.org> on behalf of Eric Joyner <erj@FreeBSD.org>
> Date: 2022-05-23, Monday at 16:54
> To: <src-committers@FreeBSD.org>, <dev-commits-src-all@FreeBSD.org>, <dev-commits-src-main@FreeBSD.org>
> Subject: git: cdcd52d41e24 - main - irdma: Add RDMA driver for Intel(R) Ethernet Controller E810
>
> The branch main has been updated by erj:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=cdcd52d41e246ba1c0fcfad0769bd691487355ef
>
> commit cdcd52d41e246ba1c0fcfad0769bd691487355ef
> Author: Bartosz Sobczak <bartosz.sobczak@intel.com>
> AuthorDate: 2022-05-23 23:39:27 +0000
> Commit: Eric Joyner <erj@FreeBSD.org>
> CommitDate: 2022-05-23 23:52:49 +0000
>
> irdma: Add RDMA driver for Intel(R) Ethernet Controller E810
>
> This is an initial commit for RDMA FreeBSD driver for Intel(R) Ethernet
> Controller E810, called irdma. Supporting both RoCEv2 and iWARP
> protocols in per-PF manner, RoCEv2 being the default.
>
> Testing has been done using krping tool, perftest, ucmatose, rping,
> ud_pingpong, rc_pingpong and others.
>
> Signed-off-by: Eric Joyner <erj@FreeBSD.org>
>
> Reviewed by: #manpages (pauamma_gundo.com) [documentation]
> MFC after: 1 week
> Relnotes: yes
> Sponsored by: Intel Corporation
> Differential Revision: https://reviews.freebsd.org/D34690
> ---
> contrib/ofed/libirdma/abi.h | 180 ++
> contrib/ofed/libirdma/i40e_devids.h | 69 +
> contrib/ofed/libirdma/i40iw_hw.h | 64 +
> contrib/ofed/libirdma/ice_devids.h | 92 +
> contrib/ofed/libirdma/irdma-abi.h | 143 +
> contrib/ofed/libirdma/irdma.h | 93 +
> contrib/ofed/libirdma/irdma_defs.h | 554 ++++
> contrib/ofed/libirdma/irdma_uk.c | 1884 ++++++++++++
> contrib/ofed/libirdma/irdma_umain.c | 255 ++
> contrib/ofed/libirdma/irdma_umain.h | 218 ++
> contrib/ofed/libirdma/irdma_user.h | 479 +++
> contrib/ofed/libirdma/irdma_uverbs.c | 2262 ++++++++++++++
> contrib/ofed/libirdma/libirdma.map | 10 +
> contrib/ofed/libirdma/osdep.h | 213 ++
> lib/ofed/Makefile | 2 +
> lib/ofed/libirdma/Makefile | 23 +
> share/man/man4/irdma.4 | 233 ++
> share/mk/bsd.libnames.mk | 1 +
> share/mk/src.libnames.mk | 3 +
> sys/amd64/conf/NOTES | 3 +
> sys/conf/files | 31 +
> sys/dev/irdma/fbsd_kcompat.c | 736 +++++
> sys/dev/irdma/fbsd_kcompat.h | 251 ++
> sys/dev/irdma/ice_devids.h | 92 +
> sys/dev/irdma/icrdma.c | 704 +++++
> sys/dev/irdma/icrdma_hw.c | 418 +++
> sys/dev/irdma/icrdma_hw.h | 137 +
> sys/dev/irdma/irdma-abi.h | 143 +
> sys/dev/irdma/irdma.h | 238 ++
> sys/dev/irdma/irdma_cm.c | 4253 +++++++++++++++++++++++++
> sys/dev/irdma/irdma_cm.h | 453 +++
> sys/dev/irdma/irdma_ctrl.c | 5644 ++++++++++++++++++++++++++++++++++
> sys/dev/irdma/irdma_defs.h | 2337 ++++++++++++++
> sys/dev/irdma/irdma_hmc.c | 734 +++++
> sys/dev/irdma/irdma_hmc.h | 202 ++
> sys/dev/irdma/irdma_hw.c | 2829 +++++++++++++++++
> sys/dev/irdma/irdma_kcompat.c | 1568 ++++++++++
> sys/dev/irdma/irdma_main.h | 589 ++++
> sys/dev/irdma/irdma_pble.c | 557 ++++
> sys/dev/irdma/irdma_pble.h | 166 +
> sys/dev/irdma/irdma_protos.h | 141 +
> sys/dev/irdma/irdma_puda.c | 1856 +++++++++++
> sys/dev/irdma/irdma_puda.h | 221 ++
> sys/dev/irdma/irdma_type.h | 1533 +++++++++
> sys/dev/irdma/irdma_uda.c | 318 ++
> sys/dev/irdma/irdma_uda.h | 120 +
> sys/dev/irdma/irdma_uda_d.h | 415 +++
> sys/dev/irdma/irdma_uk.c | 1808 +++++++++++
> sys/dev/irdma/irdma_user.h | 477 +++
> sys/dev/irdma/irdma_utils.c | 2325 ++++++++++++++
> sys/dev/irdma/irdma_verbs.c | 3364 ++++++++++++++++++++
> sys/dev/irdma/irdma_verbs.h | 313 ++
> sys/dev/irdma/irdma_ws.c | 447 +++
> sys/dev/irdma/irdma_ws.h | 74 +
> sys/dev/irdma/osdep.h | 247 ++
> sys/modules/Makefile | 4 +
> sys/modules/irdma/Makefile | 23 +
> usr.bin/ofed/libibverbs/Makefile.inc | 2 +-
> usr.bin/ofed/librdmacm/Makefile.inc | 2 +-
> 59 files changed, 42551 insertions(+), 2 deletions(-)
>
> diff --git a/contrib/ofed/libirdma/abi.h b/contrib/ofed/libirdma/abi.h
> new file mode 100644
> index 000000000000..ff7a2828efe0
> --- /dev/null
> +++ b/contrib/ofed/libirdma/abi.h
> @@ -0,0 +1,180 @@
> +/*-
> + * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> + *
> + * Copyright (C) 2019 - 2020 Intel Corporation
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef PROVIDER_IRDMA_ABI_H
> +#define PROVIDER_IRDMA_ABI_H
> +
> +#include "irdma.h"
> +#include <infiniband/kern-abi.h>
> +#include "irdma-abi.h"
> +
> +#define IRDMA_MIN_ABI_VERSION 0
> +#define IRDMA_MAX_ABI_VERSION 5
> +
> +struct irdma_ualloc_pd_resp {
> + struct ibv_alloc_pd_resp ibv_resp;
> + __u32 pd_id;
> + __u8 rsvd[4];
> +
> +};
> +struct irdma_ucreate_cq {
> + struct ibv_create_cq ibv_cmd;
> + __aligned_u64 user_cq_buf;
> + __aligned_u64 user_shadow_area;
> +
> +};
> +struct irdma_ucreate_cq_resp {
> + struct ibv_create_cq_resp ibv_resp;
> + __u32 cq_id;
> + __u32 cq_size;
> +
> +};
> +struct irdma_ucreate_cq_ex {
> + struct ibv_create_cq_ex ibv_cmd;
> + __aligned_u64 user_cq_buf;
> + __aligned_u64 user_shadow_area;
> +
> +};
> +struct irdma_ucreate_cq_ex_resp {
> + struct ibv_create_cq_resp_ex ibv_resp;
> + __u32 cq_id;
> + __u32 cq_size;
> +
> +};
> +struct irdma_uresize_cq {
> + struct ibv_resize_cq ibv_cmd;
> + __aligned_u64 user_cq_buffer;
> +
> +};
> +struct irdma_uresize_cq_resp {
> + struct ibv_resize_cq_resp ibv_resp;
> +
> +};
> +struct irdma_ucreate_qp {
> + struct ibv_create_qp ibv_cmd;
> + __aligned_u64 user_wqe_bufs;
> + __aligned_u64 user_compl_ctx;
> +
> +};
> +struct irdma_ucreate_qp_resp {
> + struct ibv_create_qp_resp ibv_resp;
> + __u32 qp_id;
> + __u32 actual_sq_size;
> + __u32 actual_rq_size;
> + __u32 irdma_drv_opt;
> + __u16 push_idx;
> + __u8 lsmm;
> + __u8 rsvd;
> + __u32 qp_caps;
> +
> +};
> +struct irdma_umodify_qp_resp {
> + struct ibv_modify_qp_resp_ex ibv_resp;
> + __aligned_u64 push_wqe_mmap_key;
> + __aligned_u64 push_db_mmap_key;
> + __u16 push_offset;
> + __u8 push_valid;
> + __u8 rd_fence_rate;
> + __u8 rsvd[4];
> +
> +};
> +struct irdma_get_context {
> + struct ibv_get_context ibv_cmd;
> + __u32 rsvd32;
> + __u8 userspace_ver;
> + __u8 rsvd8[3];
> +
> +};
> +struct irdma_get_context_resp {
> + struct ibv_get_context_resp ibv_resp;
> + __u32 max_pds;
> + __u32 max_qps;
> + __u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */
> + __u8 kernel_ver;
> + __u8 rsvd[3];
> + __aligned_u64 feature_flags;
> + __aligned_u64 db_mmap_key;
> + __u32 max_hw_wq_frags;
> + __u32 max_hw_read_sges;
> + __u32 max_hw_inline;
> + __u32 max_hw_rq_quanta;
> + __u32 max_hw_wq_quanta;
> + __u32 min_hw_cq_size;
> + __u32 max_hw_cq_size;
> + __u16 max_hw_sq_chunk;
> + __u8 hw_rev;
> + __u8 rsvd2;
> +
> +};
> +struct irdma_ureg_mr {
> + struct ibv_reg_mr ibv_cmd;
> + __u16 reg_type; /* enum irdma_memreg_type */
> + __u16 cq_pages;
> + __u16 rq_pages;
> + __u16 sq_pages;
> +
> +};
> +struct irdma_ucreate_ah_resp {
> + struct ibv_create_ah_resp ibv_resp;
> + __u32 ah_id;
> + __u8 rsvd[4];
> +
> +};
> +
> +struct irdma_modify_qp_cmd {
> + struct ibv_modify_qp_ex ibv_cmd;
> + __u8 sq_flush;
> + __u8 rq_flush;
> + __u8 rsvd[6];
> +};
> +
> +struct irdma_query_device_ex {
> + struct ibv_query_device_ex ibv_cmd;
> +};
> +
> +struct irdma_query_device_ex_resp {
> + struct ibv_query_device_resp_ex ibv_resp;
> + __u32 comp_mask;
> + __u32 response_length;
> + struct ibv_odp_caps_resp odp_caps;
> + __u64 timestamp_mask;
> + __u64 hca_core_clock;
> + __u64 device_cap_flags_ex;
> + struct ibv_rss_caps_resp rss_caps;
> + __u32 max_wq_type_rq;
> + __u32 raw_packet_caps;
> + struct ibv_tso_caps tso_caps;
> +};
> +#endif /* PROVIDER_IRDMA_ABI_H */
> diff --git a/contrib/ofed/libirdma/i40e_devids.h b/contrib/ofed/libirdma/i40e_devids.h
> new file mode 100644
> index 000000000000..1b0eaae95b82
> --- /dev/null
> +++ b/contrib/ofed/libirdma/i40e_devids.h
> @@ -0,0 +1,69 @@
> +/*-
> + * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> + *
> + * Copyright (c) 2015 - 2019 Intel Corporation
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef I40E_DEVIDS_H
> +#define I40E_DEVIDS_H
> +
> +/* Vendor ID */
> +#define I40E_INTEL_VENDOR_ID 0x8086
> +
> +/* Device IDs */
> +#define I40E_DEV_ID_SFP_XL710 0x1572
> +#define I40E_DEV_ID_QEMU 0x1574
> +#define I40E_DEV_ID_KX_B 0x1580
> +#define I40E_DEV_ID_KX_C 0x1581
> +#define I40E_DEV_ID_QSFP_A 0x1583
> +#define I40E_DEV_ID_QSFP_B 0x1584
> +#define I40E_DEV_ID_QSFP_C 0x1585
> +#define I40E_DEV_ID_10G_BASE_T 0x1586
> +#define I40E_DEV_ID_20G_KR2 0x1587
> +#define I40E_DEV_ID_20G_KR2_A 0x1588
> +#define I40E_DEV_ID_10G_BASE_T4 0x1589
> +#define I40E_DEV_ID_25G_B 0x158A
> +#define I40E_DEV_ID_25G_SFP28 0x158B
> +#define I40E_DEV_ID_VF 0x154C
> +#define I40E_DEV_ID_VF_HV 0x1571
> +#define I40E_DEV_ID_X722_A0 0x374C
> +#define I40E_DEV_ID_X722_A0_VF 0x374D
> +#define I40E_DEV_ID_KX_X722 0x37CE
> +#define I40E_DEV_ID_QSFP_X722 0x37CF
> +#define I40E_DEV_ID_SFP_X722 0x37D0
> +#define I40E_DEV_ID_1G_BASE_T_X722 0x37D1
> +#define I40E_DEV_ID_10G_BASE_T_X722 0x37D2
> +#define I40E_DEV_ID_SFP_I_X722 0x37D3
> +#define I40E_DEV_ID_X722_VF 0x37CD
> +#define I40E_DEV_ID_X722_VF_HV 0x37D9
> +
> +#endif /* I40E_DEVIDS_H */
> diff --git a/contrib/ofed/libirdma/i40iw_hw.h b/contrib/ofed/libirdma/i40iw_hw.h
> new file mode 100644
> index 000000000000..38c7e37c35c9
> --- /dev/null
> +++ b/contrib/ofed/libirdma/i40iw_hw.h
> @@ -0,0 +1,64 @@
> +/*-
> + * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> + *
> + * Copyright (c) 2015 - 2020 Intel Corporation
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef I40IW_HW_H
> +#define I40IW_HW_H
> +
> +enum i40iw_device_caps_const {
> + I40IW_MAX_WQ_FRAGMENT_COUNT = 3,
> + I40IW_MAX_SGE_RD = 1,
> + I40IW_MAX_PUSH_PAGE_COUNT = 0,
> + I40IW_MAX_INLINE_DATA_SIZE = 48,
> + I40IW_MAX_IRD_SIZE = 63,
> + I40IW_MAX_ORD_SIZE = 127,
> + I40IW_MAX_WQ_ENTRIES = 2048,
> + I40IW_MAX_WQE_SIZE_RQ = 128,
> + I40IW_MAX_PDS = 32768,
> + I40IW_MAX_STATS_COUNT = 16,
> + I40IW_MAX_CQ_SIZE = 1048575,
> + I40IW_MAX_OUTBOUND_MSG_SIZE = 2147483647,
> + I40IW_MAX_INBOUND_MSG_SIZE = 2147483647,
> +};
> +
> +#define I40IW_QP_WQE_MIN_SIZE 32
> +#define I40IW_QP_WQE_MAX_SIZE 128
> +#define I40IW_QP_SW_MIN_WQSIZE 4
> +#define I40IW_MAX_RQ_WQE_SHIFT 2
> +#define I40IW_MAX_QUANTA_PER_WR 2
> +
> +#define I40IW_QP_SW_MAX_SQ_QUANTA 2048
> +#define I40IW_QP_SW_MAX_RQ_QUANTA 16384
> +#define I40IW_QP_SW_MAX_WQ_QUANTA 2048
> +#endif /* I40IW_HW_H */
> diff --git a/contrib/ofed/libirdma/ice_devids.h b/contrib/ofed/libirdma/ice_devids.h
> new file mode 100644
> index 000000000000..57f26bc33260
> --- /dev/null
> +++ b/contrib/ofed/libirdma/ice_devids.h
> @@ -0,0 +1,92 @@
> +/*-
> + * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> + *
> + * Copyright (c) 2019 - 2020 Intel Corporation
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef ICE_DEVIDS_H
> +#define ICE_DEVIDS_H
> +
> +#define PCI_VENDOR_ID_INTEL 0x8086
> +
> +/* Device IDs */
> +/* Intel(R) Ethernet Connection E823-L for backplane */
> +#define ICE_DEV_ID_E823L_BACKPLANE 0x124C
> +/* Intel(R) Ethernet Connection E823-L for SFP */
> +#define ICE_DEV_ID_E823L_SFP 0x124D
> +/* Intel(R) Ethernet Connection E823-L/X557-AT 10GBASE-T */
> +#define ICE_DEV_ID_E823L_10G_BASE_T 0x124E
> +/* Intel(R) Ethernet Connection E823-L 1GbE */
> +#define ICE_DEV_ID_E823L_1GBE 0x124F
> +/* Intel(R) Ethernet Connection E823-L for QSFP */
> +#define ICE_DEV_ID_E823L_QSFP 0x151D
> +/* Intel(R) Ethernet Controller E810-C for backplane */
> +#define ICE_DEV_ID_E810C_BACKPLANE 0x1591
> +/* Intel(R) Ethernet Controller E810-C for QSFP */
> +#define ICE_DEV_ID_E810C_QSFP 0x1592
> +/* Intel(R) Ethernet Controller E810-C for SFP */
> +#define ICE_DEV_ID_E810C_SFP 0x1593
> +/* Intel(R) Ethernet Controller E810-XXV for backplane */
> +#define ICE_DEV_ID_E810_XXV_BACKPLANE 0x1599
> +/* Intel(R) Ethernet Controller E810-XXV for QSFP */
> +#define ICE_DEV_ID_E810_XXV_QSFP 0x159A
> +/* Intel(R) Ethernet Controller E810-XXV for SFP */
> +#define ICE_DEV_ID_E810_XXV_SFP 0x159B
> +/* Intel(R) Ethernet Connection E823-C for backplane */
> +#define ICE_DEV_ID_E823C_BACKPLANE 0x188A
> +/* Intel(R) Ethernet Connection E823-C for QSFP */
> +#define ICE_DEV_ID_E823C_QSFP 0x188B
> +/* Intel(R) Ethernet Connection E823-C for SFP */
> +#define ICE_DEV_ID_E823C_SFP 0x188C
> +/* Intel(R) Ethernet Connection E823-C/X557-AT 10GBASE-T */
> +#define ICE_DEV_ID_E823C_10G_BASE_T 0x188D
> +/* Intel(R) Ethernet Connection E823-C 1GbE */
> +#define ICE_DEV_ID_E823C_SGMII 0x188E
> +/* Intel(R) Ethernet Connection C822N for backplane */
> +#define ICE_DEV_ID_C822N_BACKPLANE 0x1890
> +/* Intel(R) Ethernet Connection C822N for QSFP */
> +#define ICE_DEV_ID_C822N_QSFP 0x1891
> +/* Intel(R) Ethernet Connection C822N for SFP */
> +#define ICE_DEV_ID_C822N_SFP 0x1892
> +/* Intel(R) Ethernet Connection E822-C/X557-AT 10GBASE-T */
> +#define ICE_DEV_ID_E822C_10G_BASE_T 0x1893
> +/* Intel(R) Ethernet Connection E822-C 1GbE */
> +#define ICE_DEV_ID_E822C_SGMII 0x1894
> +/* Intel(R) Ethernet Connection E822-L for backplane */
> +#define ICE_DEV_ID_E822L_BACKPLANE 0x1897
> +/* Intel(R) Ethernet Connection E822-L for SFP */
> +#define ICE_DEV_ID_E822L_SFP 0x1898
> +/* Intel(R) Ethernet Connection E822-L/X557-AT 10GBASE-T */
> +#define ICE_DEV_ID_E822L_10G_BASE_T 0x1899
> +/* Intel(R) Ethernet Connection E822-L 1GbE */
> +#define ICE_DEV_ID_E822L_SGMII 0x189A
> +#endif /* ICE_DEVIDS_H */
> diff --git a/contrib/ofed/libirdma/irdma-abi.h b/contrib/ofed/libirdma/irdma-abi.h
> new file mode 100644
> index 000000000000..8a06198608e2
> --- /dev/null
> +++ b/contrib/ofed/libirdma/irdma-abi.h
> @@ -0,0 +1,143 @@
> +/*-
> + * SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB)
> + *
> + *
> + * Copyright (c) 2006 - 2021 Intel Corporation. All rights reserved.
> + * Copyright (c) 2005 Topspin Communications. All rights reserved.
> + * Copyright (c) 2005 Cisco Systems. All rights reserved.
> + * Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved.
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef IRDMA_ABI_H
> +#define IRDMA_ABI_H
> +
> +#include <infiniband/types.h>
> +
> +/* irdma must support legacy GEN_1 i40iw kernel
> + * and user-space whose last ABI ver is 5
> + */
> +#define IRDMA_ABI_VER 5
> +
> +enum irdma_memreg_type {
> + IRDMA_MEMREG_TYPE_MEM = 0,
> + IRDMA_MEMREG_TYPE_QP = 1,
> + IRDMA_MEMREG_TYPE_CQ = 2,
> +};
> +
> +struct irdma_alloc_ucontext_req {
> + __u32 rsvd32;
> + __u8 userspace_ver;
> + __u8 rsvd8[3];
> +};
> +
> +struct irdma_alloc_ucontext_resp {
> + __u32 max_pds;
> + __u32 max_qps;
> + __u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */
> + __u8 kernel_ver;
> + __u8 rsvd[3];
> + __aligned_u64 feature_flags;
> + __aligned_u64 db_mmap_key;
> + __u32 max_hw_wq_frags;
> + __u32 max_hw_read_sges;
> + __u32 max_hw_inline;
> + __u32 max_hw_rq_quanta;
> + __u32 max_hw_wq_quanta;
> + __u32 min_hw_cq_size;
> + __u32 max_hw_cq_size;
> + __u16 max_hw_sq_chunk;
> + __u8 hw_rev;
> + __u8 rsvd2;
> +};
> +
> +struct irdma_alloc_pd_resp {
> + __u32 pd_id;
> + __u8 rsvd[4];
> +};
> +
> +struct irdma_resize_cq_req {
> + __aligned_u64 user_cq_buffer;
> +};
> +
> +struct irdma_create_cq_req {
> + __aligned_u64 user_cq_buf;
> + __aligned_u64 user_shadow_area;
> +};
> +
> +struct irdma_create_qp_req {
> + __aligned_u64 user_wqe_bufs;
> + __aligned_u64 user_compl_ctx;
> +};
> +
> +struct irdma_mem_reg_req {
> + __u16 reg_type; /* enum irdma_memreg_type */
> + __u16 cq_pages;
> + __u16 rq_pages;
> + __u16 sq_pages;
> +};
> +
> +struct irdma_modify_qp_req {
> + __u8 sq_flush;
> + __u8 rq_flush;
> + __u8 rsvd[6];
> +};
> +
> +struct irdma_create_cq_resp {
> + __u32 cq_id;
> + __u32 cq_size;
> +};
> +
> +struct irdma_create_qp_resp {
> + __u32 qp_id;
> + __u32 actual_sq_size;
> + __u32 actual_rq_size;
> + __u32 irdma_drv_opt;
> + __u16 push_idx;
> + __u8 lsmm;
> + __u8 rsvd;
> + __u32 qp_caps;
> +};
> +
> +struct irdma_modify_qp_resp {
> + __aligned_u64 push_wqe_mmap_key;
> + __aligned_u64 push_db_mmap_key;
> + __u16 push_offset;
> + __u8 push_valid;
> + __u8 rd_fence_rate;
> + __u8 rsvd[4];
> +};
> +
> +struct irdma_create_ah_resp {
> + __u32 ah_id;
> + __u8 rsvd[4];
> +};
> +#endif /* IRDMA_ABI_H */
> diff --git a/contrib/ofed/libirdma/irdma.h b/contrib/ofed/libirdma/irdma.h
> new file mode 100644
> index 000000000000..27fa3d53d3e8
> --- /dev/null
> +++ b/contrib/ofed/libirdma/irdma.h
> @@ -0,0 +1,93 @@
> +/*-
> + * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> + *
> + * Copyright (c) 2017 - 2021 Intel Corporation
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef IRDMA_H
> +#define IRDMA_H
> +
> +#define RDMA_BIT2(type, a) ((u##type) 1UL << a)
> +#define RDMA_MASK3(type, mask, shift) ((u##type) mask << shift)
> +#define MAKEMASK(m, s) ((m) << (s))
> +#define IRDMA_WQEALLOC_WQE_DESC_INDEX_S 20
> +#define IRDMA_WQEALLOC_WQE_DESC_INDEX_M (0xfff << IRDMA_WQEALLOC_WQE_DESC_INDEX_S)
> +
> +enum irdma_vers {
> + IRDMA_GEN_RSVD,
> + IRDMA_GEN_1,
> + IRDMA_GEN_2,
> +};
> +
> +struct irdma_uk_attrs {
> + u64 feature_flags;
> + u32 max_hw_wq_frags;
> + u32 max_hw_read_sges;
> + u32 max_hw_inline;
> + u32 max_hw_rq_quanta;
> + u32 max_hw_wq_quanta;
> + u32 min_hw_cq_size;
> + u32 max_hw_cq_size;
> + u16 max_hw_sq_chunk;
> + u16 max_hw_wq_size;
> + u16 min_sw_wq_size;
> + u8 hw_rev;
> +};
> +
> +struct irdma_hw_attrs {
> + struct irdma_uk_attrs uk_attrs;
> + u64 max_hw_outbound_msg_size;
> + u64 max_hw_inbound_msg_size;
> + u64 max_mr_size;
> + u32 min_hw_qp_id;
> + u32 min_hw_aeq_size;
> + u32 max_hw_aeq_size;
> + u32 min_hw_ceq_size;
> + u32 max_hw_ceq_size;
> + u32 max_hw_device_pages;
> + u32 max_hw_vf_fpm_id;
> + u32 first_hw_vf_fpm_id;
> + u32 max_hw_ird;
> + u32 max_hw_ord;
> + u32 max_hw_wqes;
> + u32 max_hw_pds;
> + u32 max_hw_ena_vf_count;
> + u32 max_qp_wr;
> + u32 max_pe_ready_count;
> + u32 max_done_count;
> + u32 max_sleep_count;
> + u32 max_cqp_compl_wait_time_ms;
> + u16 max_stat_inst;
> + u16 max_stat_idx;
> +};
> +
> +#endif /* IRDMA_H*/
> diff --git a/contrib/ofed/libirdma/irdma_defs.h b/contrib/ofed/libirdma/irdma_defs.h
> new file mode 100644
> index 000000000000..8fb9f1e2b622
> --- /dev/null
> +++ b/contrib/ofed/libirdma/irdma_defs.h
> @@ -0,0 +1,554 @@
> +/*-
> + * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
> + *
> + * Copyright (c) 2015 - 2021 Intel Corporation
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenFabrics.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +/*$FreeBSD$*/
> +
> +#ifndef IRDMA_DEFS_H
> +#define IRDMA_DEFS_H
> +
> +#define IRDMA_BYTE_0 0
> +#define IRDMA_BYTE_8 8
> +#define IRDMA_BYTE_16 16
> +#define IRDMA_BYTE_24 24
> +#define IRDMA_BYTE_32 32
> +#define IRDMA_BYTE_40 40
> +#define IRDMA_BYTE_48 48
> +#define IRDMA_BYTE_56 56
> +#define IRDMA_BYTE_64 64
> +#define IRDMA_BYTE_72 72
> +#define IRDMA_BYTE_80 80
> +#define IRDMA_BYTE_88 88
> +#define IRDMA_BYTE_96 96
> +#define IRDMA_BYTE_104 104
> +#define IRDMA_BYTE_112 112
> +#define IRDMA_BYTE_120 120
> +#define IRDMA_BYTE_128 128
> +#define IRDMA_BYTE_136 136
> +#define IRDMA_BYTE_144 144
> +#define IRDMA_BYTE_152 152
> +#define IRDMA_BYTE_160 160
> +#define IRDMA_BYTE_168 168
> +#define IRDMA_BYTE_176 176
> +#define IRDMA_BYTE_184 184
> +#define IRDMA_BYTE_192 192
> +#define IRDMA_BYTE_200 200
> +#define IRDMA_BYTE_208 208
> +#define IRDMA_BYTE_216 216
> +
> +#define IRDMA_QP_TYPE_IWARP 1
> +#define IRDMA_QP_TYPE_UDA 2
> +#define IRDMA_QP_TYPE_ROCE_RC 3
> +#define IRDMA_QP_TYPE_ROCE_UD 4
> +
> +#define IRDMA_HW_PAGE_SIZE 4096
> +#define IRDMA_HW_PAGE_SHIFT 12
> +#define IRDMA_CQE_QTYPE_RQ 0
> +#define IRDMA_CQE_QTYPE_SQ 1
> +
> +#define IRDMA_QP_SW_MIN_WQSIZE 8u /* in WRs*/
> +#define IRDMA_QP_WQE_MIN_SIZE 32
> +#define IRDMA_QP_WQE_MAX_SIZE 256
> +#define IRDMA_QP_WQE_MIN_QUANTA 1
> +#define IRDMA_MAX_RQ_WQE_SHIFT_GEN1 2
> +#define IRDMA_MAX_RQ_WQE_SHIFT_GEN2 3
> +
> +#define IRDMA_SQ_RSVD 258
> +#define IRDMA_RQ_RSVD 1
> +
> +#define IRDMA_FEATURE_RTS_AE 1ULL
> +#define IRDMA_FEATURE_CQ_RESIZE 2ULL
> +#define IRDMA_FEATURE_RELAX_RQ_ORDER 4ULL
> +#define IRDMAQP_OP_RDMA_WRITE 0x00
> +#define IRDMAQP_OP_RDMA_READ 0x01
> +#define IRDMAQP_OP_RDMA_SEND 0x03
> +#define IRDMAQP_OP_RDMA_SEND_INV 0x04
> +#define IRDMAQP_OP_RDMA_SEND_SOL_EVENT 0x05
> +#define IRDMAQP_OP_RDMA_SEND_SOL_EVENT_INV 0x06
> +#define IRDMAQP_OP_BIND_MW 0x08
> +#define IRDMAQP_OP_FAST_REGISTER 0x09
> +#define IRDMAQP_OP_LOCAL_INVALIDATE 0x0a
> +#define IRDMAQP_OP_RDMA_READ_LOC_INV 0x0b
> +#define IRDMAQP_OP_NOP 0x0c
> +
> +#ifndef LS_64_1
> +#define LS_64_1(val, bits) ((u64)(uintptr_t)(val) << (bits))
> +#define RS_64_1(val, bits) ((u64)(uintptr_t)(val) >> (bits))
> +#define LS_32_1(val, bits) ((u32)((val) << (bits)))
> +#define RS_32_1(val, bits) ((u32)((val) >> (bits)))
> +#endif
> +#define LS_64(val, field) (((u64)(val) << field ## _S) & (field ## _M))
> +#define RS_64(val, field) ((u64)((val) & field ## _M) >> field ## _S)
> +#define LS_32(val, field) (((val) << field ## _S) & (field ## _M))
> +#define RS_32(val, field) (((val) & field ## _M) >> field ## _S)
> +
> +#define IRDMA_CQPHC_QPCTX_S 0
> +#define IRDMA_CQPHC_QPCTX_M \
> + (0xffffffffffffffffULL << IRDMA_CQPHC_QPCTX_S)
> +
> +/* iWARP QP Doorbell shadow area */
> +#define IRDMA_QP_DBSA_HW_SQ_TAIL_S 0
> +#define IRDMA_QP_DBSA_HW_SQ_TAIL_M \
> + (0x7fffULL << IRDMA_QP_DBSA_HW_SQ_TAIL_S)
> +
> +/* Completion Queue Doorbell shadow area */
> +#define IRDMA_CQ_DBSA_CQEIDX_S 0
> +#define IRDMA_CQ_DBSA_CQEIDX_M (0xfffffULL << IRDMA_CQ_DBSA_CQEIDX_S)
> +
> +#define IRDMA_CQ_DBSA_SW_CQ_SELECT_S 0
> +#define IRDMA_CQ_DBSA_SW_CQ_SELECT_M \
> + (0x3fffULL << IRDMA_CQ_DBSA_SW_CQ_SELECT_S)
> +
> +#define IRDMA_CQ_DBSA_ARM_NEXT_S 14
> +#define IRDMA_CQ_DBSA_ARM_NEXT_M BIT_ULL(IRDMA_CQ_DBSA_ARM_NEXT_S)
> +
> +#define IRDMA_CQ_DBSA_ARM_NEXT_SE_S 15
> +#define IRDMA_CQ_DBSA_ARM_NEXT_SE_M BIT_ULL(IRDMA_CQ_DBSA_ARM_NEXT_SE_S)
> +
> +#define IRDMA_CQ_DBSA_ARM_SEQ_NUM_S 16
> +#define IRDMA_CQ_DBSA_ARM_SEQ_NUM_M \
> + (0x3ULL << IRDMA_CQ_DBSA_ARM_SEQ_NUM_S)
> +
> +/* CQP and iWARP Completion Queue */
> +#define IRDMA_CQ_QPCTX_S IRDMA_CQPHC_QPCTX_S
> +#define IRDMA_CQ_QPCTX_M IRDMA_CQPHC_QPCTX_M
> +
> +#define IRDMA_CQ_MINERR_S 0
> +#define IRDMA_CQ_MINERR_M (0xffffULL << IRDMA_CQ_MINERR_S)
> +
> +#define IRDMA_CQ_MAJERR_S 16
> +#define IRDMA_CQ_MAJERR_M (0xffffULL << IRDMA_CQ_MAJERR_S)
> +
> +#define IRDMA_CQ_WQEIDX_S 32
> +#define IRDMA_CQ_WQEIDX_M (0x7fffULL << IRDMA_CQ_WQEIDX_S)
> +
> +#define IRDMA_CQ_EXTCQE_S 50
> +#define IRDMA_CQ_EXTCQE_M BIT_ULL(IRDMA_CQ_EXTCQE_S)
> +
> +#define IRDMA_OOO_CMPL_S 54
> +#define IRDMA_OOO_CMPL_M BIT_ULL(IRDMA_OOO_CMPL_S)
> +
> +#define IRDMA_CQ_ERROR_S 55
> +#define IRDMA_CQ_ERROR_M BIT_ULL(IRDMA_CQ_ERROR_S)
> +
> +#define IRDMA_CQ_SQ_S 62
> +#define IRDMA_CQ_SQ_M BIT_ULL(IRDMA_CQ_SQ_S)
> +
> +#define IRDMA_CQ_VALID_S 63
> +#define IRDMA_CQ_VALID_M BIT_ULL(IRDMA_CQ_VALID_S)
> +
> +#define IRDMA_CQ_IMMVALID_S 62
> +#define IRDMA_CQ_IMMVALID_M BIT_ULL(IRDMA_CQ_IMMVALID_S)
> +
> +#define IRDMA_CQ_UDSMACVALID_S 61
> +#define IRDMA_CQ_UDSMACVALID_M BIT_ULL(IRDMA_CQ_UDSMACVALID_S)
> +
> +#define IRDMA_CQ_UDVLANVALID_S 60
> +#define IRDMA_CQ_UDVLANVALID_M BIT_ULL(IRDMA_CQ_UDVLANVALID_S)
> +
> +#define IRDMA_CQ_UDSMAC_S 0
> +#define IRDMA_CQ_UDSMAC_M (0xffffffffffffULL << IRDMA_CQ_UDSMAC_S)
> +
> +#define IRDMA_CQ_UDVLAN_S 48
> +#define IRDMA_CQ_UDVLAN_M (0xffffULL << IRDMA_CQ_UDVLAN_S)
> +
> +#define IRDMA_CQ_IMMDATA_S 0
> +#define IRDMA_CQ_IMMDATA_M (0xffffffffffffffffULL << IRDMA_CQ_IMMVALID_S)
> +
> +#define IRDMA_CQ_IMMDATALOW32_S 0
> +#define IRDMA_CQ_IMMDATALOW32_M (0xffffffffULL << IRDMA_CQ_IMMDATALOW32_S)
> +
> +#define IRDMA_CQ_IMMDATAUP32_S 32
> +#define IRDMA_CQ_IMMDATAUP32_M (0xffffffffULL << IRDMA_CQ_IMMDATAUP32_S)
> +
> +#define IRDMACQ_PAYLDLEN_S 0
> +#define IRDMACQ_PAYLDLEN_M (0xffffffffULL << IRDMACQ_PAYLDLEN_S)
> +
> +#define IRDMACQ_TCPSEQNUMRTT_S 32
> +#define IRDMACQ_TCPSEQNUMRTT_M (0xffffffffULL << IRDMACQ_TCPSEQNUMRTT_S)
> +
> +#define IRDMACQ_INVSTAG_S 0
> +#define IRDMACQ_INVSTAG_M (0xffffffffULL << IRDMACQ_INVSTAG_S)
> +
> +#define IRDMACQ_QPID_S 32
> +#define IRDMACQ_QPID_M (0xffffffULL << IRDMACQ_QPID_S)
> +
> +#define IRDMACQ_UDSRCQPN_S 0
> +#define IRDMACQ_UDSRCQPN_M (0xffffffffULL << IRDMACQ_UDSRCQPN_S)
> +
> +#define IRDMACQ_PSHDROP_S 51
> +#define IRDMACQ_PSHDROP_M BIT_ULL(IRDMACQ_PSHDROP_S)
> +
> +#define IRDMACQ_STAG_S 53
> +#define IRDMACQ_STAG_M BIT_ULL(IRDMACQ_STAG_S)
> +
> +#define IRDMACQ_IPV4_S 53
> +#define IRDMACQ_IPV4_M BIT_ULL(IRDMACQ_IPV4_S)
> +
> *** 42081 LINES SKIPPED ***
>
>