mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
RDMA/ocrdma: Export udp encapsulation capability
Add support to read device configuration and initialize port-immutables to report UDP-Encap flag during port query. Signed-off-by: Devesh Sharma <devesh.sharma@avagotech.com> Signed-off-by: Somnath Kotur <somnath.kotur@avagotech.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
fc77dbd34c
commit
e1614869d3
4 changed files with 21 additions and 2 deletions
|
@ -114,6 +114,7 @@ struct ocrdma_dev_attr {
|
||||||
u8 local_ca_ack_delay;
|
u8 local_ca_ack_delay;
|
||||||
u8 ird;
|
u8 ird;
|
||||||
u8 num_ird_pages;
|
u8 num_ird_pages;
|
||||||
|
u8 udp_encap;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ocrdma_dma_mem {
|
struct ocrdma_dma_mem {
|
||||||
|
@ -598,4 +599,10 @@ static inline u8 ocrdma_get_ae_link_state(u32 ae_state)
|
||||||
return ((ae_state & OCRDMA_AE_LSC_LS_MASK) >> OCRDMA_AE_LSC_LS_SHIFT);
|
return ((ae_state & OCRDMA_AE_LSC_LS_MASK) >> OCRDMA_AE_LSC_LS_SHIFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool ocrdma_is_udp_encap_supported(struct ocrdma_dev *dev)
|
||||||
|
{
|
||||||
|
return (dev->attr.udp_encap & OCRDMA_L3_TYPE_IPV4) ||
|
||||||
|
(dev->attr.udp_encap & OCRDMA_L3_TYPE_IPV6);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1144,6 +1144,9 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
|
||||||
attr->max_pd =
|
attr->max_pd =
|
||||||
(rsp->max_pd_ca_ack_delay & OCRDMA_MBX_QUERY_CFG_MAX_PD_MASK) >>
|
(rsp->max_pd_ca_ack_delay & OCRDMA_MBX_QUERY_CFG_MAX_PD_MASK) >>
|
||||||
OCRDMA_MBX_QUERY_CFG_MAX_PD_SHIFT;
|
OCRDMA_MBX_QUERY_CFG_MAX_PD_SHIFT;
|
||||||
|
attr->udp_encap = (rsp->max_pd_ca_ack_delay &
|
||||||
|
OCRDMA_MBX_QUERY_CFG_L3_TYPE_MASK) >>
|
||||||
|
OCRDMA_MBX_QUERY_CFG_L3_TYPE_SHIFT;
|
||||||
attr->max_dpp_pds =
|
attr->max_dpp_pds =
|
||||||
(rsp->max_dpp_pds_credits & OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_MASK) >>
|
(rsp->max_dpp_pds_credits & OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_MASK) >>
|
||||||
OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_OFFSET;
|
OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_OFFSET;
|
||||||
|
|
|
@ -89,8 +89,10 @@ static int ocrdma_port_immutable(struct ib_device *ibdev, u8 port_num,
|
||||||
struct ib_port_immutable *immutable)
|
struct ib_port_immutable *immutable)
|
||||||
{
|
{
|
||||||
struct ib_port_attr attr;
|
struct ib_port_attr attr;
|
||||||
|
struct ocrdma_dev *dev;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
dev = get_ocrdma_dev(ibdev);
|
||||||
err = ocrdma_query_port(ibdev, port_num, &attr);
|
err = ocrdma_query_port(ibdev, port_num, &attr);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
@ -98,6 +100,8 @@ static int ocrdma_port_immutable(struct ib_device *ibdev, u8 port_num,
|
||||||
immutable->pkey_tbl_len = attr.pkey_tbl_len;
|
immutable->pkey_tbl_len = attr.pkey_tbl_len;
|
||||||
immutable->gid_tbl_len = attr.gid_tbl_len;
|
immutable->gid_tbl_len = attr.gid_tbl_len;
|
||||||
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
|
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
|
||||||
|
if (ocrdma_is_udp_encap_supported(dev))
|
||||||
|
immutable->core_cap_flags |= RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP;
|
||||||
immutable->max_mad_size = IB_MGMT_MAD_SIZE;
|
immutable->max_mad_size = IB_MGMT_MAD_SIZE;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -140,7 +140,11 @@ enum {
|
||||||
OCRDMA_DB_RQ_SHIFT = 24
|
OCRDMA_DB_RQ_SHIFT = 24
|
||||||
};
|
};
|
||||||
|
|
||||||
#define OCRDMA_ROUDP_FLAGS_SHIFT 0x03
|
enum {
|
||||||
|
OCRDMA_L3_TYPE_IB_GRH = 0x00,
|
||||||
|
OCRDMA_L3_TYPE_IPV4 = 0x01,
|
||||||
|
OCRDMA_L3_TYPE_IPV6 = 0x02
|
||||||
|
};
|
||||||
|
|
||||||
#define OCRDMA_DB_CQ_RING_ID_MASK 0x3FF /* bits 0 - 9 */
|
#define OCRDMA_DB_CQ_RING_ID_MASK 0x3FF /* bits 0 - 9 */
|
||||||
#define OCRDMA_DB_CQ_RING_ID_EXT_MASK 0x0C00 /* bits 10-11 of qid at 12-11 */
|
#define OCRDMA_DB_CQ_RING_ID_EXT_MASK 0x0C00 /* bits 10-11 of qid at 12-11 */
|
||||||
|
@ -546,7 +550,8 @@ enum {
|
||||||
OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT = 8,
|
OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT = 8,
|
||||||
OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_MASK = 0xFF <<
|
OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_MASK = 0xFF <<
|
||||||
OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT,
|
OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT,
|
||||||
|
OCRDMA_MBX_QUERY_CFG_L3_TYPE_SHIFT = 3,
|
||||||
|
OCRDMA_MBX_QUERY_CFG_L3_TYPE_MASK = 0x18,
|
||||||
OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_SHIFT = 0,
|
OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_SHIFT = 0,
|
||||||
OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_MASK = 0xFFFF,
|
OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_MASK = 0xFFFF,
|
||||||
OCRDMA_MBX_QUERY_CFG_MAX_WRITE_SGE_SHIFT = 16,
|
OCRDMA_MBX_QUERY_CFG_MAX_WRITE_SGE_SHIFT = 16,
|
||||||
|
|
Loading…
Reference in a new issue