mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 07:31:45 +00:00
RDMA/core: Modify enum ib_gid_type and enum rdma_network_type
Separate IB_GID_TYPE_IB and IB_GID_TYPE_ROCE to two different values, so enum ib_gid_type will match the gid types of the new query GID table API which will be introduced in the following patches. This change in enum ib_gid_type requires to change also enum rdma_network_type by separating RDMA_NETWORK_IB and RDMA_NETWORK_ROCE_V1 values. Link: https://lore.kernel.org/r/20200923165015.2491894-3-leon@kernel.org Signed-off-by: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
3ff4de8f60
commit
1c15b4f2a4
@ -133,7 +133,11 @@ static void dispatch_gid_change_event(struct ib_device *ib_dev, u8 port)
|
||||
}
|
||||
|
||||
static const char * const gid_type_str[] = {
|
||||
/* IB/RoCE v1 value is set for IB_GID_TYPE_IB and IB_GID_TYPE_ROCE for
|
||||
* user space compatibility reasons.
|
||||
*/
|
||||
[IB_GID_TYPE_IB] = "IB/RoCE v1",
|
||||
[IB_GID_TYPE_ROCE] = "IB/RoCE v1",
|
||||
[IB_GID_TYPE_ROCE_UDP_ENCAP] = "RoCE v2",
|
||||
};
|
||||
|
||||
|
@ -304,6 +304,10 @@ int cma_set_default_gid_type(struct cma_device *cma_dev,
|
||||
if (!rdma_is_port_valid(cma_dev->device, port))
|
||||
return -EINVAL;
|
||||
|
||||
if (default_gid_type == IB_GID_TYPE_IB &&
|
||||
rdma_protocol_roce_eth_encap(cma_dev->device, port))
|
||||
default_gid_type = IB_GID_TYPE_ROCE;
|
||||
|
||||
supported_gids = roce_gid_type_mask_support(cma_dev->device, port);
|
||||
|
||||
if (!(supported_gids & 1 << default_gid_type))
|
||||
|
@ -123,16 +123,17 @@ static ssize_t default_roce_mode_store(struct config_item *item,
|
||||
{
|
||||
struct cma_device *cma_dev;
|
||||
struct cma_dev_port_group *group;
|
||||
int gid_type = ib_cache_gid_parse_type_str(buf);
|
||||
int gid_type;
|
||||
ssize_t ret;
|
||||
|
||||
if (gid_type < 0)
|
||||
return -EINVAL;
|
||||
|
||||
ret = cma_configfs_params_get(item, &cma_dev, &group);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
gid_type = ib_cache_gid_parse_type_str(buf);
|
||||
if (gid_type < 0)
|
||||
return -EINVAL;
|
||||
|
||||
ret = cma_set_default_gid_type(cma_dev, group->port_num, gid_type);
|
||||
|
||||
cma_configfs_params_put(cma_dev);
|
||||
|
@ -733,7 +733,7 @@ int ib_get_gids_from_rdma_hdr(const union rdma_network_hdr *hdr,
|
||||
(struct in6_addr *)dgid);
|
||||
return 0;
|
||||
} else if (net_type == RDMA_NETWORK_IPV6 ||
|
||||
net_type == RDMA_NETWORK_IB) {
|
||||
net_type == RDMA_NETWORK_IB || RDMA_NETWORK_ROCE_V1) {
|
||||
*dgid = hdr->ibgrh.dgid;
|
||||
*sgid = hdr->ibgrh.sgid;
|
||||
return 0;
|
||||
|
@ -255,7 +255,7 @@ static void handle_responder(struct ib_wc *wc, struct mlx5_cqe64 *cqe,
|
||||
|
||||
switch (roce_packet_type) {
|
||||
case MLX5_CQE_ROCE_L3_HEADER_TYPE_GRH:
|
||||
wc->network_hdr_type = RDMA_NETWORK_IB;
|
||||
wc->network_hdr_type = RDMA_NETWORK_ROCE_V1;
|
||||
break;
|
||||
case MLX5_CQE_ROCE_L3_HEADER_TYPE_IPV6:
|
||||
wc->network_hdr_type = RDMA_NETWORK_IPV6;
|
||||
|
@ -546,7 +546,7 @@ static int set_roce_addr(struct mlx5_ib_dev *dev, u8 port_num,
|
||||
unsigned int index, const union ib_gid *gid,
|
||||
const struct ib_gid_attr *attr)
|
||||
{
|
||||
enum ib_gid_type gid_type = IB_GID_TYPE_IB;
|
||||
enum ib_gid_type gid_type = IB_GID_TYPE_ROCE;
|
||||
u16 vlan_id = 0xffff;
|
||||
u8 roce_version = 0;
|
||||
u8 roce_l3_type = 0;
|
||||
@ -561,7 +561,7 @@ static int set_roce_addr(struct mlx5_ib_dev *dev, u8 port_num,
|
||||
}
|
||||
|
||||
switch (gid_type) {
|
||||
case IB_GID_TYPE_IB:
|
||||
case IB_GID_TYPE_ROCE:
|
||||
roce_version = MLX5_ROCE_VERSION_1;
|
||||
break;
|
||||
case IB_GID_TYPE_ROCE_UDP_ENCAP:
|
||||
|
@ -1157,7 +1157,7 @@ static inline int get_gid_info_from_table(struct ib_qp *ibqp,
|
||||
SET_FIELD(qp_params->modify_flags,
|
||||
QED_ROCE_MODIFY_QP_VALID_ROCE_MODE, 1);
|
||||
break;
|
||||
case RDMA_NETWORK_IB:
|
||||
case RDMA_NETWORK_ROCE_V1:
|
||||
memcpy(&qp_params->sgid.bytes[0], &gid_attr->gid.raw[0],
|
||||
sizeof(qp_params->sgid));
|
||||
memcpy(&qp_params->dgid.bytes[0],
|
||||
@ -1177,6 +1177,8 @@ static inline int get_gid_info_from_table(struct ib_qp *ibqp,
|
||||
QED_ROCE_MODIFY_QP_VALID_ROCE_MODE, 1);
|
||||
qp_params->roce_mode = ROCE_V2_IPV4;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
@ -138,10 +138,9 @@ union ib_gid {
|
||||
extern union ib_gid zgid;
|
||||
|
||||
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_ROCE = 1,
|
||||
IB_GID_TYPE_ROCE_UDP_ENCAP = 2,
|
||||
IB_GID_TYPE_SIZE
|
||||
};
|
||||
|
||||
@ -180,7 +179,7 @@ rdma_node_get_transport(unsigned int node_type);
|
||||
|
||||
enum rdma_network_type {
|
||||
RDMA_NETWORK_IB,
|
||||
RDMA_NETWORK_ROCE_V1 = RDMA_NETWORK_IB,
|
||||
RDMA_NETWORK_ROCE_V1,
|
||||
RDMA_NETWORK_IPV4,
|
||||
RDMA_NETWORK_IPV6
|
||||
};
|
||||
@ -190,9 +189,10 @@ static inline enum ib_gid_type ib_network_to_gid_type(enum rdma_network_type net
|
||||
if (network_type == RDMA_NETWORK_IPV4 ||
|
||||
network_type == RDMA_NETWORK_IPV6)
|
||||
return IB_GID_TYPE_ROCE_UDP_ENCAP;
|
||||
|
||||
/* IB_GID_TYPE_IB same as RDMA_NETWORK_ROCE_V1 */
|
||||
return IB_GID_TYPE_IB;
|
||||
else if (network_type == RDMA_NETWORK_ROCE_V1)
|
||||
return IB_GID_TYPE_ROCE;
|
||||
else
|
||||
return IB_GID_TYPE_IB;
|
||||
}
|
||||
|
||||
static inline enum rdma_network_type
|
||||
@ -201,6 +201,9 @@ rdma_gid_attr_network_type(const struct ib_gid_attr *attr)
|
||||
if (attr->gid_type == IB_GID_TYPE_IB)
|
||||
return RDMA_NETWORK_IB;
|
||||
|
||||
if (attr->gid_type == IB_GID_TYPE_ROCE)
|
||||
return RDMA_NETWORK_ROCE_V1;
|
||||
|
||||
if (ipv6_addr_v4mapped((struct in6_addr *)&attr->gid))
|
||||
return RDMA_NETWORK_IPV4;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user