]> git.openfabrics.org - ~emulex/for-vlad/compat-rdma.git/commitdiff
be2net-ocrdma: move backport patches to the correct folder
authorSelvin Xavier <selvin.xavier@emulex.com>
Tue, 24 Mar 2015 11:14:57 +0000 (04:14 -0700)
committerSelvin Xavier <selvin.xavier@emulex.com>
Tue, 24 Mar 2015 11:14:57 +0000 (04:14 -0700)
moving the ocrdma and be2net backport patches from
linux-next-pending to patches directory

Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
linux-next-pending/0008-be2net-Backport-support-for-RHEL-6.-56.patch [deleted file]
linux-next-pending/0009-RDMA-ocrdma-Backport-support-for-RHEL-6.-56.patch [deleted file]
linux-next-pending/0010-be2net-Backport-support-for-SLES11-SP3.patch [deleted file]
patches/0028-be2net-Backport-support-for-RHEL-6.-56.patch [new file with mode: 0644]
patches/0029-RDMA-ocrdma-Backport-support-for-RHEL-6.-56.patch [new file with mode: 0644]
patches/0030-be2net-Backport-support-for-SLES11-SP3.patch [new file with mode: 0644]

diff --git a/linux-next-pending/0008-be2net-Backport-support-for-RHEL-6.-56.patch b/linux-next-pending/0008-be2net-Backport-support-for-RHEL-6.-56.patch
deleted file mode 100644 (file)
index 724cd49..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-From 2df5671f3e96458d687a8f69da9b40f688cb3077 Mon Sep 17 00:00:00 2001
-From: Mitesh Ahuja <mitesh.ahuja@emulex.com>
-Date: Wed, 11 Feb 2015 03:46:57 -0800
-Subject: [PATCH] be2net: Backport support for RHEL 6.[56]
-
-Fixing compilation issues for RHEL 6.5 and RHEL 6.6
----
- drivers/net/ethernet/emulex/benet/be_cmds.c    |    2 +-
- drivers/net/ethernet/emulex/benet/be_compat.h  |   54 +++++++++++++++++++++++-
- drivers/net/ethernet/emulex/benet/be_ethtool.c |   12 +++++
- drivers/net/ethernet/emulex/benet/be_main.c    |   49 +++++++++++++++++++--
- 4 files changed, 110 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
-index 1d12f49..eda5c0a 100644
---- a/drivers/net/ethernet/emulex/benet/be_cmds.c
-+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
-@@ -1920,7 +1920,7 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value)
-                       req->if_flags =
-                               cpu_to_le32(BE_IF_FLAGS_VLAN_PROMISCUOUS);
-       } else {
--#ifdef HAVE_NETDEV_HW_ADDR
-+#ifndef HAVE_NETDEV_DEV_ADDR
-               struct netdev_hw_addr *ha;
- #else
-               struct dev_addr_list *ha;
-diff --git a/drivers/net/ethernet/emulex/benet/be_compat.h b/drivers/net/ethernet/emulex/benet/be_compat.h
-index e6a94f7..be334b0 100644
---- a/drivers/net/ethernet/emulex/benet/be_compat.h
-+++ b/drivers/net/ethernet/emulex/benet/be_compat.h
-@@ -96,7 +96,7 @@ int pci_sriov_get_totalvfs(struct pci_dev *pdev);
- #endif
- /* When new mc-list macros were used in 2.6.35, dev_mc_list was dropped */
--#ifdef HAVE_NETDEV_HW_ADDR
-+#ifndef HAVE_NETDEV_DEV_ADDR
- #define DMI_ADDR                        addr
- #else
- #define DMI_ADDR                        dmi_addr
-@@ -123,4 +123,56 @@ static inline void ether_addr_copy(u8 *dst, const u8 *src)
- }
- #endif
-+#ifndef SUPPORTED_1000baseKX_Full
-+#define SUPPORTED_1000baseKX_Full       (1 << 17)
-+#endif
-+
-+#ifndef SUPPORTED_10000baseKX4_Full
-+#define SUPPORTED_10000baseKX4_Full     (1 << 18)
-+#endif
-+
-+#ifndef SUPPORTED_10000baseKR_Full
-+#define SUPPORTED_10000baseKR_Full      (1 << 19)
-+#endif
-+
-+#ifndef SUPPORTED_20000baseKR2_Full
-+#define SUPPORTED_20000baseKR2_Full     (1 << 22)
-+#endif
-+
-+#ifndef SUPPORTED_40000baseKR4_Full
-+#define SUPPORTED_40000baseKR4_Full     (1 << 23)
-+#endif
-+
-+#ifndef SUPPORTED_40000baseCR4_Full
-+#define SUPPORTED_40000baseCR4_Full     (1 << 24)
-+#endif
-+
-+#ifndef SUPPORTED_40000baseSR4_Full
-+#define SUPPORTED_40000baseSR4_Full     (1 << 25)
-+#endif
-+
-+#ifndef SUPPORTED_40000baseLR4_Full
-+#define SUPPORTED_40000baseLR4_Full     (1 << 26)
-+#endif
-+
-+#ifndef ADVERTISED_1000baseKX_Full
-+#define ADVERTISED_1000baseKX_Full      (1 << 17)
-+#endif
-+
-+#ifndef ADVERTISED_10000baseKX4_Full
-+#define ADVERTISED_10000baseKX4_Full    (1 << 18)
-+#endif
-+
-+#ifndef ADVERTISED_10000baseKR_Full
-+#define ADVERTISED_10000baseKR_Full     (1 << 19)
-+#endif
-+
-+#ifndef ADVERTISED_20000baseKR2_Full
-+#define ADVERTISED_20000baseKR2_Full    (1 << 22)
-+#endif
-+
-+#ifndef ADVERTISED_40000baseKR4_Full
-+#define ADVERTISED_40000baseKR4_Full    (1 << 23)
-+#endif
-+
- #endif                          /* BE_COMPAT_H */
-diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
-index 04628fa..3e24d65 100644
---- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
-+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
-@@ -769,6 +769,7 @@ static int be_set_phys_id(struct net_device *netdev,
- }
- #endif
-+#ifdef HAVE_ETHTOOL_OPS_SET_DUMP
- static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump)
- {
-       struct be_adapter *adapter = netdev_priv(netdev);
-@@ -796,6 +797,7 @@ static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump)
-       }
-       return status;
- }
-+#endif
- static void be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
- {
-@@ -1252,6 +1254,7 @@ static int be_set_rxfh(struct net_device *netdev, const u32 *indir,
- #endif
-+#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_INFO
- static int be_get_module_info(struct net_device *netdev,
-                             struct ethtool_modinfo *modinfo)
- {
-@@ -1275,7 +1278,9 @@ static int be_get_module_info(struct net_device *netdev,
-       }
-       return be_cmd_status(status);
- }
-+#endif
-+#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_EEPROM
- static int be_get_module_eeprom(struct net_device *netdev,
-                               struct ethtool_eeprom *eeprom, u8 *data)
- {
-@@ -1303,6 +1308,7 @@ static int be_get_module_eeprom(struct net_device *netdev,
- err:
-       return be_cmd_status(status);
- }
-+#endif
- const struct ethtool_ops be_ethtool_ops = {
-       .get_settings = be_get_settings,
-@@ -1321,7 +1327,9 @@ const struct ethtool_ops be_ethtool_ops = {
- #ifdef HAVE_SET_PHYS_ID
-       .set_phys_id = be_set_phys_id,
- #endif
-+#ifdef HAVE_ETHTOOL_OPS_SET_DUMP
-       .set_dump = be_set_dump,
-+#endif
-       .get_msglevel = be_get_msg_level,
-       .set_msglevel = be_set_msg_level,
-       .get_sset_count = be_get_sset_count,
-@@ -1342,6 +1350,10 @@ const struct ethtool_ops be_ethtool_ops = {
-       .get_channels = be_get_channels,
-       .set_channels = be_set_channels,
- #endif
-+#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_INFO
-       .get_module_info = be_get_module_info,
-+#endif
-+#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_EEPROM
-       .get_module_eeprom = be_get_module_eeprom
-+#endif
- };
-diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
-index 5c92b4e..b3890ae 100644
---- a/drivers/net/ethernet/emulex/benet/be_main.c
-+++ b/drivers/net/ethernet/emulex/benet/be_main.c
-@@ -22,7 +22,9 @@
- #include <asm/div64.h>
- #include <linux/aer.h>
- #include <linux/if_bridge.h>
-+#ifdef HAVE_SKB_MARK_NAPI_ID
- #include <net/busy_poll.h>
-+#endif
- #include <net/vxlan.h>
- MODULE_VERSION(DRV_VER);
-@@ -809,11 +811,13 @@ static inline u16 be_get_tx_vlan_tag(struct be_adapter *adapter,
- }
- /* Used only for IP tunnel packets */
-+#ifdef HAVE_SK_BUFF_CSUM_LEVEL
- static u16 skb_inner_ip_proto(struct sk_buff *skb)
- {
-       return (inner_ip_hdr(skb)->version == 4) ?
-               inner_ip_hdr(skb)->protocol : inner_ipv6_hdr(skb)->nexthdr;
- }
-+#endif
- static u16 skb_ip_proto(struct sk_buff *skb)
- {
-@@ -837,12 +841,16 @@ static void wrb_fill_hdr(struct be_adapter *adapter, struct be_eth_hdr_wrb *hdr,
-               if (skb_is_gso_v6(skb) && !lancer_chip(adapter))
-                       SET_TX_WRB_HDR_BITS(lso6, hdr, 1);
-       } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
-+#ifdef HAVE_SK_BUFF_CSUM_LEVEL
-               if (skb->encapsulation) {
-                       SET_TX_WRB_HDR_BITS(ipcs, hdr, 1);
-                       proto = skb_inner_ip_proto(skb);
-               } else {
-                       proto = skb_ip_proto(skb);
-               }
-+#else
-+              proto = skb_ip_proto(skb);
-+#endif
-               if (proto == IPPROTO_TCP)
-                       SET_TX_WRB_HDR_BITS(tcpcs, hdr, 1);
-               else if (proto == IPPROTO_UDP)
-@@ -1433,14 +1441,16 @@ static int be_get_vf_config(struct net_device *netdev, int vf,
-               return -EINVAL;
-       vi->vf = vf;
--#ifdef HAVE_TX_RATE_LIMI
-+#ifdef HAVE_TX_RATE_LIMIT
-       vi->max_tx_rate = vf_cfg->tx_rate;
-       vi->min_tx_rate = 0;
- #endif
-       vi->vlan = vf_cfg->vlan_tag & VLAN_VID_MASK;
-       vi->qos = vf_cfg->vlan_tag >> VLAN_PRIO_SHIFT;
-       memcpy(&vi->mac, vf_cfg->mac_addr, ETH_ALEN);
-+#ifdef HAVE_LINKSTATE
-       vi->linkstate = adapter->vf_cfg[vf].plink_tracking;
-+#endif
-       return 0;
- }
-@@ -1545,6 +1555,7 @@ err:
- #endif
-+#ifdef HAVE_NETDEV_OPS_NDO_SET_VF_LINK_STATE
- static int be_set_vf_link_state(struct net_device *netdev, int vf,
-                               int link_state)
- {
-@@ -1568,6 +1579,7 @@ static int be_set_vf_link_state(struct net_device *netdev, int vf,
-       return 0;
- }
-+#endif
- static void be_aic_update(struct be_aic_obj *aic, u64 rx_pkts, u64 tx_pkts,
-                         ulong now)
-@@ -1829,14 +1841,21 @@ static void be_rx_compl_process(struct be_rx_obj *rxo, struct napi_struct *napi,
-       skb->protocol = eth_type_trans(skb, netdev);
-       skb_record_rx_queue(skb, rxo - &adapter->rx_obj[0]);
-       if (netdev->features & NETIF_F_RXHASH)
-+#ifdef HAVE_SKB_SET_HASH
-               skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3);
-+#else
-+              skb->rxhash = rxcp->rss_hash;
-+#endif
- #ifdef HAVE_SK_BUFF_CSUM_LEVEL
-       skb->csum_level = rxcp->tunneled;
- #else
-       skb->encapsulation = rxcp->tunneled;
- #endif
-+
-+#ifdef HAVE_SKB_MARK_NAPI_ID
-       skb_mark_napi_id(skb, napi);
-+#endif
-       if (rxcp->vlanf)
-               vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, rxcp->vlan_tag);
-@@ -1891,7 +1910,11 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
-       skb->ip_summed = CHECKSUM_UNNECESSARY;
-       skb_record_rx_queue(skb, rxo - &adapter->rx_obj[0]);
-       if (adapter->netdev->features & NETIF_F_RXHASH)
-+#ifdef HAVE_SKB_SET_HASH
-               skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3);
-+#else
-+              skb->rxhash = rxcp->rss_hash;
-+#endif
- #ifdef HAVE_SK_BUFF_CSUM_LEVEL
-       skb->csum_level = rxcp->tunneled;
-@@ -1899,7 +1922,9 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
-       skb->encapsulation = rxcp->tunneled;
- #endif
-+#ifdef HAVE_SKB_MARK_NAPI_ID
-       skb_mark_napi_id(skb, napi);
-+#endif
-       if (rxcp->vlanf)
-@@ -2287,7 +2312,9 @@ static void be_evt_queues_destroy(struct be_adapter *adapter)
-               if (eqo->q.created) {
-                       be_eq_clean(eqo);
-                       be_cmd_q_destroy(adapter, &eqo->q, QTYPE_EQ);
-+#ifdef HAVE_NAPI_HASH_ADD
-                       napi_hash_del(&eqo->napi);
-+#endif
-                       netif_napi_del(&eqo->napi);
-               }
-               be_queue_free(adapter, &eqo->q);
-@@ -2307,7 +2334,9 @@ static int be_evt_queues_create(struct be_adapter *adapter)
-       for_all_evt_queues(adapter, eqo, i) {
-               netif_napi_add(adapter->netdev, &eqo->napi, be_poll,
-                              BE_NAPI_WEIGHT);
-+#ifdef HAVE_NAPI_HASH_ADD
-               napi_hash_add(&eqo->napi);
-+#endif
-               aic = &adapter->aic_obj[i];
-               eqo->adapter = adapter;
-               eqo->idx = i;
-@@ -2719,6 +2748,7 @@ int be_poll(struct napi_struct *napi, int budget)
- }
- #ifdef CONFIG_NET_RX_BUSY_POLL
-+#ifndef HAVE_NETDEV_EXTENDED_NDO_BUSY_POLL
- static int be_busy_poll(struct napi_struct *napi)
- {
-       struct be_eq_obj *eqo = container_of(napi, struct be_eq_obj, napi);
-@@ -2739,6 +2769,7 @@ static int be_busy_poll(struct napi_struct *napi)
-       return work;
- }
- #endif
-+#endif
- void be_detect_error(struct be_adapter *adapter)
- {
-@@ -2829,9 +2860,7 @@ static int be_msix_enable(struct be_adapter *adapter)
- {
-       int i, num_vec;
-       struct device *dev = &adapter->pdev->dev;
--#ifndef HAVE_PCI_ENABLE_MSIX_RANGE
-       int status;
--#endif
-       /* If RoCE is supported, program the max number of NIC vectors that
-        * may be configured via set-channels, along with vectors needed for
-@@ -2866,7 +2895,6 @@ static int be_msix_enable(struct be_adapter *adapter)
-        } else {
-                goto fail;
-        }
--#endif
- done:
-       if (be_roce_supported(adapter) && num_vec > MIN_MSIX_VECTORS) {
-@@ -2880,6 +2908,7 @@ done:
-       dev_info(dev, "enabled %d MSI-x vector(s) for NIC\n",
-                adapter->num_msix_vec);
-       return 0;
-+#endif
- fail:
-       dev_warn(dev, "MSIx enable failed\n");
-@@ -3771,7 +3800,7 @@ static int be_setup_queues(struct be_adapter *adapter)
-       if (status)
-               goto err;
--#if HAVE_RETURN_INT_FOR_SET_NUM_TX_QUEUES
-+#ifdef HAVE_RETURN_INT_FOR_SET_NUM_TX_QUEUES
-       status = netif_set_real_num_tx_queues(netdev, adapter->num_tx_qs);
- #else
-       netif_set_real_num_tx_queues(netdev, adapter->num_tx_qs);
-@@ -4654,7 +4683,9 @@ static const struct net_device_ops be_netdev_ops = {
-       .ndo_set_vf_rate        = be_set_vf_tx_rate,
- #endif
-       .ndo_get_vf_config      = be_get_vf_config,
-+#ifdef HAVE_NETDEV_OPS_NDO_SET_VF_LINK_STATE
-       .ndo_set_vf_link_state  = be_set_vf_link_state,
-+#endif
- #ifdef CONFIG_NET_POLL_CONTROLLER
-       .ndo_poll_controller    = be_netpoll,
- #endif
-@@ -4663,8 +4694,10 @@ static const struct net_device_ops be_netdev_ops = {
-       .ndo_bridge_getlink     = be_ndo_bridge_getlink,
- #endif
- #ifdef CONFIG_NET_RX_BUSY_POLL
-+#ifndef HAVE_NETDEV_EXTENDED_NDO_BUSY_POLL
-       .ndo_busy_poll          = be_busy_poll,
- #endif
-+#endif
- #ifdef CONFIG_BE2NET_VXLAN
-       .ndo_add_vxlan_port     = be_add_vxlan_port,
-       .ndo_del_vxlan_port     = be_del_vxlan_port,
-@@ -4676,10 +4709,12 @@ static void be_netdev_init(struct net_device *netdev)
-       struct be_adapter *adapter = netdev_priv(netdev);
-       if (skyhawk_chip(adapter)) {
-+#ifdef HAVE_NETDEV_HW_ENC_FEATURES
-               netdev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
-                                          NETIF_F_TSO | NETIF_F_TSO6 |
-                                          NETIF_F_GSO_UDP_TUNNEL;
-               netdev->hw_features |= NETIF_F_GSO_UDP_TUNNEL;
-+#endif
-       }
-       netdev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 |
-               NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM |
-@@ -4694,8 +4729,10 @@ static void be_netdev_init(struct net_device *netdev)
-               NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
- #ifdef HAVE_NET_DEVICE_PRIV_FLAGS
-+#ifdef IFF_UNICAST_FLT
-       netdev->priv_flags |= IFF_UNICAST_FLT;
- #endif
-+#endif
-       netdev->flags |= IFF_MULTICAST;
-@@ -5091,6 +5128,7 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
-       adapter->netdev = netdev;
-       SET_NETDEV_DEV(netdev, &pdev->dev);
-+#ifdef HAVE_DMA_SET_MASK_AND_COHERENT
-       status = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
-       if (!status) {
-               netdev->features |= NETIF_F_HIGHDMA;
-@@ -5101,6 +5139,7 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
-                       goto free_netdev;
-               }
-       }
-+#endif
-       status = pci_enable_pcie_error_reporting(pdev);
-       if (!status)
--- 
-1.7.1
-
diff --git a/linux-next-pending/0009-RDMA-ocrdma-Backport-support-for-RHEL-6.-56.patch b/linux-next-pending/0009-RDMA-ocrdma-Backport-support-for-RHEL-6.-56.patch
deleted file mode 100644 (file)
index 53f89f4..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-From 37ac36d8b6fceb21da5ecaebdae34e19db41ceb5 Mon Sep 17 00:00:00 2001
-From: Mitesh Ahuja <mitesh.ahuja@emulex.com>
-Date: Wed, 11 Feb 2015 04:00:22 -0800
-Subject: [PATCH] RDMA/ocrdma : Backport support for RHEL 6.[56]
-
-Fixing compilation issues for RHEL 6.5 and RHEL 6.6
----
- drivers/infiniband/hw/ocrdma/ocrdma_main.c |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-index 7a2b59a..6fe4236 100644
---- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-+++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-@@ -426,7 +426,11 @@ static void ocrdma_init_ipv6_gids(struct ocrdma_dev *dev,
-       in6_dev = in6_dev_get(net);
-       if (in6_dev) {
-               read_lock_bh(&in6_dev->lock);
-+#ifndef HAVE_INETADDR_IF_NEXT
-               list_for_each_entry(ifp, &in6_dev->addr_list, if_list) {
-+#else
-+              for(ifp=in6_dev->addr_list; ifp; ifp=ifp->if_next) {
-+#endif
-                       pgid = (union ib_gid *)&ifp->addr;
-                       ocrdma_add_sgid(dev, pgid);
-               }
-@@ -467,7 +471,11 @@ static struct ocrdma_dev *ocrdma_add(struct be_dev_info *dev_info)
-               goto idr_err;
-       memcpy(&dev->nic_info, dev_info, sizeof(*dev_info));
-+#ifdef HAVE_IDR_NEW_INTERFACE
-       dev->id = idr_alloc(&ocrdma_dev_id, NULL, 0, 0, GFP_KERNEL);
-+#else
-+      idr_get_new(&ocrdma_dev_id, NULL,&dev->id );
-+#endif
-       if (dev->id < 0)
-               goto idr_err;
--- 
-1.7.1
-
diff --git a/linux-next-pending/0010-be2net-Backport-support-for-SLES11-SP3.patch b/linux-next-pending/0010-be2net-Backport-support-for-SLES11-SP3.patch
deleted file mode 100644 (file)
index 96405df..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-From 1d51b1fec5e14e49bb3cc19eaec3f77da710b106 Mon Sep 17 00:00:00 2001
-From: Mitesh Ahuja <mitesh.ahuja@emulex.com>
-Date: Mon, 9 Mar 2015 06:24:10 -0700
-Subject: [PATCH] be2net: Backport support for SLES11 SP3
-
-Fixing compilation issues for SLES11 SP3.
----
- drivers/net/ethernet/emulex/benet/be_compat.c |   17 +++++++++++++++++
- drivers/net/ethernet/emulex/benet/be_compat.h |    1 +
- drivers/net/ethernet/emulex/benet/be_main.c   |   12 ++++++++++++
- 3 files changed, 30 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/emulex/benet/be_compat.c b/drivers/net/ethernet/emulex/benet/be_compat.c
-index d1563d3..470dbea 100644
---- a/drivers/net/ethernet/emulex/benet/be_compat.c
-+++ b/drivers/net/ethernet/emulex/benet/be_compat.c
-@@ -72,3 +72,20 @@ int pci_sriov_get_totalvfs(struct pci_dev *pdev)
- #endif
- #endif /* CONFIG_PCI_IOV */
-+
-+void be_wait_for_vfs_detach(struct pci_dev *pdev)
-+{
-+#ifdef CONFIG_PCI_IOV
-+#ifndef HAVE_PCI_VF_ASSIGNED
-+      if (pci_vfs_assigned(pdev))
-+               dev_warn(&pdev->dev,
-+                        "Waiting to unload, until VFs are detached\n");
-+      while (1) {
-+              if (pci_vfs_assigned(pdev) == 0)
-+                      break;
-+
-+              msleep(1000);
-+      }
-+#endif
-+#endif
-+}
-diff --git a/drivers/net/ethernet/emulex/benet/be_compat.h b/drivers/net/ethernet/emulex/benet/be_compat.h
-index be334b0..00bc2ba 100644
---- a/drivers/net/ethernet/emulex/benet/be_compat.h
-+++ b/drivers/net/ethernet/emulex/benet/be_compat.h
-@@ -76,6 +76,7 @@ int pci_sriov_get_totalvfs(struct pci_dev *pdev);
- #define pci_vfs_assigned(x)                     0
- #define pci_num_vf(x)                           0
- #endif /* CONFIG_PCI_IOV */
-+void be_wait_for_vfs_detach(struct pci_dev *pdev);
- #ifndef NETIF_F_HW_VLAN_CTAG_TX
- #define NETIF_F_HW_VLAN_CTAG_TX         NETIF_F_HW_VLAN_TX
-diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
-index b3890ae..c745fba 100644
---- a/drivers/net/ethernet/emulex/benet/be_main.c
-+++ b/drivers/net/ethernet/emulex/benet/be_main.c
-@@ -25,7 +25,9 @@
- #ifdef HAVE_SKB_MARK_NAPI_ID
- #include <net/busy_poll.h>
- #endif
-+#ifdef CONFIG_BE2NET_VXLAN
- #include <net/vxlan.h>
-+#endif
- MODULE_VERSION(DRV_VER);
- MODULE_DEVICE_TABLE(pci, be_dev_ids);
-@@ -1850,8 +1852,10 @@ static void be_rx_compl_process(struct be_rx_obj *rxo, struct napi_struct *napi,
- #ifdef HAVE_SK_BUFF_CSUM_LEVEL
-       skb->csum_level = rxcp->tunneled;
- #else
-+#ifdef CONFIG_BE2NET_VXLAN
-       skb->encapsulation = rxcp->tunneled;
- #endif
-+#endif
- #ifdef HAVE_SKB_MARK_NAPI_ID
-       skb_mark_napi_id(skb, napi);
-@@ -1919,8 +1923,10 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
- #ifdef HAVE_SK_BUFF_CSUM_LEVEL
-       skb->csum_level = rxcp->tunneled;
- #else
-+#ifdef CONFIG_BE2NET_VXLAN
-       skb->encapsulation = rxcp->tunneled;
- #endif
-+#endif
- #ifdef HAVE_SKB_MARK_NAPI_ID
-       skb_mark_napi_id(skb, napi);
-@@ -3280,6 +3286,8 @@ static void be_vf_clear(struct be_adapter *adapter)
-       struct be_vf_cfg *vf_cfg;
-       u32 vf;
-+      be_wait_for_vfs_detach(adapter->pdev);
-+
-       if (pci_vfs_assigned(adapter->pdev)) {
-               dev_warn(&adapter->pdev->dev,
-                        "VFs are assigned to VMs: not disabling VFs\n");
-@@ -3623,7 +3631,11 @@ static int be_get_sriov_config(struct be_adapter *adapter)
-               return 0;
-       }
-+#ifdef CONFIG_PCI_IOV
-+#ifdef HAVE_PCI_VF_ASSIGNED
-       pci_sriov_set_totalvfs(adapter->pdev, be_max_vfs(adapter));
-+#endif
-+#endif
-       /* validate num_vfs module param */
-       old_vfs = pci_num_vf(adapter->pdev);
--- 
-1.7.1
-
diff --git a/patches/0028-be2net-Backport-support-for-RHEL-6.-56.patch b/patches/0028-be2net-Backport-support-for-RHEL-6.-56.patch
new file mode 100644 (file)
index 0000000..724cd49
--- /dev/null
@@ -0,0 +1,421 @@
+From 2df5671f3e96458d687a8f69da9b40f688cb3077 Mon Sep 17 00:00:00 2001
+From: Mitesh Ahuja <mitesh.ahuja@emulex.com>
+Date: Wed, 11 Feb 2015 03:46:57 -0800
+Subject: [PATCH] be2net: Backport support for RHEL 6.[56]
+
+Fixing compilation issues for RHEL 6.5 and RHEL 6.6
+---
+ drivers/net/ethernet/emulex/benet/be_cmds.c    |    2 +-
+ drivers/net/ethernet/emulex/benet/be_compat.h  |   54 +++++++++++++++++++++++-
+ drivers/net/ethernet/emulex/benet/be_ethtool.c |   12 +++++
+ drivers/net/ethernet/emulex/benet/be_main.c    |   49 +++++++++++++++++++--
+ 4 files changed, 110 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
+index 1d12f49..eda5c0a 100644
+--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
++++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
+@@ -1920,7 +1920,7 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value)
+                       req->if_flags =
+                               cpu_to_le32(BE_IF_FLAGS_VLAN_PROMISCUOUS);
+       } else {
+-#ifdef HAVE_NETDEV_HW_ADDR
++#ifndef HAVE_NETDEV_DEV_ADDR
+               struct netdev_hw_addr *ha;
+ #else
+               struct dev_addr_list *ha;
+diff --git a/drivers/net/ethernet/emulex/benet/be_compat.h b/drivers/net/ethernet/emulex/benet/be_compat.h
+index e6a94f7..be334b0 100644
+--- a/drivers/net/ethernet/emulex/benet/be_compat.h
++++ b/drivers/net/ethernet/emulex/benet/be_compat.h
+@@ -96,7 +96,7 @@ int pci_sriov_get_totalvfs(struct pci_dev *pdev);
+ #endif
+ /* When new mc-list macros were used in 2.6.35, dev_mc_list was dropped */
+-#ifdef HAVE_NETDEV_HW_ADDR
++#ifndef HAVE_NETDEV_DEV_ADDR
+ #define DMI_ADDR                        addr
+ #else
+ #define DMI_ADDR                        dmi_addr
+@@ -123,4 +123,56 @@ static inline void ether_addr_copy(u8 *dst, const u8 *src)
+ }
+ #endif
++#ifndef SUPPORTED_1000baseKX_Full
++#define SUPPORTED_1000baseKX_Full       (1 << 17)
++#endif
++
++#ifndef SUPPORTED_10000baseKX4_Full
++#define SUPPORTED_10000baseKX4_Full     (1 << 18)
++#endif
++
++#ifndef SUPPORTED_10000baseKR_Full
++#define SUPPORTED_10000baseKR_Full      (1 << 19)
++#endif
++
++#ifndef SUPPORTED_20000baseKR2_Full
++#define SUPPORTED_20000baseKR2_Full     (1 << 22)
++#endif
++
++#ifndef SUPPORTED_40000baseKR4_Full
++#define SUPPORTED_40000baseKR4_Full     (1 << 23)
++#endif
++
++#ifndef SUPPORTED_40000baseCR4_Full
++#define SUPPORTED_40000baseCR4_Full     (1 << 24)
++#endif
++
++#ifndef SUPPORTED_40000baseSR4_Full
++#define SUPPORTED_40000baseSR4_Full     (1 << 25)
++#endif
++
++#ifndef SUPPORTED_40000baseLR4_Full
++#define SUPPORTED_40000baseLR4_Full     (1 << 26)
++#endif
++
++#ifndef ADVERTISED_1000baseKX_Full
++#define ADVERTISED_1000baseKX_Full      (1 << 17)
++#endif
++
++#ifndef ADVERTISED_10000baseKX4_Full
++#define ADVERTISED_10000baseKX4_Full    (1 << 18)
++#endif
++
++#ifndef ADVERTISED_10000baseKR_Full
++#define ADVERTISED_10000baseKR_Full     (1 << 19)
++#endif
++
++#ifndef ADVERTISED_20000baseKR2_Full
++#define ADVERTISED_20000baseKR2_Full    (1 << 22)
++#endif
++
++#ifndef ADVERTISED_40000baseKR4_Full
++#define ADVERTISED_40000baseKR4_Full    (1 << 23)
++#endif
++
+ #endif                          /* BE_COMPAT_H */
+diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
+index 04628fa..3e24d65 100644
+--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
++++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
+@@ -769,6 +769,7 @@ static int be_set_phys_id(struct net_device *netdev,
+ }
+ #endif
++#ifdef HAVE_ETHTOOL_OPS_SET_DUMP
+ static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump)
+ {
+       struct be_adapter *adapter = netdev_priv(netdev);
+@@ -796,6 +797,7 @@ static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump)
+       }
+       return status;
+ }
++#endif
+ static void be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+ {
+@@ -1252,6 +1254,7 @@ static int be_set_rxfh(struct net_device *netdev, const u32 *indir,
+ #endif
++#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_INFO
+ static int be_get_module_info(struct net_device *netdev,
+                             struct ethtool_modinfo *modinfo)
+ {
+@@ -1275,7 +1278,9 @@ static int be_get_module_info(struct net_device *netdev,
+       }
+       return be_cmd_status(status);
+ }
++#endif
++#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_EEPROM
+ static int be_get_module_eeprom(struct net_device *netdev,
+                               struct ethtool_eeprom *eeprom, u8 *data)
+ {
+@@ -1303,6 +1308,7 @@ static int be_get_module_eeprom(struct net_device *netdev,
+ err:
+       return be_cmd_status(status);
+ }
++#endif
+ const struct ethtool_ops be_ethtool_ops = {
+       .get_settings = be_get_settings,
+@@ -1321,7 +1327,9 @@ const struct ethtool_ops be_ethtool_ops = {
+ #ifdef HAVE_SET_PHYS_ID
+       .set_phys_id = be_set_phys_id,
+ #endif
++#ifdef HAVE_ETHTOOL_OPS_SET_DUMP
+       .set_dump = be_set_dump,
++#endif
+       .get_msglevel = be_get_msg_level,
+       .set_msglevel = be_set_msg_level,
+       .get_sset_count = be_get_sset_count,
+@@ -1342,6 +1350,10 @@ const struct ethtool_ops be_ethtool_ops = {
+       .get_channels = be_get_channels,
+       .set_channels = be_set_channels,
+ #endif
++#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_INFO
+       .get_module_info = be_get_module_info,
++#endif
++#ifdef HAVE_ETHTOOL_OPS_GET_MODULE_EEPROM
+       .get_module_eeprom = be_get_module_eeprom
++#endif
+ };
+diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
+index 5c92b4e..b3890ae 100644
+--- a/drivers/net/ethernet/emulex/benet/be_main.c
++++ b/drivers/net/ethernet/emulex/benet/be_main.c
+@@ -22,7 +22,9 @@
+ #include <asm/div64.h>
+ #include <linux/aer.h>
+ #include <linux/if_bridge.h>
++#ifdef HAVE_SKB_MARK_NAPI_ID
+ #include <net/busy_poll.h>
++#endif
+ #include <net/vxlan.h>
+ MODULE_VERSION(DRV_VER);
+@@ -809,11 +811,13 @@ static inline u16 be_get_tx_vlan_tag(struct be_adapter *adapter,
+ }
+ /* Used only for IP tunnel packets */
++#ifdef HAVE_SK_BUFF_CSUM_LEVEL
+ static u16 skb_inner_ip_proto(struct sk_buff *skb)
+ {
+       return (inner_ip_hdr(skb)->version == 4) ?
+               inner_ip_hdr(skb)->protocol : inner_ipv6_hdr(skb)->nexthdr;
+ }
++#endif
+ static u16 skb_ip_proto(struct sk_buff *skb)
+ {
+@@ -837,12 +841,16 @@ static void wrb_fill_hdr(struct be_adapter *adapter, struct be_eth_hdr_wrb *hdr,
+               if (skb_is_gso_v6(skb) && !lancer_chip(adapter))
+                       SET_TX_WRB_HDR_BITS(lso6, hdr, 1);
+       } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
++#ifdef HAVE_SK_BUFF_CSUM_LEVEL
+               if (skb->encapsulation) {
+                       SET_TX_WRB_HDR_BITS(ipcs, hdr, 1);
+                       proto = skb_inner_ip_proto(skb);
+               } else {
+                       proto = skb_ip_proto(skb);
+               }
++#else
++              proto = skb_ip_proto(skb);
++#endif
+               if (proto == IPPROTO_TCP)
+                       SET_TX_WRB_HDR_BITS(tcpcs, hdr, 1);
+               else if (proto == IPPROTO_UDP)
+@@ -1433,14 +1441,16 @@ static int be_get_vf_config(struct net_device *netdev, int vf,
+               return -EINVAL;
+       vi->vf = vf;
+-#ifdef HAVE_TX_RATE_LIMI
++#ifdef HAVE_TX_RATE_LIMIT
+       vi->max_tx_rate = vf_cfg->tx_rate;
+       vi->min_tx_rate = 0;
+ #endif
+       vi->vlan = vf_cfg->vlan_tag & VLAN_VID_MASK;
+       vi->qos = vf_cfg->vlan_tag >> VLAN_PRIO_SHIFT;
+       memcpy(&vi->mac, vf_cfg->mac_addr, ETH_ALEN);
++#ifdef HAVE_LINKSTATE
+       vi->linkstate = adapter->vf_cfg[vf].plink_tracking;
++#endif
+       return 0;
+ }
+@@ -1545,6 +1555,7 @@ err:
+ #endif
++#ifdef HAVE_NETDEV_OPS_NDO_SET_VF_LINK_STATE
+ static int be_set_vf_link_state(struct net_device *netdev, int vf,
+                               int link_state)
+ {
+@@ -1568,6 +1579,7 @@ static int be_set_vf_link_state(struct net_device *netdev, int vf,
+       return 0;
+ }
++#endif
+ static void be_aic_update(struct be_aic_obj *aic, u64 rx_pkts, u64 tx_pkts,
+                         ulong now)
+@@ -1829,14 +1841,21 @@ static void be_rx_compl_process(struct be_rx_obj *rxo, struct napi_struct *napi,
+       skb->protocol = eth_type_trans(skb, netdev);
+       skb_record_rx_queue(skb, rxo - &adapter->rx_obj[0]);
+       if (netdev->features & NETIF_F_RXHASH)
++#ifdef HAVE_SKB_SET_HASH
+               skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3);
++#else
++              skb->rxhash = rxcp->rss_hash;
++#endif
+ #ifdef HAVE_SK_BUFF_CSUM_LEVEL
+       skb->csum_level = rxcp->tunneled;
+ #else
+       skb->encapsulation = rxcp->tunneled;
+ #endif
++
++#ifdef HAVE_SKB_MARK_NAPI_ID
+       skb_mark_napi_id(skb, napi);
++#endif
+       if (rxcp->vlanf)
+               vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, rxcp->vlan_tag);
+@@ -1891,7 +1910,11 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
+       skb->ip_summed = CHECKSUM_UNNECESSARY;
+       skb_record_rx_queue(skb, rxo - &adapter->rx_obj[0]);
+       if (adapter->netdev->features & NETIF_F_RXHASH)
++#ifdef HAVE_SKB_SET_HASH
+               skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3);
++#else
++              skb->rxhash = rxcp->rss_hash;
++#endif
+ #ifdef HAVE_SK_BUFF_CSUM_LEVEL
+       skb->csum_level = rxcp->tunneled;
+@@ -1899,7 +1922,9 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
+       skb->encapsulation = rxcp->tunneled;
+ #endif
++#ifdef HAVE_SKB_MARK_NAPI_ID
+       skb_mark_napi_id(skb, napi);
++#endif
+       if (rxcp->vlanf)
+@@ -2287,7 +2312,9 @@ static void be_evt_queues_destroy(struct be_adapter *adapter)
+               if (eqo->q.created) {
+                       be_eq_clean(eqo);
+                       be_cmd_q_destroy(adapter, &eqo->q, QTYPE_EQ);
++#ifdef HAVE_NAPI_HASH_ADD
+                       napi_hash_del(&eqo->napi);
++#endif
+                       netif_napi_del(&eqo->napi);
+               }
+               be_queue_free(adapter, &eqo->q);
+@@ -2307,7 +2334,9 @@ static int be_evt_queues_create(struct be_adapter *adapter)
+       for_all_evt_queues(adapter, eqo, i) {
+               netif_napi_add(adapter->netdev, &eqo->napi, be_poll,
+                              BE_NAPI_WEIGHT);
++#ifdef HAVE_NAPI_HASH_ADD
+               napi_hash_add(&eqo->napi);
++#endif
+               aic = &adapter->aic_obj[i];
+               eqo->adapter = adapter;
+               eqo->idx = i;
+@@ -2719,6 +2748,7 @@ int be_poll(struct napi_struct *napi, int budget)
+ }
+ #ifdef CONFIG_NET_RX_BUSY_POLL
++#ifndef HAVE_NETDEV_EXTENDED_NDO_BUSY_POLL
+ static int be_busy_poll(struct napi_struct *napi)
+ {
+       struct be_eq_obj *eqo = container_of(napi, struct be_eq_obj, napi);
+@@ -2739,6 +2769,7 @@ static int be_busy_poll(struct napi_struct *napi)
+       return work;
+ }
+ #endif
++#endif
+ void be_detect_error(struct be_adapter *adapter)
+ {
+@@ -2829,9 +2860,7 @@ static int be_msix_enable(struct be_adapter *adapter)
+ {
+       int i, num_vec;
+       struct device *dev = &adapter->pdev->dev;
+-#ifndef HAVE_PCI_ENABLE_MSIX_RANGE
+       int status;
+-#endif
+       /* If RoCE is supported, program the max number of NIC vectors that
+        * may be configured via set-channels, along with vectors needed for
+@@ -2866,7 +2895,6 @@ static int be_msix_enable(struct be_adapter *adapter)
+        } else {
+                goto fail;
+        }
+-#endif
+ done:
+       if (be_roce_supported(adapter) && num_vec > MIN_MSIX_VECTORS) {
+@@ -2880,6 +2908,7 @@ done:
+       dev_info(dev, "enabled %d MSI-x vector(s) for NIC\n",
+                adapter->num_msix_vec);
+       return 0;
++#endif
+ fail:
+       dev_warn(dev, "MSIx enable failed\n");
+@@ -3771,7 +3800,7 @@ static int be_setup_queues(struct be_adapter *adapter)
+       if (status)
+               goto err;
+-#if HAVE_RETURN_INT_FOR_SET_NUM_TX_QUEUES
++#ifdef HAVE_RETURN_INT_FOR_SET_NUM_TX_QUEUES
+       status = netif_set_real_num_tx_queues(netdev, adapter->num_tx_qs);
+ #else
+       netif_set_real_num_tx_queues(netdev, adapter->num_tx_qs);
+@@ -4654,7 +4683,9 @@ static const struct net_device_ops be_netdev_ops = {
+       .ndo_set_vf_rate        = be_set_vf_tx_rate,
+ #endif
+       .ndo_get_vf_config      = be_get_vf_config,
++#ifdef HAVE_NETDEV_OPS_NDO_SET_VF_LINK_STATE
+       .ndo_set_vf_link_state  = be_set_vf_link_state,
++#endif
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+       .ndo_poll_controller    = be_netpoll,
+ #endif
+@@ -4663,8 +4694,10 @@ static const struct net_device_ops be_netdev_ops = {
+       .ndo_bridge_getlink     = be_ndo_bridge_getlink,
+ #endif
+ #ifdef CONFIG_NET_RX_BUSY_POLL
++#ifndef HAVE_NETDEV_EXTENDED_NDO_BUSY_POLL
+       .ndo_busy_poll          = be_busy_poll,
+ #endif
++#endif
+ #ifdef CONFIG_BE2NET_VXLAN
+       .ndo_add_vxlan_port     = be_add_vxlan_port,
+       .ndo_del_vxlan_port     = be_del_vxlan_port,
+@@ -4676,10 +4709,12 @@ static void be_netdev_init(struct net_device *netdev)
+       struct be_adapter *adapter = netdev_priv(netdev);
+       if (skyhawk_chip(adapter)) {
++#ifdef HAVE_NETDEV_HW_ENC_FEATURES
+               netdev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
+                                          NETIF_F_TSO | NETIF_F_TSO6 |
+                                          NETIF_F_GSO_UDP_TUNNEL;
+               netdev->hw_features |= NETIF_F_GSO_UDP_TUNNEL;
++#endif
+       }
+       netdev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 |
+               NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM |
+@@ -4694,8 +4729,10 @@ static void be_netdev_init(struct net_device *netdev)
+               NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+ #ifdef HAVE_NET_DEVICE_PRIV_FLAGS
++#ifdef IFF_UNICAST_FLT
+       netdev->priv_flags |= IFF_UNICAST_FLT;
+ #endif
++#endif
+       netdev->flags |= IFF_MULTICAST;
+@@ -5091,6 +5128,7 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
+       adapter->netdev = netdev;
+       SET_NETDEV_DEV(netdev, &pdev->dev);
++#ifdef HAVE_DMA_SET_MASK_AND_COHERENT
+       status = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+       if (!status) {
+               netdev->features |= NETIF_F_HIGHDMA;
+@@ -5101,6 +5139,7 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
+                       goto free_netdev;
+               }
+       }
++#endif
+       status = pci_enable_pcie_error_reporting(pdev);
+       if (!status)
+-- 
+1.7.1
+
diff --git a/patches/0029-RDMA-ocrdma-Backport-support-for-RHEL-6.-56.patch b/patches/0029-RDMA-ocrdma-Backport-support-for-RHEL-6.-56.patch
new file mode 100644 (file)
index 0000000..03d1667
--- /dev/null
@@ -0,0 +1,41 @@
+From 37ac36d8b6fceb21da5ecaebdae34e19db41ceb5 Mon Sep 17 00:00:00 2001
+From: Mitesh Ahuja <mitesh.ahuja@emulex.com>
+Date: Wed, 11 Feb 2015 04:00:22 -0800
+Subject: [PATCH] RDMA/ocrdma : Backport support for RHEL 6.[56]
+
+Fixing compilation issues for RHEL 6.5 and RHEL 6.6
+---
+ drivers/infiniband/hw/ocrdma/ocrdma_main.c |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
+index 7a2b59a..6fe4236 100644
+--- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c
++++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
+@@ -426,7 +426,11 @@ static void ocrdma_init_ipv6_gids(struct ocrdma_dev *dev,
+       in6_dev = in6_dev_get(net);
+       if (in6_dev) {
+               read_lock_bh(&in6_dev->lock);
++#ifndef HAVE_INETADDR_IF_NEXT
+               list_for_each_entry(ifp, &in6_dev->addr_list, if_list) {
++#else
++              for (ifp = in6_dev->addr_list; ifp; ifp = ifp->if_next) {
++#endif
+                       pgid = (union ib_gid *)&ifp->addr;
+                       ocrdma_add_sgid(dev, pgid);
+               }
+@@ -467,7 +471,11 @@ static struct ocrdma_dev *ocrdma_add(struct be_dev_info *dev_info)
+               goto idr_err;
+       memcpy(&dev->nic_info, dev_info, sizeof(*dev_info));
++#ifdef HAVE_IDR_NEW_INTERFACE
+       dev->id = idr_alloc(&ocrdma_dev_id, NULL, 0, 0, GFP_KERNEL);
++#else
++      idr_get_new(&ocrdma_dev_id, NULL, &dev->id);
++#endif
+       if (dev->id < 0)
+               goto idr_err;
+-- 
+1.7.1
+
diff --git a/patches/0030-be2net-Backport-support-for-SLES11-SP3.patch b/patches/0030-be2net-Backport-support-for-SLES11-SP3.patch
new file mode 100644 (file)
index 0000000..96405df
--- /dev/null
@@ -0,0 +1,109 @@
+From 1d51b1fec5e14e49bb3cc19eaec3f77da710b106 Mon Sep 17 00:00:00 2001
+From: Mitesh Ahuja <mitesh.ahuja@emulex.com>
+Date: Mon, 9 Mar 2015 06:24:10 -0700
+Subject: [PATCH] be2net: Backport support for SLES11 SP3
+
+Fixing compilation issues for SLES11 SP3.
+---
+ drivers/net/ethernet/emulex/benet/be_compat.c |   17 +++++++++++++++++
+ drivers/net/ethernet/emulex/benet/be_compat.h |    1 +
+ drivers/net/ethernet/emulex/benet/be_main.c   |   12 ++++++++++++
+ 3 files changed, 30 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/ethernet/emulex/benet/be_compat.c b/drivers/net/ethernet/emulex/benet/be_compat.c
+index d1563d3..470dbea 100644
+--- a/drivers/net/ethernet/emulex/benet/be_compat.c
++++ b/drivers/net/ethernet/emulex/benet/be_compat.c
+@@ -72,3 +72,20 @@ int pci_sriov_get_totalvfs(struct pci_dev *pdev)
+ #endif
+ #endif /* CONFIG_PCI_IOV */
++
++void be_wait_for_vfs_detach(struct pci_dev *pdev)
++{
++#ifdef CONFIG_PCI_IOV
++#ifndef HAVE_PCI_VF_ASSIGNED
++      if (pci_vfs_assigned(pdev))
++               dev_warn(&pdev->dev,
++                        "Waiting to unload, until VFs are detached\n");
++      while (1) {
++              if (pci_vfs_assigned(pdev) == 0)
++                      break;
++
++              msleep(1000);
++      }
++#endif
++#endif
++}
+diff --git a/drivers/net/ethernet/emulex/benet/be_compat.h b/drivers/net/ethernet/emulex/benet/be_compat.h
+index be334b0..00bc2ba 100644
+--- a/drivers/net/ethernet/emulex/benet/be_compat.h
++++ b/drivers/net/ethernet/emulex/benet/be_compat.h
+@@ -76,6 +76,7 @@ int pci_sriov_get_totalvfs(struct pci_dev *pdev);
+ #define pci_vfs_assigned(x)                     0
+ #define pci_num_vf(x)                           0
+ #endif /* CONFIG_PCI_IOV */
++void be_wait_for_vfs_detach(struct pci_dev *pdev);
+ #ifndef NETIF_F_HW_VLAN_CTAG_TX
+ #define NETIF_F_HW_VLAN_CTAG_TX         NETIF_F_HW_VLAN_TX
+diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
+index b3890ae..c745fba 100644
+--- a/drivers/net/ethernet/emulex/benet/be_main.c
++++ b/drivers/net/ethernet/emulex/benet/be_main.c
+@@ -25,7 +25,9 @@
+ #ifdef HAVE_SKB_MARK_NAPI_ID
+ #include <net/busy_poll.h>
+ #endif
++#ifdef CONFIG_BE2NET_VXLAN
+ #include <net/vxlan.h>
++#endif
+ MODULE_VERSION(DRV_VER);
+ MODULE_DEVICE_TABLE(pci, be_dev_ids);
+@@ -1850,8 +1852,10 @@ static void be_rx_compl_process(struct be_rx_obj *rxo, struct napi_struct *napi,
+ #ifdef HAVE_SK_BUFF_CSUM_LEVEL
+       skb->csum_level = rxcp->tunneled;
+ #else
++#ifdef CONFIG_BE2NET_VXLAN
+       skb->encapsulation = rxcp->tunneled;
+ #endif
++#endif
+ #ifdef HAVE_SKB_MARK_NAPI_ID
+       skb_mark_napi_id(skb, napi);
+@@ -1919,8 +1923,10 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
+ #ifdef HAVE_SK_BUFF_CSUM_LEVEL
+       skb->csum_level = rxcp->tunneled;
+ #else
++#ifdef CONFIG_BE2NET_VXLAN
+       skb->encapsulation = rxcp->tunneled;
+ #endif
++#endif
+ #ifdef HAVE_SKB_MARK_NAPI_ID
+       skb_mark_napi_id(skb, napi);
+@@ -3280,6 +3286,8 @@ static void be_vf_clear(struct be_adapter *adapter)
+       struct be_vf_cfg *vf_cfg;
+       u32 vf;
++      be_wait_for_vfs_detach(adapter->pdev);
++
+       if (pci_vfs_assigned(adapter->pdev)) {
+               dev_warn(&adapter->pdev->dev,
+                        "VFs are assigned to VMs: not disabling VFs\n");
+@@ -3623,7 +3631,11 @@ static int be_get_sriov_config(struct be_adapter *adapter)
+               return 0;
+       }
++#ifdef CONFIG_PCI_IOV
++#ifdef HAVE_PCI_VF_ASSIGNED
+       pci_sriov_set_totalvfs(adapter->pdev, be_max_vfs(adapter));
++#endif
++#endif
+       /* validate num_vfs module param */
+       old_vfs = pci_num_vf(adapter->pdev);
+-- 
+1.7.1
+