From: Devesh Sharma Date: Wed, 19 Feb 2014 11:10:35 +0000 (-0800) Subject: RDMA/ocrdma: Added ocrdma cherry-picks based on upstream commits X-Git-Tag: vofed-3.12~25 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=cdf32448c956017b4bb2bcdd1bcea75f14fe07a6;p=~emulex%2Ftmp%2Fcompat-rdma%2F.git RDMA/ocrdma: Added ocrdma cherry-picks based on upstream commits fe5e8a1acc7fd877b6706053cf88c418c33fe7a3 RDMA/ocrdma: Fix AV_VALID bit position be8348df6efac6b602f2ad3210139bccf0dbe3d7 RDMA/ocrdma: Fix OCRDMA_GEN2_FAMILY macro definition da2f920ba5405aa1d1b2c71168e5c59f9ef732dc RDMA/ocrdma: Fix traffic class shift b140314053fe6b7f4543b3e9c92f716712ec3d7a RDMA/ocrdma: Fix load time panic during GID table init Signed-off-by: Devesh Sharma --- diff --git a/linux-next-cherry-picks/0043-RDMA-ocrdma-Fix-AV_VALID-bit-position.patch b/linux-next-cherry-picks/0043-RDMA-ocrdma-Fix-AV_VALID-bit-position.patch new file mode 100644 index 0000000..855108c --- /dev/null +++ b/linux-next-cherry-picks/0043-RDMA-ocrdma-Fix-AV_VALID-bit-position.patch @@ -0,0 +1,43 @@ +From b4bf21da04a78203f7028b0d17caf16a7534b946 Mon Sep 17 00:00:00 2001 +From: Devesh Sharma +Date: Thu, 5 Dec 2013 15:48:01 +0530 +Subject: [PATCH 1/4] RDMA/ocrdma: Fix AV_VALID bit position + +Fix ah->av->valid bit position and big endian portability. + +Signed-off-by: Devesh Sharma +Signed-off-by: Roland Dreier +Signed-off-by: Selvin Xavier +--- + drivers/infiniband/hw/ocrdma/ocrdma_ah.c | 1 + + drivers/infiniband/hw/ocrdma/ocrdma_sli.h | 2 +- + 2 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_ah.c b/drivers/infiniband/hw/ocrdma/ocrdma_ah.c +index ee499d9..69da5dd 100644 +--- a/drivers/infiniband/hw/ocrdma/ocrdma_ah.c ++++ b/drivers/infiniband/hw/ocrdma/ocrdma_ah.c +@@ -84,6 +84,7 @@ static inline int set_av_attr(struct ocrdma_dev *dev, struct ocrdma_ah *ah, + memcpy((u8 *)ah->av + eth_sz, &grh, sizeof(struct ocrdma_grh)); + if (vlan_enabled) + ah->av->valid |= OCRDMA_AV_VLAN_VALID; ++ ah->av->valid = cpu_to_le32(ah->av->valid); + return status; + } + +diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_sli.h b/drivers/infiniband/hw/ocrdma/ocrdma_sli.h +index 9f9570e..2708903 100644 +--- a/drivers/infiniband/hw/ocrdma/ocrdma_sli.h ++++ b/drivers/infiniband/hw/ocrdma/ocrdma_sli.h +@@ -1694,7 +1694,7 @@ struct ocrdma_grh { + u16 rsvd; + } __packed; + +-#define OCRDMA_AV_VALID Bit(0) ++#define OCRDMA_AV_VALID Bit(7) + #define OCRDMA_AV_VLAN_VALID Bit(1) + + struct ocrdma_av { +-- +1.7.1 + diff --git a/linux-next-cherry-picks/0044-RDMA-ocrdma-Fix-OCRDMA_GEN2_FAMILY-macro-definition.patch b/linux-next-cherry-picks/0044-RDMA-ocrdma-Fix-OCRDMA_GEN2_FAMILY-macro-definition.patch new file mode 100644 index 0000000..af216d9 --- /dev/null +++ b/linux-next-cherry-picks/0044-RDMA-ocrdma-Fix-OCRDMA_GEN2_FAMILY-macro-definition.patch @@ -0,0 +1,29 @@ +From fef5ee19f628a745ea46a74d7a962721f38ab2e3 Mon Sep 17 00:00:00 2001 +From: Devesh Sharma +Date: Thu, 5 Dec 2013 04:16:07 +0000 +Subject: [PATCH 2/4] RDMA/ocrdma: Fix OCRDMA_GEN2_FAMILY macro definition + +OCRDMA_GEN2_FAMILY is wrongly defined as 0x02 -- it should be 0x0F. + +Signed-off-by: Devesh Sharma +Signed-off-by: Roland Dreier +--- + drivers/infiniband/hw/ocrdma/ocrdma_sli.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_sli.h b/drivers/infiniband/hw/ocrdma/ocrdma_sli.h +index 2708903..60d5ac2 100644 +--- a/drivers/infiniband/hw/ocrdma/ocrdma_sli.h ++++ b/drivers/infiniband/hw/ocrdma/ocrdma_sli.h +@@ -31,7 +31,7 @@ + #define Bit(_b) (1 << (_b)) + + #define OCRDMA_GEN1_FAMILY 0xB +-#define OCRDMA_GEN2_FAMILY 0x2 ++#define OCRDMA_GEN2_FAMILY 0x0F + + #define OCRDMA_SUBSYS_ROCE 10 + enum { +-- +1.7.1 + diff --git a/linux-next-cherry-picks/0045-RDMA-ocrdma-Fix-traffic-class-shift.patch b/linux-next-cherry-picks/0045-RDMA-ocrdma-Fix-traffic-class-shift.patch new file mode 100644 index 0000000..a3fe7ff --- /dev/null +++ b/linux-next-cherry-picks/0045-RDMA-ocrdma-Fix-traffic-class-shift.patch @@ -0,0 +1,31 @@ +From da9d6c3b177016ee810d8827cddbf71c2ee80265 Mon Sep 17 00:00:00 2001 +From: devesh.sharma@emulex.com +Date: Mon, 10 Feb 2014 08:18:58 +0000 +Subject: [PATCH 3/4] RDMA/ocrdma: Fix traffic class shift + +Use correct value for obtaining traffic class from device +response for Query QP request. + +Signed-off-by: Devesh Sharma +Reported-by: Dan Carpenter +Signed-off-by: Roland Dreier +--- + drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +index 69f1d12..86242ce 100644 +--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c ++++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +@@ -1415,7 +1415,7 @@ int ocrdma_query_qp(struct ib_qp *ibqp, + OCRDMA_QP_PARAMS_HOP_LMT_MASK) >> + OCRDMA_QP_PARAMS_HOP_LMT_SHIFT; + qp_attr->ah_attr.grh.traffic_class = (params.tclass_sq_psn & +- OCRDMA_QP_PARAMS_SQ_PSN_MASK) >> ++ OCRDMA_QP_PARAMS_TCLASS_MASK) >> + OCRDMA_QP_PARAMS_TCLASS_SHIFT; + + qp_attr->ah_attr.ah_flags = IB_AH_GRH; +-- +1.7.1 + diff --git a/linux-next-cherry-picks/0046-RDMA-ocrdma-Fix-load-time-panic-during-GID-table-ini.patch b/linux-next-cherry-picks/0046-RDMA-ocrdma-Fix-load-time-panic-during-GID-table-ini.patch new file mode 100644 index 0000000..f284777 --- /dev/null +++ b/linux-next-cherry-picks/0046-RDMA-ocrdma-Fix-load-time-panic-during-GID-table-ini.patch @@ -0,0 +1,40 @@ +From 94e15b2d7dfedfdcde819dc5c6590226a172b84a Mon Sep 17 00:00:00 2001 +From: Devesh Sharma +Date: Sat, 1 Feb 2014 18:54:25 +0530 +Subject: [PATCH 4/4] RDMA/ocrdma: Fix load time panic during GID table init + +driver should use rdma_vlan_dev_real_dev() instead of using vlan_dev_real_dev() +while building GID table for a vlan interface. + +Signed-off-by: Devesh Sharma +--- + drivers/infiniband/hw/ocrdma/ocrdma_main.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c +index 0ce7674..48794bb 100644 +--- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c ++++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c +@@ -161,7 +161,9 @@ static void ocrdma_add_vlan_sgids(struct ocrdma_dev *dev) + + rcu_read_lock(); + for_each_netdev_rcu(&init_net, tmp) { +- if (netdev == tmp || vlan_dev_real_dev(tmp) == netdev) { ++ if ( ++ netdev && (netdev == tmp || ++ rdma_vlan_dev_real_dev(tmp) == netdev)) { + if (!netif_running(tmp) || !netif_oper_up(tmp)) + continue; + if (netdev != tmp) { +@@ -208,7 +210,7 @@ static int ocrdma_inet6addr_event(struct notifier_block *notifier, + is_vlan = netdev->priv_flags & IFF_802_1Q_VLAN; + if (is_vlan) { + vid = vlan_dev_vlan_id(netdev); +- netdev = vlan_dev_real_dev(netdev); ++ netdev = rdma_vlan_dev_real_dev(netdev); + } + + rcu_read_lock(); +-- +1.7.1 +