aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDevesh Sharma <devesh.sharma@emulex.com>2014-07-02 02:06:04 -0400
committerRoland Dreier <roland@purestorage.com>2014-08-13 01:07:30 -0400
commit0ea8726250cae3defa0c1065801017f26a269c93 (patch)
tree06712b6edb9ed314d049ad6bb6a1731a9704fc4f /drivers
parent741742ed71c2cc12573ea6cf41ef1fbb3b2efe97 (diff)
RDMA/ocrdma: Obtain SL from device structure
Currently, driver obtains service level value from ah_attr->sl field. However, this field is set to zero all the times from rdma-cm. This patch allows create_ah to obtain service level from dev->sl. Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_ah.c4
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_hw.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_ah.c b/drivers/infiniband/hw/ocrdma/ocrdma_ah.c
index a023234d4b92..40f8536c10b0 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_ah.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_ah.c
@@ -35,6 +35,8 @@
35#include "ocrdma_ah.h" 35#include "ocrdma_ah.h"
36#include "ocrdma_hw.h" 36#include "ocrdma_hw.h"
37 37
38#define OCRDMA_VID_PCP_SHIFT 0xD
39
38static inline int set_av_attr(struct ocrdma_dev *dev, struct ocrdma_ah *ah, 40static inline int set_av_attr(struct ocrdma_dev *dev, struct ocrdma_ah *ah,
39 struct ib_ah_attr *attr, int pdid) 41 struct ib_ah_attr *attr, int pdid)
40{ 42{
@@ -55,7 +57,7 @@ static inline int set_av_attr(struct ocrdma_dev *dev, struct ocrdma_ah *ah,
55 if (vlan_tag && (vlan_tag < 0x1000)) { 57 if (vlan_tag && (vlan_tag < 0x1000)) {
56 eth.eth_type = cpu_to_be16(0x8100); 58 eth.eth_type = cpu_to_be16(0x8100);
57 eth.roce_eth_type = cpu_to_be16(OCRDMA_ROCE_ETH_TYPE); 59 eth.roce_eth_type = cpu_to_be16(OCRDMA_ROCE_ETH_TYPE);
58 vlan_tag |= (attr->sl & 7) << 13; 60 vlan_tag |= (dev->sl & 0x07) << OCRDMA_VID_PCP_SHIFT;
59 eth.vlan_tag = cpu_to_be16(vlan_tag); 61 eth.vlan_tag = cpu_to_be16(vlan_tag);
60 eth_sz = sizeof(struct ocrdma_eth_vlan); 62 eth_sz = sizeof(struct ocrdma_eth_vlan);
61 vlan_enabled = true; 63 vlan_enabled = true;
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
index a4d27c70528f..df68782b32d1 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
@@ -2314,10 +2314,8 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp,
2314 cmd->params.vlan_dmac_b4_to_b5 |= 2314 cmd->params.vlan_dmac_b4_to_b5 |=
2315 vlan_id << OCRDMA_QP_PARAMS_VLAN_SHIFT; 2315 vlan_id << OCRDMA_QP_PARAMS_VLAN_SHIFT;
2316 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; 2316 cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID;
2317 /* override the sl with default priority if 0 */
2318 cmd->params.rnt_rc_sl_fl |= 2317 cmd->params.rnt_rc_sl_fl |=
2319 (ah_attr->sl ? ah_attr->sl : 2318 (qp->dev->sl & 0x07) << OCRDMA_QP_PARAMS_SL_SHIFT;
2320 qp->dev->sl) << OCRDMA_QP_PARAMS_SL_SHIFT;
2321 } 2319 }
2322 return 0; 2320 return 0;
2323} 2321}