--- /dev/null
+From 822db87429e1fe56599a65ed355359362c4d5804 Mon Sep 17 00:00:00 2001
+From: Vipul Pandya <vipul@chelsio.com>
+Date: Mon, 30 Jul 2012 12:38:36 +0530
+Subject: [PATCH 3/4] iw_cxgb3: Backports for RHEL6.2 RHEL 6.3 and SLES11 SP2
+
+Signed-off-by: Vipul Pandya <vipul@chelsio.com>
+---
+ drivers/infiniband/hw/cxgb3/iwch_cm.c | 29 +++++++++++++++++++++++++++++
+ 1 files changed, 29 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
+index 740dcc0..07bef67 100644
+--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
++++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
+@@ -338,12 +338,33 @@ static struct rtable *find_route(struct t3cdev *dev, __be32 local_ip,
+ __be16 peer_port, u8 tos)
+ {
+ struct rtable *rt;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)
+ struct flowi4 fl4;
+
+ rt = ip_route_output_ports(&init_net, &fl4, NULL, peer_ip, local_ip,
+ peer_port, local_port, IPPROTO_TCP,
+ tos, 0);
+ if (IS_ERR(rt))
++#else
++ struct flowi fl = {
++ .oif = 0,
++ .nl_u = {
++ .ip4_u = {
++ .daddr = peer_ip,
++ .saddr = local_ip,
++ .tos = tos
++ }
++ },
++ .proto = IPPROTO_TCP,
++ .uli_u = {
++ .ports = {
++ .sport = local_port,
++ .dport = peer_port
++ }
++ }
++ };
++ if (ip_route_output_flow(&init_net, &rt, &fl, NULL, false))
++#endif
+ return NULL;
+ return rt;
+ }
+@@ -1373,7 +1394,11 @@ static int pass_accept_req(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
+ __func__);
+ goto reject;
+ }
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
+ dst = &rt->dst;
++#else
++ dst = &rt->u.dst;
++#endif
+ l2t = t3_l2t_get(tdev, dst, NULL);
+ if (!l2t) {
+ printk(KERN_ERR MOD "%s - failed to allocate l2t entry!\n",
+@@ -1941,7 +1966,11 @@ int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
+ err = -EHOSTUNREACH;
+ goto fail3;
+ }
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
+ ep->dst = &rt->dst;
++#else
++ ep->dst = &rt->u.dst;
++#endif
+ ep->l2t = t3_l2t_get(ep->com.tdev, ep->dst, NULL);
+ if (!ep->l2t) {
+ printk(KERN_ERR MOD "%s - cannot alloc l2e.\n", __func__);
+--
+1.7.1
+