mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +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 ird;
|
||||
u8 num_ird_pages;
|
||||
u8 udp_encap;
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -1144,6 +1144,9 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
|
|||
attr->max_pd =
|
||||
(rsp->max_pd_ca_ack_delay & OCRDMA_MBX_QUERY_CFG_MAX_PD_MASK) >>
|
||||
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 =
|
||||
(rsp->max_dpp_pds_credits & OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_MASK) >>
|
||||
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_attr attr;
|
||||
struct ocrdma_dev *dev;
|
||||
int err;
|
||||
|
||||
dev = get_ocrdma_dev(ibdev);
|
||||
err = ocrdma_query_port(ibdev, port_num, &attr);
|
||||
if (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->gid_tbl_len = attr.gid_tbl_len;
|
||||
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;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -140,7 +140,11 @@ enum {
|
|||
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_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_MASK = 0xFF <<
|
||||
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_MASK = 0xFFFF,
|
||||
OCRDMA_MBX_QUERY_CFG_MAX_WRITE_SGE_SHIFT = 16,
|
||||
|
|
Loading…
Reference in a new issue