]> git.openfabrics.org - ~emulex/for-vlad/compat-rdma.git/commitdiff
Backports for linux-3.5 nes to RHEL-6.2 and RHEL-6.3
authorTatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Sun, 15 Jul 2012 10:37:20 +0000 (13:37 +0300)
committerVladimir Sokolovsky <vlad@mellanox.com>
Sun, 15 Jul 2012 10:37:49 +0000 (13:37 +0300)
Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
patches/0008-BACKPORT-nes-for-RHEL-6.2-6.3.patch [new file with mode: 0644]

diff --git a/patches/0008-BACKPORT-nes-for-RHEL-6.2-6.3.patch b/patches/0008-BACKPORT-nes-for-RHEL-6.2-6.3.patch
new file mode 100644 (file)
index 0000000..e43bbf3
--- /dev/null
@@ -0,0 +1,130 @@
+From: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>\r
+Subject: [PATCH] RDMA/nes: Backports for RHEL 6.2 and 6.3\r
+\r
+Backports for linux-3.5 nes to RHEL-6.2 and RHEL-6.3\r
+\r
+Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>\r
+---\r
+ drivers/infiniband/hw/nes/nes_cm.c  |   12 +++++++++++-\r
+ drivers/infiniband/hw/nes/nes_nic.c |   26 +++++++++++++++++++++++---\r
+ 2 files changed, 34 insertions(+), 4 deletions(-)\r
+\r
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c\r
+index 020e95c..0b5b1a9 100644\r
+--- a/drivers/infiniband/hw/nes/nes_cm.c\r
++++ b/drivers/infiniband/hw/nes/nes_cm.c\r
+@@ -1343,9 +1343,16 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi\r
+       int rc = arpindex;\r
+       struct net_device *netdev;\r
+       struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;\r
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))\r
++      struct flowi fl;\r
\r
++      memset(&fl, 0, sizeof fl);\r
++      fl.nl_u.ip4_u.daddr = htonl(dst_ip);\r
++      if (ip_route_output_key(&init_net, &rt, &fl)) {\r
++#else\r
+       rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);\r
+       if (IS_ERR(rt)) {\r
++#endif\r
+               printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",\r
+                      __func__, dst_ip);\r
+               return rc;\r
+@@ -1356,8 +1363,11 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi\r
+       else\r
+               netdev = nesvnic->netdev;\r
\r
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))\r
++      neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);\r
++#else\r
+       neigh = dst_neigh_lookup(&rt->dst, &dst_ip);\r
+-\r
++#endif\r
+       rcu_read_lock();\r
+       if (neigh) {\r
+               if (neigh->nud_state & NUD_VALID) {\r
+diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c\r
+index f3a3ecf..8544d0a 100644\r
+--- a/drivers/infiniband/hw/nes/nes_nic.c\r
++++ b/drivers/infiniband/hw/nes/nes_nic.c\r
+@@ -909,7 +909,11 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)\r
+       if (!mc_all_on) {\r
+               char *addrs;\r
+               int i;\r
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))\r
+               struct netdev_hw_addr *ha;\r
++#else\r
++              struct dev_mc_list *mcaddr;\r
++#endif\r
\r
+               addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);\r
+               if (!addrs) {\r
+@@ -917,9 +921,13 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)\r
+                       goto unlock;\r
+               }\r
+               i = 0;\r
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))\r
+               netdev_for_each_mc_addr(ha, netdev)\r
+                       memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);\r
+-\r
++#else\r
++              netdev_for_each_mc_addr(mcaddr, netdev)\r
++                      memcpy(get_addr(addrs, i++), mcaddr->dmi_addr, ETH_ALEN);\r
++#endif\r
+               perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +\r
+                                               pft_entries_preallocated * 0x8;\r
+               for (i = 0, mc_index = 0; mc_index < max_pft_entries_avaiable;\r
+@@ -1610,6 +1618,7 @@ static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev,\r
+       spin_unlock_irqrestore(&nesadapter->phy_lock, flags);\r
+ }\r
\r
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
+ static netdev_features_t nes_fix_features(struct net_device *netdev, netdev_features_t features)\r
+ {\r
+       /*\r
+@@ -1635,6 +1644,7 @@ static int nes_set_features(struct net_device *netdev, netdev_features_t feature\r
\r
+       return 0;\r
+ }\r
++#endif\r
\r
+ static const struct net_device_ops nes_netdev_ops = {\r
+       .ndo_open               = nes_netdev_open,\r
+@@ -1646,8 +1656,10 @@ static const struct net_device_ops nes_netdev_ops = {\r
+       .ndo_set_rx_mode        = nes_netdev_set_multicast_list,\r
+       .ndo_change_mtu         = nes_netdev_change_mtu,\r
+       .ndo_validate_addr      = eth_validate_addr,\r
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
+       .ndo_fix_features       = nes_fix_features,\r
+       .ndo_set_features       = nes_set_features,\r
++#endif\r
+ };\r
\r
+ /**\r
+@@ -1711,12 +1723,20 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,\r
+       netdev->dev_addr[5] = (u8)u64temp;\r
+       memcpy(netdev->perm_addr, netdev->dev_addr, 6);\r
\r
++      netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;\r
++\r
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
+       netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |\r
+                             NETIF_F_HW_VLAN_RX;\r
+-      if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV))\r
+-              netdev->hw_features |= NETIF_F_TSO;\r
+       netdev->features |= netdev->hw_features;\r
+       netdev->hw_features |= NETIF_F_LRO;\r
++#endif\r
++      if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {\r
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
++              netdev->hw_features |= NETIF_F_TSO;\r
++#endif\r
++              netdev->features |= NETIF_F_TSO | NETIF_F_GSO;\r
++      }\r
\r
+       nes_debug(NES_DBG_INIT, "nesvnic = %p, reported features = 0x%lX, QPid = %d,"\r
+                       " nic_index = %d, logical_port = %d, mac_index = %d.\n",\r
+-- \r
+1.7.4.2\r
+\r
+\r