diff --git a/.bnx2x.metadata b/.bnx2x.metadata index 179013b..60eca06 100644 --- a/.bnx2x.metadata +++ b/.bnx2x.metadata @@ -1 +1 @@ -fc2236052f9f44add30ca2a6b4fbc440e1ee2d6b SOURCES/bnx2x-1.710.51.tar.bz2 +eb3625a4a6c6b6cc94c74777a0d77fcf41e1b855 SOURCES/bnx2x-1.712.30.tar.bz2 diff --git a/.gitignore b/.gitignore index 4b09395..9723b72 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/bnx2x-1.710.51.tar.bz2 +SOURCES/bnx2x-1.712.30.tar.bz2 diff --git a/SOURCES/bnx2x-firmware.files b/SOURCES/bnx2x-firmware.files index bdcbb4c..0fbcb86 100644 --- a/SOURCES/bnx2x-firmware.files +++ b/SOURCES/bnx2x-firmware.files @@ -1,4 +1,4 @@ %defattr(644,root,root,755) -/lib/firmware/bnx2x/bnx2x-e1-7.10.51.0.fw -/lib/firmware/bnx2x/bnx2x-e1h-7.10.51.0.fw -/lib/firmware/bnx2x/bnx2x-e2-7.10.51.0.fw +/lib/firmware/bnx2x-e1-7.13.1.0.fw +/lib/firmware/bnx2x-e1h-7.13.1.0.fw +/lib/firmware/bnx2x-e2-7.13.1.0.fw diff --git a/SOURCES/bnx2x.patch b/SOURCES/bnx2x.patch index 4fc8dca..837d13d 100644 --- a/SOURCES/bnx2x.patch +++ b/SOURCES/bnx2x.patch @@ -1,85 +1,120 @@ -diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h -index 86e9451..5097083 100644 ---- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h -+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h -@@ -2581,4 +2581,9 @@ void bnx2x_set_rx_ts(struct bnx2x *bp, struct sk_buff *skb); - #define BNX2X_MAX_PHC_DRIFT 31000000 - #define BNX2X_PTP_TX_TIMEOUT - -+static inline int dup_is_kdump_kernel(void) -+{ -+ return reset_devices; -+} -+ - #endif /* bnx2x.h */ +From 233fd923ea4759062abb3c26493beea638264c72 Mon Sep 17 00:00:00 2001 +From: Petr Oros +Date: Wed, 13 Jul 2016 18:33:14 +0200 +Subject: [PATCH] bnx2x: backport for RHEL7.2GA kernel + +Signed-off-by: Petr Oros +--- + drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 15 +++------------ + drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 5 +---- + drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 10 +++++----- + 3 files changed, 9 insertions(+), 21 deletions(-) + diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c -index 66717c5..bd1fed9 100644 +index 07e88de..860c1fb 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c -@@ -65,7 +65,7 @@ static int bnx2x_calc_num_queues(struct bnx2x *bp) - int nq = bnx2x_num_queues ? : netif_get_num_default_rss_queues(); +@@ -678,7 +678,7 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp, + static void bnx2x_frag_free(const struct bnx2x_fastpath *fp, void *data) + { + if (fp->rx_frag_size) +- skb_free_frag(data); ++ put_page(virt_to_head_page(data)); + else + kfree(data); + } +@@ -1908,8 +1908,7 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) + bnx2x_napi_disable_cnic(bp); + } - /* Reduce memory usage in kdump environment by using only one queue */ -- if (is_kdump_kernel()) -+ if (dup_is_kdump_kernel()) - nq = 1; +-u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, +- void *accel_priv, select_queue_fallback_t fallback) ++u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb) + { + struct bnx2x *bp = netdev_priv(dev); - nq = clamp(nq, 1, BNX2X_MAX_QUEUES(bp)); -@@ -1647,6 +1647,44 @@ void bnx2x_free_irq(struct bnx2x *bp) +@@ -1931,7 +1930,7 @@ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, } + + /* select a non-FCoE queue */ +- return fallback(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp); ++ return __netdev_pick_tx(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp); + } + + void bnx2x_set_num_queues(struct bnx2x *bp) +@@ -4276,14 +4275,6 @@ int bnx2x_setup_tc(struct net_device *dev, u8 num_tc) + return 0; } -+/** -+ * pci_enable_msix_range - configure device's MSI-X capability structure -+ * @dev: pointer to the pci_dev data structure of MSI-X device function -+ * @entries: pointer to an array of MSI-X entries -+ * @minvec: minimum number of MSI-X irqs requested -+ * @maxvec: maximum number of MSI-X irqs requested -+ * -+ * Setup the MSI-X capability structure of device function with a maximum -+ * possible number of interrupts in the range between @minvec and @maxvec -+ * upon its software driver call to request for MSI-X mode enabled on its -+ * hardware device function. It returns a negative errno if an error occurs. -+ * If it succeeds, it returns the actual number of interrupts allocated and -+ * indicates the successful configuration of MSI-X capability structure -+ * with new allocated MSI-X interrupts. -+ **/ -+static int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, -+ int minvec, int maxvec) -+{ -+ int nvec = maxvec; -+ int rc; -+ -+ if (maxvec < minvec) -+ return -ERANGE; -+ -+ do { -+ rc = pci_enable_msix(dev, entries, nvec); -+ if (rc < 0) { -+ return rc; -+ } else if (rc > 0) { -+ if (rc < minvec) -+ return -ENOSPC; -+ nvec = rc; -+ } -+ } while (rc); -+ -+ return nvec; -+} -+ - int bnx2x_enable_msix(struct bnx2x *bp) +-int __bnx2x_setup_tc(struct net_device *dev, u32 handle, __be16 proto, +- struct tc_to_netdev *tc) +-{ +- if (tc->type != TC_SETUP_MQPRIO) +- return -EINVAL; +- return bnx2x_setup_tc(dev, tc->tc); +-} +- + /* called with rtnl_lock */ + int bnx2x_change_mac_addr(struct net_device *dev, void *p) { - int msix_vec = 0, i, rc; +diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +index 0e68fad..cabbb1c 100644 +--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h ++++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +@@ -486,8 +486,6 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev); + + /* setup_tc callback */ + int bnx2x_setup_tc(struct net_device *dev, u8 num_tc); +-int __bnx2x_setup_tc(struct net_device *dev, u32 handle, __be16 proto, +- struct tc_to_netdev *tc); + + int bnx2x_get_vf_config(struct net_device *dev, int vf, + struct ifla_vf_info *ivi); +@@ -495,8 +493,7 @@ int bnx2x_set_vf_mac(struct net_device *dev, int queue, u8 *mac); + int bnx2x_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos); + + /* select_queue callback */ +-u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, +- void *accel_priv, select_queue_fallback_t fallback); ++u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb); + + static inline void bnx2x_update_rx_prod(struct bnx2x *bp, + struct bnx2x_fastpath *fp, diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c -index e22c363..491ffe0 100644 +index 3d8261e..440750a 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c -@@ -11972,7 +11972,7 @@ static int bnx2x_init_bp(struct bnx2x *bp) - bp->disable_tpa = disable_tpa; - bp->disable_tpa |= IS_MF_STORAGE_SD(bp) || IS_MF_FCOE_AFEX(bp); - /* Reduce memory usage in kdump environment by disabling TPA */ -- bp->disable_tpa |= is_kdump_kernel(); -+ bp->disable_tpa |= dup_is_kdump_kernel(); +@@ -77,9 +77,9 @@ + __stringify(BCM_5710_FW_MINOR_VERSION) "." \ + __stringify(BCM_5710_FW_REVISION_VERSION) "." \ + __stringify(BCM_5710_FW_ENGINEERING_VERSION) +-#define FW_FILE_NAME_E1 "bnx2x/bnx2x-e1-" FW_FILE_VERSION ".fw" +-#define FW_FILE_NAME_E1H "bnx2x/bnx2x-e1h-" FW_FILE_VERSION ".fw" +-#define FW_FILE_NAME_E2 "bnx2x/bnx2x-e2-" FW_FILE_VERSION ".fw" ++#define FW_FILE_NAME_E1 "bnx2x-e1-" FW_FILE_VERSION ".fw" ++#define FW_FILE_NAME_E1H "bnx2x-e1h-" FW_FILE_VERSION ".fw" ++#define FW_FILE_NAME_E2 "bnx2x-e2-" FW_FILE_VERSION ".fw" + + /* Time in jiffies before concluding the transmitter is hung */ + #define TX_TIMEOUT (5*HZ) +@@ -12859,7 +12859,7 @@ static int bnx2x_validate_addr(struct net_device *dev) + } + + static int bnx2x_get_phys_port_id(struct net_device *netdev, +- struct netdev_phys_item_id *ppid) ++ struct netdev_phys_port_id *ppid) + { + struct bnx2x *bp = netdev_priv(netdev); - /* Set TPA flags */ - if (bp->disable_tpa) { +@@ -13034,7 +13034,7 @@ static const struct net_device_ops bnx2x_netdev_ops = { + #ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = poll_bnx2x, + #endif +- .ndo_setup_tc = __bnx2x_setup_tc, ++ .ndo_setup_tc = bnx2x_setup_tc, + #ifdef CONFIG_BNX2X_SRIOV + .ndo_set_vf_mac = bnx2x_set_vf_mac, + .ndo_set_vf_vlan = bnx2x_set_vf_vlan, +-- +1.8.3.1 + diff --git a/SOURCES/kmodtool b/SOURCES/kmodtool index 5a9fc7e..2b55385 100755 --- a/SOURCES/kmodtool +++ b/SOURCES/kmodtool @@ -33,7 +33,7 @@ # # 2010/07/28 - Add fixes for filelists in line with LF standard # - Remove now defunct "framepointer" kernel variant -# - Change version to "rhel6-rh2" as a consequence. +# - Change version to "rhel7-rh1" as a consequence. # # 2010/01/10 - Simplified for RHEL6. We are working on upstream # moving to a newer format and in any case do not @@ -42,7 +42,7 @@ shopt -s extglob myprog="kmodtool" -myver="rhel6-rh2" +myver="rhel7-rh1" knownvariants=@(debug|kdump) kmod_name= kver= diff --git a/SOURCES/symbols.greylist-x86_64 b/SOURCES/symbols.greylist-x86_64 index 015a655..b7eaf71 100644 --- a/SOURCES/symbols.greylist-x86_64 +++ b/SOURCES/symbols.greylist-x86_64 @@ -1,52 +1,47 @@ -alloc_pages_current __alloc_workqueue_key build_skb cancel_work_sync capable -__const_udelay crc32c crc32_le -csum_partial dcbnl_cee_notify dcb_setapp -delayed_work_timer_fn -dev_err -_dev_info -dma_ops -down_interruptible +__dev_kfree_skb_any down_timeout dql_completed dql_reset __dynamic_netdev_dbg +elfcorehdr_addr ethtool_op_get_ts_info __fentry__ flush_workqueue -__free_pages -__get_page_tail -kmalloc_caches -kmalloc_order_trace -kmem_cache_alloc_trace +ktime_get_boottime ktime_get_real -__list_add -local_bh_disable -local_bh_enable mdio_mii_ioctl -module_layout -napi_hash_add +__napi_alloc_skb +napi_complete_done +napi_disable napi_hash_del +__napi_schedule_irqoff netdev_alloc_frag netdev_err netdev_info __netdev_pick_tx netdev_printk +netdev_rss_key_fill netif_get_num_default_rss_queues +__netif_napi_add netif_set_real_num_rx_queues +ns_to_timespec +ns_to_timeval pci_choose_state pci_cleanup_aer_uncorrect_error_status pci_disable_pcie_error_reporting pci_disable_sriov pcie_capability_read_word pcie_get_minimum_link +pci_enable_msi_range +pci_enable_msix_range pci_enable_pcie_error_reporting pci_enable_sriov pci_find_ext_capability @@ -54,13 +49,13 @@ pci_get_bus_and_slot pci_intx pci_ioremap_bar pci_is_pcie +pci_num_vf pci_read_config_byte pci_read_config_dword pci_read_config_word pci_read_vpd pci_restore_state pci_save_state -pci_set_master pci_set_power_state pci_vfs_assigned pci_vpd_find_info_keyword @@ -69,31 +64,22 @@ pci_wait_for_pending_transaction pci_wake_from_d3 pci_write_config_dword pci_write_config_word -prandom_bytes ptp_clock_index ptp_clock_register ptp_clock_unregister -put_page -pv_irq_ops -queue_work_on release_firmware request_firmware -request_threaded_irq -reset_devices skb_clone_tx_timestamp +__smp_mb__before_atomic __stack_chk_fail synchronize_irq synchronize_sched system_state -system_wq tcp_gro_complete timecounter_cyc2time timecounter_init timecounter_read -usleep_range -vfree warn_slowpath_fmt -warn_slowpath_null x86_dma_fallback_dev zlib_inflate zlib_inflateEnd diff --git a/SPECS/bnx2x.spec b/SPECS/bnx2x.spec index 8948142..cfe6294 100644 --- a/SPECS/bnx2x.spec +++ b/SPECS/bnx2x.spec @@ -1,11 +1,11 @@ %define kmod_name bnx2x -%define kmod_driver_version 1.710.51 -%define kmod_rpm_release 3 -%define kmod_git_hash 7ddc31247e7f0623d933dd476e3aac576eaa8599 -%define kmod_kernel_version 3.10.0-123.el7 -%define kernel_version 3.10.0-123.el7 +%define kmod_driver_version 1.712.30 +%define kmod_rpm_release 1 +%define kmod_git_hash 233fd923ea4759062abb3c26493beea638264c72 +%define kmod_kernel_version 3.10.0-327.el7 +%define kernel_version 3.10.0-327.el7 %define kmod_kbuild_dir drivers/net/ethernet/broadcom/bnx2x -%define kmod_firmware_version 7.10.51 +%define kmod_firmware_version 7.13.1 %{!?dist: %define dist .el7} @@ -118,5 +118,6 @@ fi rm -rf $RPM_BUILD_ROOT %changelog -* Mon Nov 24 2014 Weiping Pan 1.710.51 3 +* Wed Jul 13 2016 Petr Oros 1.712.30 1 - bnx2x DUP module +- Resolves: #1347013