--- /dev/null
+From b4bf21da04a78203f7028b0d17caf16a7534b946 Mon Sep 17 00:00:00 2001
+From: Devesh Sharma <devesh.sharma@emulex.com>
+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 <devesh.sharma@emulex.com>
+Signed-off-by: Roland Dreier <roland@purestorage.com>
+Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
+---
+ 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
+
--- /dev/null
+From fef5ee19f628a745ea46a74d7a962721f38ab2e3 Mon Sep 17 00:00:00 2001
+From: Devesh Sharma <devesh.sharma@emulex.com>
+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 <devesh.sharma@emulex.com>
+Signed-off-by: Roland Dreier <roland@purestorage.com>
+---
+ 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
+
--- /dev/null
+From da9d6c3b177016ee810d8827cddbf71c2ee80265 Mon Sep 17 00:00:00 2001
+From: devesh.sharma@emulex.com <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 <devesh.sharma@emulex.com>
+Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Roland Dreier <roland@purestorage.com>
+---
+ 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
+
--- /dev/null
+From 94e15b2d7dfedfdcde819dc5c6590226a172b84a Mon Sep 17 00:00:00 2001
+From: Devesh Sharma <devesh.sharma@emulex.com>
+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 <devesh.sharma@emulex.com>
+---
+ 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
+