diff options
author | Selvin Xavier <selvin.xavier@emulex.com> | 2014-08-22 07:27:20 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-10-10 12:43:01 -0400 |
commit | bf67472ca1fac19c81367601bd4ba7d17bdc9f6e (patch) | |
tree | 033dc022ee1044e7c594b8fc248bdc5e02fe882f | |
parent | 7ec11e0a14ae0a7a8fdce78860a70f25508de395 (diff) |
RDMA/ocrdma: Get vlan tag from ib_qp_attrs
After IP-based GID changes, VLAN id can be obtained from
qp_attr->vlan_id.
Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com>
Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c index dd35ae558ae1..10a261c4ea98 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c | |||
@@ -2279,7 +2279,8 @@ mbx_err: | |||
2279 | 2279 | ||
2280 | static int ocrdma_set_av_params(struct ocrdma_qp *qp, | 2280 | static int ocrdma_set_av_params(struct ocrdma_qp *qp, |
2281 | struct ocrdma_modify_qp *cmd, | 2281 | struct ocrdma_modify_qp *cmd, |
2282 | struct ib_qp_attr *attrs) | 2282 | struct ib_qp_attr *attrs, |
2283 | int attr_mask) | ||
2283 | { | 2284 | { |
2284 | int status; | 2285 | int status; |
2285 | struct ib_ah_attr *ah_attr = &attrs->ah_attr; | 2286 | struct ib_ah_attr *ah_attr = &attrs->ah_attr; |
@@ -2319,8 +2320,8 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp, | |||
2319 | ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); | 2320 | ocrdma_cpu_to_le32(&cmd->params.dgid[0], sizeof(cmd->params.dgid)); |
2320 | ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); | 2321 | ocrdma_cpu_to_le32(&cmd->params.sgid[0], sizeof(cmd->params.sgid)); |
2321 | cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); | 2322 | cmd->params.vlan_dmac_b4_to_b5 = mac_addr[4] | (mac_addr[5] << 8); |
2322 | vlan_id = ah_attr->vlan_id; | 2323 | if (attr_mask & IB_QP_VID) { |
2323 | if (vlan_id && (vlan_id < 0x1000)) { | 2324 | vlan_id = attrs->vlan_id; |
2324 | cmd->params.vlan_dmac_b4_to_b5 |= | 2325 | cmd->params.vlan_dmac_b4_to_b5 |= |
2325 | vlan_id << OCRDMA_QP_PARAMS_VLAN_SHIFT; | 2326 | vlan_id << OCRDMA_QP_PARAMS_VLAN_SHIFT; |
2326 | cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; | 2327 | cmd->flags |= OCRDMA_QP_PARA_VLAN_EN_VALID; |
@@ -2347,7 +2348,7 @@ static int ocrdma_set_qp_params(struct ocrdma_qp *qp, | |||
2347 | cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; | 2348 | cmd->flags |= OCRDMA_QP_PARA_QKEY_VALID; |
2348 | } | 2349 | } |
2349 | if (attr_mask & IB_QP_AV) { | 2350 | if (attr_mask & IB_QP_AV) { |
2350 | status = ocrdma_set_av_params(qp, cmd, attrs); | 2351 | status = ocrdma_set_av_params(qp, cmd, attrs, attr_mask); |
2351 | if (status) | 2352 | if (status) |
2352 | return status; | 2353 | return status; |
2353 | } else if (qp->qp_type == IB_QPT_GSI || qp->qp_type == IB_QPT_UD) { | 2354 | } else if (qp->qp_type == IB_QPT_GSI || qp->qp_type == IB_QPT_UD) { |