mirror of https://gitee.com/openkylin/linux.git
RDMA: Fix link active_speed size
According to the IB spec active_speed size should be u16 and not u8 as before. Changing it to allow further extensions in offered speeds. Link: https://lore.kernel.org/r/20200917090223.1018224-4-leon@kernel.org Signed-off-by: Aharon Landau <aharonl@mellanox.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
e27014bdb4
commit
376ceb31ff
|
@ -165,7 +165,8 @@ void copy_port_attr_to_resp(struct ib_port_attr *attr,
|
|||
resp->subnet_timeout = attr->subnet_timeout;
|
||||
resp->init_type_reply = attr->init_type_reply;
|
||||
resp->active_width = attr->active_width;
|
||||
resp->active_speed = attr->active_speed;
|
||||
/* This ABI needs to be extended to provide any speed more than IB_SPEED_NDR */
|
||||
resp->active_speed = min_t(u16, attr->active_speed, IB_SPEED_NDR);
|
||||
resp->phys_state = attr->phys_state;
|
||||
resp->link_layer = rdma_port_get_link_layer(ib_dev, port_num);
|
||||
}
|
||||
|
|
|
@ -1781,7 +1781,7 @@ int ib_modify_qp_with_udata(struct ib_qp *ib_qp, struct ib_qp_attr *attr,
|
|||
}
|
||||
EXPORT_SYMBOL(ib_modify_qp_with_udata);
|
||||
|
||||
int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u8 *speed, u8 *width)
|
||||
int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u16 *speed, u8 *width)
|
||||
{
|
||||
int rc;
|
||||
u32 netdev_speed;
|
||||
|
|
|
@ -150,7 +150,7 @@ struct bnxt_re_dev {
|
|||
|
||||
struct delayed_work worker;
|
||||
u8 cur_prio_map;
|
||||
u8 active_speed;
|
||||
u16 active_speed;
|
||||
u8 active_width;
|
||||
|
||||
/* FP Notification Queue (CQ & SRQ) */
|
||||
|
|
|
@ -1424,7 +1424,7 @@ static int query_port(struct rvt_dev_info *rdi, u8 port_num,
|
|||
props->gid_tbl_len = HFI1_GUIDS_PER_PORT;
|
||||
props->active_width = (u8)opa_width_to_ib(ppd->link_width_active);
|
||||
/* see rate_show() in ib core/sysfs.c */
|
||||
props->active_speed = (u8)opa_speed_to_ib(ppd->link_speed_active);
|
||||
props->active_speed = opa_speed_to_ib(ppd->link_speed_active);
|
||||
props->max_vl_num = ppd->vls_supported;
|
||||
|
||||
/* Once we are a "first class" citizen and have added the OPA MTUs to
|
||||
|
|
|
@ -457,7 +457,6 @@ static int mlx5_query_port_roce(struct ib_device *device, u8 port_num,
|
|||
bool put_mdev = true;
|
||||
u16 qkey_viol_cntr;
|
||||
u32 eth_prot_oper;
|
||||
u16 active_speed;
|
||||
u8 mdev_port_num;
|
||||
bool ext;
|
||||
int err;
|
||||
|
@ -491,12 +490,9 @@ static int mlx5_query_port_roce(struct ib_device *device, u8 port_num,
|
|||
props->active_width = IB_WIDTH_4X;
|
||||
props->active_speed = IB_SPEED_QDR;
|
||||
|
||||
translate_eth_proto_oper(eth_prot_oper, &active_speed,
|
||||
translate_eth_proto_oper(eth_prot_oper, &props->active_speed,
|
||||
&props->active_width, ext);
|
||||
|
||||
WARN_ON_ONCE(active_speed & ~0xFF);
|
||||
props->active_speed = (u8)active_speed;
|
||||
|
||||
props->port_cap_flags |= IB_PORT_CM_SUP;
|
||||
props->ip_gids = true;
|
||||
|
||||
|
@ -1307,7 +1303,7 @@ static int mlx5_query_hca_port(struct ib_device *ibdev, u8 port,
|
|||
props->port_cap_flags2 = rep->cap_mask2;
|
||||
|
||||
err = mlx5_query_ib_port_oper(mdev, &ib_link_width_oper,
|
||||
(u16 *)&props->active_speed, port);
|
||||
&props->active_speed, port);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ int ocrdma_query_device(struct ib_device *ibdev, struct ib_device_attr *attr,
|
|||
}
|
||||
|
||||
static inline void get_link_speed_and_width(struct ocrdma_dev *dev,
|
||||
u8 *ib_speed, u8 *ib_width)
|
||||
u16 *ib_speed, u8 *ib_width)
|
||||
{
|
||||
int status;
|
||||
u8 speed;
|
||||
|
|
|
@ -163,7 +163,7 @@ int qedr_query_device(struct ib_device *ibdev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void get_link_speed_and_width(int speed, u8 *ib_speed,
|
||||
static inline void get_link_speed_and_width(int speed, u16 *ib_speed,
|
||||
u8 *ib_width)
|
||||
{
|
||||
switch (speed) {
|
||||
|
|
|
@ -619,11 +619,11 @@ struct qib_pportdata {
|
|||
/* LID mask control */
|
||||
u8 lmc;
|
||||
u8 link_width_supported;
|
||||
u8 link_speed_supported;
|
||||
u16 link_speed_supported;
|
||||
u8 link_width_enabled;
|
||||
u8 link_speed_enabled;
|
||||
u16 link_speed_enabled;
|
||||
u8 link_width_active;
|
||||
u8 link_speed_active;
|
||||
u16 link_speed_active;
|
||||
u8 vls_supported;
|
||||
u8 vls_operational;
|
||||
/* Rx Polarity inversion (compensate for ~tx on partner) */
|
||||
|
|
|
@ -176,7 +176,7 @@ struct pvrdma_port_attr {
|
|||
u8 subnet_timeout;
|
||||
u8 init_type_reply;
|
||||
u8 active_width;
|
||||
u8 active_speed;
|
||||
u16 active_speed;
|
||||
u8 phys_state;
|
||||
u8 reserved[2];
|
||||
};
|
||||
|
|
|
@ -535,7 +535,8 @@ enum ib_port_speed {
|
|||
IB_SPEED_FDR10 = 8,
|
||||
IB_SPEED_FDR = 16,
|
||||
IB_SPEED_EDR = 32,
|
||||
IB_SPEED_HDR = 64
|
||||
IB_SPEED_HDR = 64,
|
||||
IB_SPEED_NDR = 128,
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -669,7 +670,7 @@ struct ib_port_attr {
|
|||
u8 subnet_timeout;
|
||||
u8 init_type_reply;
|
||||
u8 active_width;
|
||||
u8 active_speed;
|
||||
u16 active_speed;
|
||||
u8 phys_state;
|
||||
u16 port_cap_flags2;
|
||||
};
|
||||
|
@ -4410,7 +4411,7 @@ void ib_drain_rq(struct ib_qp *qp);
|
|||
void ib_drain_sq(struct ib_qp *qp);
|
||||
void ib_drain_qp(struct ib_qp *qp);
|
||||
|
||||
int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u8 *speed, u8 *width);
|
||||
int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u16 *speed, u8 *width);
|
||||
|
||||
static inline u8 *rdma_ah_retrieve_dmac(struct rdma_ah_attr *attr)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue