RDMA/ocrdma: Obtain SL from device structure
authorDevesh Sharma <devesh.sharma@emulex.com>
Wed, 2 Jul 2014 06:06:04 +0000 (11:36 +0530)
committerRoland Dreier <roland@purestorage.com>
Wed, 13 Aug 2014 05:07:30 +0000 (22:07 -0700)
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>
drivers/infiniband/hw/ocrdma/ocrdma_ah.c
drivers/infiniband/hw/ocrdma/ocrdma_hw.c

index a023234d4b921ca874cc002c18f35624c46ab4c7..40f8536c10b00e60db462ab9eaef26fd7a46945c 100644 (file)
@@ -35,6 +35,8 @@
 #include "ocrdma_ah.h"
 #include "ocrdma_hw.h"
 
+#define OCRDMA_VID_PCP_SHIFT   0xD
+
 static inline int set_av_attr(struct ocrdma_dev *dev, struct ocrdma_ah *ah,
                                struct ib_ah_attr *attr, int pdid)
 {
@@ -55,7 +57,7 @@ static inline int set_av_attr(struct ocrdma_dev *dev, struct ocrdma_ah *ah,
        if (vlan_tag && (vlan_tag < 0x1000)) {
                eth.eth_type = cpu_to_be16(0x8100);
                eth.roce_eth_type = cpu_to_be16(OCRDMA_ROCE_ETH_TYPE);
-               vlan_tag |= (attr->sl & 7) << 13;
+               vlan_tag |= (dev->sl & 0x07) << OCRDMA_VID_PCP_SHIFT;
                eth.vlan_tag = cpu_to_be16(vlan_tag);
                eth_sz = sizeof(struct ocrdma_eth_vlan);
                vlan_enabled = true;
index a4d27c70528f4a97c47f83cef55ff6ce53054fbb..df68782b32d1b284a2a8cb39d77ff323f1c4ed00 100644 (file)
@@ -2314,10 +2314,8 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp,
                cmd->params.vlan_dmac_b4_to_b5 |=
                    vlan_id << OCRDMA_QP_PARAMS_VLAN_SHIFT;
                cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID;
-               /* override the sl with default priority if 0 */
                cmd->params.rnt_rc_sl_fl |=
-                       (ah_attr->sl ? ah_attr->sl :
-                               qp->dev->sl) << OCRDMA_QP_PARAMS_SL_SHIFT;
+                       (qp->dev->sl & 0x07) << OCRDMA_QP_PARAMS_SL_SHIFT;
        }
        return 0;
 }