|
@@ -73,6 +73,7 @@ enum ib_gid_type {
|
|
|
/* If link layer is Ethernet, this is RoCE V1 */
|
|
|
IB_GID_TYPE_IB = 0,
|
|
|
IB_GID_TYPE_ROCE = 0,
|
|
|
+ IB_GID_TYPE_ROCE_UDP_ENCAP = 1,
|
|
|
IB_GID_TYPE_SIZE
|
|
|
};
|
|
|
|
|
@@ -403,6 +404,7 @@ union rdma_protocol_stats {
|
|
|
#define RDMA_CORE_CAP_PROT_IB 0x00100000
|
|
|
#define RDMA_CORE_CAP_PROT_ROCE 0x00200000
|
|
|
#define RDMA_CORE_CAP_PROT_IWARP 0x00400000
|
|
|
+#define RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP 0x00800000
|
|
|
|
|
|
#define RDMA_CORE_PORT_IBA_IB (RDMA_CORE_CAP_PROT_IB \
|
|
|
| RDMA_CORE_CAP_IB_MAD \
|
|
@@ -415,6 +417,12 @@ union rdma_protocol_stats {
|
|
|
| RDMA_CORE_CAP_IB_CM \
|
|
|
| RDMA_CORE_CAP_AF_IB \
|
|
|
| RDMA_CORE_CAP_ETH_AH)
|
|
|
+#define RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP \
|
|
|
+ (RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP \
|
|
|
+ | RDMA_CORE_CAP_IB_MAD \
|
|
|
+ | RDMA_CORE_CAP_IB_CM \
|
|
|
+ | RDMA_CORE_CAP_AF_IB \
|
|
|
+ | RDMA_CORE_CAP_ETH_AH)
|
|
|
#define RDMA_CORE_PORT_IWARP (RDMA_CORE_CAP_PROT_IWARP \
|
|
|
| RDMA_CORE_CAP_IW_CM)
|
|
|
#define RDMA_CORE_PORT_INTEL_OPA (RDMA_CORE_PORT_IBA_IB \
|
|
@@ -2000,6 +2008,17 @@ static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num)
|
|
|
}
|
|
|
|
|
|
static inline bool rdma_protocol_roce(const struct ib_device *device, u8 port_num)
|
|
|
+{
|
|
|
+ return device->port_immutable[port_num].core_cap_flags &
|
|
|
+ (RDMA_CORE_CAP_PROT_ROCE | RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP);
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool rdma_protocol_roce_udp_encap(const struct ib_device *device, u8 port_num)
|
|
|
+{
|
|
|
+ return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool rdma_protocol_roce_eth_encap(const struct ib_device *device, u8 port_num)
|
|
|
{
|
|
|
return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_ROCE;
|
|
|
}
|
|
@@ -2011,8 +2030,8 @@ static inline bool rdma_protocol_iwarp(const struct ib_device *device, u8 port_n
|
|
|
|
|
|
static inline bool rdma_ib_or_roce(const struct ib_device *device, u8 port_num)
|
|
|
{
|
|
|
- return device->port_immutable[port_num].core_cap_flags &
|
|
|
- (RDMA_CORE_CAP_PROT_IB | RDMA_CORE_CAP_PROT_ROCE);
|
|
|
+ return rdma_protocol_ib(device, port_num) ||
|
|
|
+ rdma_protocol_roce(device, port_num);
|
|
|
}
|
|
|
|
|
|
/**
|