Version 12.15.0-0199 - Critical ------------------- Enhancement: - Display drive speed for 12 GB Seagate hard drives in MSM. - List battery status in BIOS as N/A for iMR controllers Fixes: - Fixed incompatibility issue with System x3200/3250 M3 causing hang condition (RETAIN Tip H211826) - Fixed an issue where self-encrypting (SED) hard disk password fails to allow access to virtual disk configurations - Fixed an issue where the ‘cli set securitykey=Lsi@12345’ command fails with error code 1001 and error message invalid key. - Fixed an issue where WebBIOS is not displaying correct index position for boot error handling option. - Fixed an issue where WebBIOS advanced software option locks the server.
Version 12.13.0-0179 - Critical ------------------- Enhancement: - Implemented limited band charging for iBBU08. (RETAIN tip H21631) - CacheCade 2.0 read and write caching on SSDs is supported on ServeRAID M5014 and ServeRAID M5015 with the ServeRAID M5000 Series Performance Accelerator Key. Fixes - Fixed an issue in multipath topology to use an alternate IO path if the current active path is removed. - Fixed an issue where drive states were marked as online before the creation of recontruction volumes completed. - Resolved controller hang condition during system bootup. - Fixed issue causing iBBU07 to always show "Charging" state (RETAIN tip H211025) - Fixed issue causing Virtual Disks to remain in Write-Through state after a relearn (RETAIN tip H211101) - Addressed data exposure issue when using CacheCade
Version 12.12.0-0133 - Suggested ------------------- Fixes: - Addressed an issue where battery over temperature messages could occur during charging. - Fixed issue in the HII broswer where the drive performing copyback will be stated as replacing and not copyback. - Fixed issue in the HII browser where the RPM for SATA drives show "0" - Fixed issue in HII browers where port 4 is shown on both ports 0 and 1 - Fixed HII browser issue where the user will get an error message when a global hot spare is created. - Fix HII browser issue where a RAID volume with greater then 3 spans will fail to create.
Version 12.12.0-0126 - Critical ------------------- Fixes: - Fixed a issue where the RAID configuration can be lost when updating from firmware package 12.0.1-0097 or below. - Fixed an issue with 4-kilobyte (KB) sector disk support compatibility in NTFS by disabling 512E drive support mode.
Version 12.12.0-0111 - Suggested ------------------- Enhancement: - Support for 512e and 4k SAS/SATA hard drives added - Implemented limited band charging for iBBU 07. - CacheCade 2.0 read and write caching on SSDs is supported on ServeRAID M5014 and ServeRAID M5015 with the ServeRAID M5000 Series Performance Accelerator Key. Fixes: - Set the compatibility bit to 1 so that Patrol reads can be executed on SSD's - Fixed an issue where EEPROM init failures are not handled properly causing the user to see the following message on POST "The native configuration is no longer supported by the current controller and firmware." - Fixed an issue where the controller fails to read the header info from CFI Flash ROM. - Resolved issue switching to WT mode for recently failed batteries.
Version 12.12.0-0098 - Suggested ------------------- Fixes: - Fixed issue where the battery gauge is not accurate for aged batteries due to the discharge profiles of aged batteries not matching that of the new batteries. - Fixed a issue where a reboot would cause a hot spare to revert to 'Unconfigured Good' state when Performance Accelerator Key is attached. (RETAIN Tip H204925)
Version 12.12.0-0085 - Suggested ------------------- Enhancements: - Prevent non IBM firmware from being flashed on IBM ServeRAID branded controllers. - Enabled iBBU08 battery modes. - ibbu battery will no longer be marked as bad when very high capacity is detected. - Dimmer Switch function has been disabled by default.
Fixes: - Fixed a issue where firmware was taking to long to complete the PCI config read, causing the system to generate an NMI. - Fixed issue where enabling security causes the configuration to be missing, and a configured FDE array to be seen as foreign on reboot. - Removed BBU mode select from Web BIOS for all controllers. - Fixed issue where pulling VD 0 from a R60 and rebooting would cause two foreign configurations. - Fixed issue where WebBIOS gives unclear message when enabling FDE on an existing Disk Group. - Fixed issue where iBBU07 batteries display 65K capacity and are marked SOH bad. - Fixed issue where iBBU Absolute Charge is displayed differently - Fixed issue where the logical Unit ID (VPD page 0x83) changed after foreign import. - Fixed issue where the LDBBM entries are incorrect after foreign import. - Fixed issue where the controller does not work with pci set to nomsi in kdump kernel. - Fixed issue where the LED behavior is incorrect, wrong drive will blink activity. - Fixed issue where the controller cannot sustain at least 950 MBps performance with Cache Flush setting one sec. - Fixed issue where the set properties command fails - Fixed issue where the iBBU07 battery reported remaining capacity is much too high (64751 mAh) after a learn cycle. - Fixed issue where extended retries of write verify commands cause a driver timeout. - Fixed issue where the configuration becomes foreign after the firmware fails multiple attempts to access raid key during boot. - Fixed firmware issue where a replacement drive is not seen if the replacement is added during power cycle. - Fixed a issue where an alert should be sent when one phy connector between the SAS controller and SAS expander is degraded. - Enabled puncturing for SATA drives. - Enabled copy back on SMART. - Fixed an intermittent RAID key failure during power-on. - Fixed firmware issue where firmware would cause the controller to (sles11sp1/rhel6) reset when ‘lspci –vvx’ command is executed. - Change for iBBU-08 to support firmware Mode5 WB capacity from 960mAh to 674mAh for low power DDR-2 - Fixed a issue where the iBBU battery will not charge while the server continually resets causing the iBBU battery to over-charge.
Version 12.12.0-0065 - Critical ------------------- Fixes: - Fixed issue where the firmware takes too long to complete a PCI Config Read cycle causing SLES11 to kernel panic. - Fixed issue where MegaCLI may not be able to change drive or controller cache setting resulting in a return code of 0x03. - Added check to return SCSI sense Check condition if PMI is set and LBA is non Zero for SCSI Read Cap 16 - Fixed issue where a blue screen occurs handling RAID 1 with HSP and medium errors. The blue screen occurs because the driver times out while the firmware is retrying sense 0x02. Firmware causes Fatal Error when HSP drive responded with Sense 0x02 for Write/Verify or TUR - Change the boot with pinned cache RAID level support which was only allowed for raid level 0. The check is removed and is allowed for any raid level. - Fixed hang condition or condition where the uEFI driver does not load due to the uEFI Driver issuing a command in poll mode to firmware to early - Remove the following message "Battery cannot initiate transparent learn cycles" when the iBBU08 is under mode 4 or 5 - Fixed issue where BGI will not disable when a user issues megacli -LDBI -Dsbl -L0 -a0
Version 12.12.0-0056 - Critical ------------------- Fixes - Fixed issue where multi-bit ECC's are not reported during POST - Lowered the capacity level at which event notifications are generated for early warning and end of life alerts for iBBU to equal 48 hours
Version 12.12.0-0047 - Critical ------------------- Fixes: - Fixed issue where uEFI WebBIOS version may not display the product name of the second controller - Fixed issue to prevent users from downleveling firmware to older versions - Fixed an issue where firmware reports "Unexpected sense, Invalid field in CDB" for LOG SENSE command sent to Seagate drives - Fixed issue where SMART failures can take longer then 5 minutes to report or in some cases fail to report - Fixed issue where it appears to the user the harddrive cache policy is changed when requested but the change did not occur - Fixed issue where a remote iBBU08 will not be seen by the controller - Fixed data issue When IO is in progress to a RAID 1 array that contains media errors and is under a rebuild - Fixed issue where a drive is not marked as foreign during a drive move between servers causing the import of the configuration to fail - Fixed issue where the uEFI WebBIOS does not accept the + symbol in the key code or pass phrase - Fixed issue for iBBU08
Enhancement: - Enhancement to Reserve/release call for VCS Symantec configurations - Enhancements to iBBU event notifications, including the addition of early warning message. - Raised the capacity level at which event notifications are generated for early warning and end of life alerts for iBBUs.
Version 12.12.0-0039 - Critical ------------------- Fixes: - Fixed intermittent initialization failure during POST with the ServeRAID M5025, M5015, and M5014 where the RAID BIOS could fail to load or the user will see one of the following error messages on POST:
RAID Adapter Unrecoverable Error!!! Please check the SDRAM connection.
or
Multi-bit ECC errors were detected on the RAID controller
Version 12.12.0-0037 - Critical ------------------- Enhancement: - Add support for iBBU08 (Battery Backup)
Fixes: - Addressed data issue while reconstructing from RAID1 to RAID0. - Addressed data issue after power lose to ServeRAID controllers. - Addressed data issue in some database applications. - Added fixes from LSI channel products.
Version 12.7.0-0020 - Critical ------------------- Enhancement: - Initial release for ServeRAID M5025 SAS/SATA Controller (46M0830)
Fixes: - Addressed data issue with database applications that use overlapping read write operating. - Addressed data issue which may occur during a reconstruction on some RAID levels that have an associated CacheCade virtual drive enabled. - Fixed issue where the controller may halt if a drive has medium errors that are being used in a check consistency, patrol read, or have delayed writes.
Version 12.0.1-0097 - Critical ------------------- Fixes: - Addresses an issue where data becomes inaccessible when drive is secured after data has been written . Version 12.0.1-0096 - Critical ------------------- Fixes: - Fixed an issue where the BBU may not be seen on POST. - Fixed an issue where the firmware doesn't follow the spinupdelay and maxtargetspinup values set in NVDATA causing spin up of all the drives a at the same time. - Fixed a very intermittent issue where the RAID key (M5000) authentication may not occur on boot leaving users without key options. - Addressed a very rare issue with the expander devices where the firmware megamon could occur if the sgpio configuration cable has errors.
Version 12.0.1-0090 - critical ------------------- Fixes: - Fixed issue where controller properties such as Rebuild, CC, and BGI are not changing when up and down arrow keys are used. - Fixed issue on x3950 M3 servers that can cause a system hang at reboot
Version 12.0.1-0084 - Non-critical ------------------- Enhancement: - Support added for the ServeRAID M5000 Series Advanced Feature Key.
Version 12.0.1-0064 ------------------- - Initial release ibm_fw_sraidmr_m5000-12_15_0-0199_linux_32-64_chg
=================================================== Change History =================================================== Document Name: Change History Document Status: IBM General Avalibility Document Version: 3.2.5.5 Latest Driver Version: 3.2.5.5 Document Updated: 04/20/2015 Product: QLogic BR Series FC/NIC/CNA
Please visit www.qlogic.com for full documentation, additional drivers, and management applications.
Version 3.2.5.5 Fixes and Enhancements: - Boot FW, UEFI, HCM related fixes - MCP work around
Version 3.2.5.0 New Features and Feature Enhancement: - Support for RHEL5.11, RHEL6.6 and RHEL7.0
Version 3.2.4.0 New Features and Feature Enhancement: - Support for RHEL5.10 and RHEL6.5
Version 3.2.3.0 New Features and Feature Enhancement: - Support for patching firmware via boot image - Support for Linux PTP - Support for UEFI Health Check Protocol - Support for SLES11SP3
Version 3.2.1.0 New Features and Feature Enhancement: - Support for "IBM Flex System FC5024D 4-port 16Gb FC Adapter" PART_NUMBER "95Y2381" - Support for RHEL5.9 and RHEL6.4
Fixes and Enhancements: - Enhanced Linux driver data path to properly handle IPv6 packets. - Enhanced Linux driver to make sure user configured path tov value is persistent and is not changed due to change in dev_loss_tmo.
Version 3.2.0.0 Release for FC/NIC/CNA
New Features and Feature Enhancement: - Updated code for Brocade 1867 IBM Flex System FC5022 FC Adapter for x22 - BB Credit Recovery - Forward Error Correction (FEC) - Diagnostic Port (D-Port) - LUN Level IO Latency/Stats - UCM (Unified Configuration Manager) - Windows Network Performance and scalability enhancement
Fixes or enhancements: - For Brocade 8x5/4x5, I/O interrupt latency values are dynamically updated. Changes are effective for all the ports on the given adapter. - Addressed infrequent PSOD in VMware ESX with iSCSI or VLAN configured traffic in DCB enabled network. - Enhanced BR1860 Tape IO performance. - Improved BR1860 initialization on Xen kernel.
Version 3.1.0.1 Release for 16G FC/NIC/CNA
Adapter Features - Updated code for Brocade 1867 IBM 16G Mezzanine Fabric Adapter.
HBA - Fibre Channel 16G Support
Fixes and Enhancements: N/A
Version 3.0.3.1 Initial release for 16G FC/NIC/CNA
Adapter Features - Initial support for Brocade 1867 IBM 16G Mezzanine Fabric Adapter.
HBA - Fibre Channel 16G Support
Fixes and Enhancements: N/A brcd_fw_cna_3_2_5_5_linux_32-64_chg
Broadcom NetXtreme TG3 Linux Driver
Version 3.137h
Copyright (c) 2015 Broadcom Corporation All rights reserved
tg3: Modify tg3_tso_bug() to handle multiple TX rings
tg3_tso_bug() was originally designed to handle only HW TX ring 0, Commit d3f6f3a1d818410c17445bce4f4caab52eb102f1 ("tg3: Prevent page allocation failure during TSO workaround") changed the driver logic to use tg3_tso_bug() for all HW TX rings that are enabled. This patch fixes the regression by modifying tg3_tso_bug() to handle multiple HW TX rings.
Signed-off-by: Prashant Sreedharan Signed-off-by: Michael Chan Signed-off-by: David S. Miller
Commit 506724c463fcd63477a5e404728a980b71f80bb7 "tg3: Override clock, link aware and link idle mode during NVRAM dump" changed the timeout value for nvram command execution from 100ms to 1ms. But the 1ms timeout value was only sufficient for nvram read operations but not write operations for most of the devices supported by tg3 driver. This patch sets the MAX to 50ms. Also it uses usleep_range instead of udelay.
Signed-off-by: Prashant Sreedharan Signed-off-by: Michael Chan Suggested-by: David Miller Signed-off-by: David S. Miller
tg3: Clear NETIF_F_TSO6 flag before doing software GSO
Commit d3f6f3a1d818410c17445bce4f4caab52eb102f1 ("tg3: Prevent page allocation failure during TSO workaround") modified driver logic to use tg3_tso_bug() for any TSO fragment that hits hardware bug conditions thus the patch increased the scope of work for tg3_tso_bug() to cover devices that support NETIF_F_TSO6 as well. Prior to the patch, tg3_tso_bug() would only be used on devices supporting NETIF_F_TSO.
A regression was introduced for IPv6 packets requiring the workaround. To properly perform GSO on SKBs with TCPV6 gso_type, we need to call skb_gso_segment() with NETIF_F_TSO6 feature flag cleared, or the function will return NULL and cause a kernel oops as tg3 is not handling a NULL return value. This patch fixes the problem.
Signed-off-by: Prashant Sreedharan Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit 014b20133bcd442db554c2d2d86181b34cd15b66 commit 506724c463fcd63477a5e404728a980b71f80bb7 Author: Prashant Sreedharan Date: Sat May 24 01:32:09 2014 -0700
tg3: Override clock, link aware and link idle mode during NVRAM dump
When cable is not present the clock speed of some of the devices is reduced based upon power saving mode setting in NVRAM. Due to this NVRAM reads take long time to complete as a result CPU soft lockup message is seen. Fix is to override clock, disable link aware and link idle modes before NVRAM reads and restore them back after the reads are complete. During this period also check if the thread needs to be rescheduled and if there are any signals to handle.
Also decrease the NVRAM command execution timeout value to 1ms.
Signed-off-by: Prashant Sreedharan Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit de750e4c4bf36b8a14401527e6541e8620ea6267 Author: Michael Chan Date: Sun May 11 20:22:55 2014 -0700
tg3: Update copyright and version to 3.137
Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit d3f6f3a1d818410c17445bce4f4caab52eb102f1 Author: Michael Chan Date: Sun May 11 20:22:54 2014 -0700
tg3: Prevent page allocation failure during TSO workaround
If any TSO fragment hits hardware bug conditions (e.g. 4G boundary), the driver will workaround by calling skb_copy() to copy to a linear SKB. Users have reported page allocation failures as the TSO packet can be up to 64K. Copying such a large packet is also very inefficient. We fix this by using existing tg3_tso_bug() to transmit the packet using GSO.
Signed-off-by: Prashant Sreedharan Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit d71c0dc4e961e74143a644f248fc1a39cabf6586 Author: Michael Chan Date: Sun May 11 20:22:53 2014 -0700
tg3: Don't modify ip header fields when doing GSO
tg3 uses GSO as workaround if the hardware cannot perform TSO on certain packets. We should not modify the ip header fields if we do GSO on the packet. It happens to work by accident because GSO recalculates the IP checksum and IP total length.
Also fix the tg3_start_xmit comment to reflect that this is the only xmit function for all devices.
Signed-off-by: Prashant Sreedharan Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Do not include vlan acceleration features in vlan_features
Including hardware acceleration features in vlan_features breaks stacked vlans (Q-in-Q) by marking the bottom vlan interface as capable of acceleration. This causes one of the tags to be lost and the packets are sent with a sing vlan header.
CC: Nithin Nayak Sujir CC: Michael Chan Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller
commit d7b95315cc7f441418845a165ee56df723941487 Author: Michael Chan Date: Fri Feb 28 15:05:10 2014 -0800
tg3: Don't check undefined error bits in RXBD
Redefine the RXD_ERR_MASK to include only relevant error bits. This fixes a customer reported issue of randomly dropping packets on the 5719.
Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Poll cpmu link state on APE + ASF enabled devices
On ASF enabled devices where the mgmt firmware runs on the application processing engine, there is a race between the tg3 driver processing a link change event and the ASF firmware clearing the link changed bit in the EMAC status register. This leads to link notifications to the driver sometimes getting lost.
Poll the CPMU link state as a backup for the normal interrupt path update if ASF is enabled.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Set the MAC clock to the fastest speed during boot code load
On the 5717, 5718 and 5719 devices, the bootcode runs slower when any port doesn't have a link due to clock speed slowing down as part of the link-aware feature. This leads to the driver timing out waiting for the bootcode signature.
This patch overrides the clock policy to the highest frequency just before reset and restores it after the bootcode is up.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit e565eec31d9d5b1024311564f6536162df951de4 Author: Michael Chan Date: Fri Jan 3 10:09:12 2014 -0800
tg3: Add unicast filtering support.
Up to 3 additional unicast addresses can be added to the perfect match filter table.
Signed-off-by: Michael Chan Signed-off-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
commit f022ae62dd84425192b27100dcf907019f654d02 Author: Michael Chan Date: Fri Jan 3 10:09:11 2014 -0800
tg3: Refactor __tg3_set_mac_addr()
so that individual MAC address filter entries can be set.
Signed-off-by: Michael Chan Signed-off-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
tg3: Expand 4g_overflow_test workaround to skb fragments of any size.
The current driver assumes that an skb fragment can only be upto jumbo size. Presumably this was a fast-path optimization. This assumption is no longer true as fragments can be upto 32k.
v2: Remove unnecessary parantheses per Eric Dumazet.
Cc: stable@vger.kernel.org Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Initialize REG_BASE_ADDR at PCI config offset 120 to 0
The new tg3 driver leaves REG_BASE_ADDR (PCI config offset 120) uninitialized. From power on reset this register may have garbage in it. The Register Base Address register defines the device local address of a register. The data pointed to by this location is read or written using the Register Data register (PCI config offset 128). When REG_BASE_ADDR has garbage any read or write of Register Data Register (PCI 128) will cause the PCI bus to lock up. The TCO watchdog will fire and bring down the system.
Signed-off-by: Nat Gurumoorthy Acked-by: Michael Chan Signed-off-by: David S. Miller
tg3: Expand multicast drop counter miscounting fix to 5762
commit 4d95847381228639844c7197deb8b2211274ef22 - "tg3: Workaround rx_discards stat bug", added a workaround for miscounted statistics for multicast packets. This fix needs to be applied to the 5762.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Add flag to disable 1G Half Duplex advertisement
Some link partners have issues if the non-standard 1G half duplex is advertised. This patch adds support for an nvram setting to disable the advertisement.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
rxbds_empty is an informational statistic signifying that a ring full condition was observed. It does not mean an overflow has occurred.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit 8496e85c20e7836b3dec97780e40f420a3ae2801 Author: Rafael J. Wysocki Date: Sun Dec 1 02:34:37 2013 +0100
PCI / tg3: Give up chip reset and carrier loss handling if PCI device is not present
Modify tg3_chip_reset() and tg3_close() to check if the PCI network adapter device is accessible at all in order to skip poking it or trying to handle a carrier loss in vain when that's not the case. Introduce a special PCI helper function pci_device_is_present() for this purpose.
Of course, this uncovers the lack of the appropriate RTNL locking in tg3_suspend() and tg3_resume(), so add that locking in there too.
These changes prevent tg3 from burning a CPU at 100% load level for solid several seconds after the Thunderbolt link is disconnected from a Matrox DS1 docking station.
Signed-off-by: Rafael J. Wysocki Acked-by: Michael Chan Signed-off-by: David S. Miller
commit 7260899bde50cbe84bdf0a15b5642e2c3b03db32 Author: Ben Hutchings Date: Mon Nov 18 22:59:43 2013 +0000
tg3: Implement the SIOCGHWTSTAMP ioctl
While we're doing this, fix the error code for SIOCSHWTSTAMP ioctl on non-timestamping hardware.
Compile-tested only.
Signed-off-by: Ben Hutchings
commit 58b187c68d91b54b82f6fd267ee3346ed8770655 Author: Ben Hutchings Date: Thu Nov 14 00:40:56 2013 +0000
tg3: Validate hwtstamp_config completely before applying it
tg3_hwtstamp_ioctl() should validate all fields of hwtstamp_config before making any changes. Currently it sets the TX configuration before validating the rx_filter field.
Compile-tested only.
Signed-off-by: Ben Hutchings Acked-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
commit 85aec73d595b8847f9c4ea571deb127913f0d508 Author: Ivan Vecera Date: Wed Nov 6 14:02:36 2013 +0100
tg3: avoid double-freeing of rx data memory
If build_skb fails the memory associated with the ring buffer is freed but the ri->data member is not zeroed in this case. This causes a double-free of this memory in tg3_free_rings->... path. The patch moves this block after setting ri->data to NULL. It would be nice to fix this bug also in stable >= v3.4 trees.
Cc: Nithin Nayak Sujir Cc: Michael Chan Signed-off-by: Ivan Vecera Acked-by: Michael Chan Signed-off-by: David S. Miller
commit d458cdf712e0c671e8e819abb16ecd6e44f9daec Author: Joe Perches Date: Tue Oct 1 19:04:40 2013 -0700
net:drivers/net: Miscellaneous conversions to ETH_ALEN
Convert the memset/memcpy uses of 6 to ETH_ALEN where appropriate.
Also convert some struct definitions and u8 array declarations of [6] to ETH_ALEN.
Signed-off-by: Joe Perches Acked-by: Arend van Spriel Signed-off-by: David S. Miller
tg3: add support a phy at an address different than 01
When phylib was in use tg3 only searched at address 01 on the mdio bus and did not work with any other address. On the BCM4705 SoCs the switch is connected as a PHY behind the MAC driven by tg3 and it is at PHY address 30 in most cases. This is a preparation patch to allow support for such switches.
phy_addr is set to TG3_PHY_MII_ADDR for all devices, which are using phylib, so this should not change any behavior.
Signed-off-by: Hauke Mehrtens Acked-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
Commit 989038e217e94161862a959e82f9a1ecf8dda152 ("tg3: Don't turn off led on 5719 serdes port 0") added code to skip turning led off on port 0 of the 5719 since it powered down other ports. This workaround needs to be enabled on the 5720 as well.
Cc: stable@vger.kernel.org Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit ede23fa8161c1a04aa1b3bf5447812ca14b3fef1 Author: Joe Perches Date: Mon Aug 26 22:45:23 2013 -0700
drivers:net: Convert dma_alloc_coherent(...__GFP_ZERO) to dma_zalloc_coherent
__GFP_ZERO is an uncommon flag and perhaps is better not used. static inline dma_zalloc_coherent exists so convert the uses of dma_alloc_coherent with __GFP_ZERO to the more common kernel style with zalloc.
Remove memset from the static inline dma_zalloc_coherent and add just one use of __GFP_ZERO instead.
Trivially reduces the size of the existing uses of dma_zalloc_coherent.
Realign arguments as appropriate.
Signed-off-by: Joe Perches Acked-by: Neil Horman Acked-by: Jesse Brandeburg Acked-by: Jeff Kirsher Signed-off-by: David S. Miller
While EEH error happens, we might not have network device instance (struct net_device) yet. So we can't access the instance safely and check its link state, which causes kernel crash. The patch fixes it.
EEH: Frozen PE#2 on PHB#3 detected EEH: This PCI device has failed 1 times in the last hour EEH: Notify device drivers to shutdown (NULL net_device): PCI I/O error detected Unable to handle kernel paging request for data at address 0x00000048 Faulting instruction address: 0xd00000001c9387a8 Oops: Kernel access of bad area, sig: 11 [#1] SMP NR_CPUS=1024 NUMA PowerNV : NIP [d00000001c9387a8] .tg3_io_error_detected+0x78/0x2a0 [tg3] LR [d00000001c9387a4] .tg3_io_error_detected+0x74/0x2a0 [tg3] Call Trace: [c000003f93a0f960] [d00000001c9387a4] .tg3_io_error_detected+0x74/0x2a0 [tg3] [c000003f93a0fa30] [c00000000003844c] .eeh_report_error+0xac/0x120 [c000003f93a0fac0] [c0000000000371bc] .eeh_pe_dev_traverse+0x8c/0x150 [c000003f93a0fb60] [c000000000038858] .eeh_handle_normal_event+0x128/0x3d0 [c000003f93a0fbf0] [c000000000038db8] .eeh_handle_event+0x2b8/0x2c0 [c000003f93a0fc90] [c000000000038e80] .eeh_event_handler+0xc0/0x170 [c000003f93a0fd30] [c0000000000cc000] .kthread+0xf0/0x100 [c000003f93a0fe30] [c00000000000a0dc] .ret_from_kernel_thread+0x5c/0x80
Reported-by: Wei Yang Signed-off-by: Gavin Shan Acked-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
Turning off led on port 0 of the 5719 serdes causes all other ports to lose power and stop functioning. Add tg3_phy_led_bug() function to check for this condition. We use a switch() in tg3_phy_led_bug() for consistency with the tg3_phy_power_bug() function.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit 6829309926b90c4c32d1f4cafeb600cd34a721e3 Author: Daniel Borkmann Date: Tue Aug 13 11:45:13 2013 -0700
net: tg3: fix NULL pointer dereference in tg3_io_error_detected and tg3_io_slot_reset
Commit d8af4dfd8 ("net/tg3: Fix kernel crash") introduced a possible NULL pointer dereference in tg3 driver when !netdev || !netif_running(netdev) condition is met and netdev is NULL. Then, the jump to the 'done' label calls dev_close() with a netdevice that is NULL. Therefore, only call dev_close() when we have a netdevice, but one that is not running.
[ Add the same checks in tg3_io_slot_reset() per Gavin Shan - by Nithin Nayak Sujir ]
Reported-by: Dave Jones Signed-off-by: Daniel Borkmann Cc: Gavin Shan Cc: Michael Chan Signed-off-by: Nithin Nayak Sujir Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
The 5762 devices sometimes incorrectly treat udp fragments as RMCP packets and route to the APE. This patch sets the RX_MODE_IPV4_FRAG_FIX bit for these devices which enables the proper behaviour.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
The PTP_CAPABLE tg3 devices have a gpio output that is toggled when the free running counter matches a watchdog value. This patch adds support to set the watchdog and enable this feature.
Since the output is controlled via bits in the EAV_REF_CLCK_CTL register, we have to read-modify-write it when we stop/resume.
Cc: Richard Cochran Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Allow NVRAM programming when interface is down
Previously, when the interface was brought down, the driver would set the power state to D3hot. In D3hot, we don't have access to the NVRAM. This patch removes the call to set the power state to PCI_D3hot in close. A following patch will implement the shutdown handler to properly set the D3hot state when the system is going down.
Doing the above means that the TG3_PHYFLG_IS_LOW_POWER should not be checked to validate access to the NVRAM.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
During probe, the driver is incorrectly switching the power to Vaux on the 5717 and later devices. At this point, we are in D0 state and drawing maximum power. We also definitely have Vmain available. It doesn't make sense to switch to Vaux since it has a lesser maximum power draw and we might go over the limit. On a new system, we observe that not all ports are recognized in some of the slots with this call in place.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
When the EEH error is the result of a fenced host bridge, MMIO accesses can be very slow (milliseconds) to timeout and return all 1's, thus causing the driver various timeout loops to take way too long and trigger soft-lockup warnings (in addition to taking minutes to recover).
It might be worthwhile to check if for any of these cases, ffffffff is a valid possible value, and if not, bail early since that means the HW is either gone or isolated. In the meantime, checking that the PCI channel is offline would be workaround of the problem.
Cc: # v3.0+ Signed-off-by: Gavin Shan Signed-off-by: David S. Miller
commit 72bb72b0d98847d22c6fae4e170121f3640f0f60 Author: Michael Chan Date: Mon Jun 17 13:47:25 2013 -0700
tg3: Prevent system hang during repeated EEH errors.
The current tg3 code assumes the pci_error_handlers to be always called in sequence. In particular, during ->error_detected(), NAPI is disabled and the device is shutdown. The device is later reset and NAPI re-enabled in ->slot_reset() and ->resume().
In EEH, if more than 6 errors are detected in a hour, only ->error_detected() will be called. This will leave the driver in an inconsistent state as NAPI is disabled but netif_running state is still true. When the device is later closed, we'll try to disable NAPI again and it will loop forever.
We fix this by closing the device if we encounter any error conditions during the normal sequence of the pci_error_handlers.
v2: Remove the changes in tg3_io_resume() based on Benjamin Poirier's feedback.
Signed-off-by: Michael Chan Signed-off-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
Some systems that don't need wake-on-lan may choose to power down the chip on system standby. Upon resume, the power on causes the boot code to startup and initialize the hardware. On one new platform, this is causing the device to go into a bad state due to a race between the driver and boot code, once every several hundred resumes. The same race exists on open since we come up from a power on.
This patch adds a wait for boot code signature at the beginning of tg3_init_hw() which is common to both cases. If there has not been a power-off or the boot code has already completed, the signature will be present and poll_fw() returns immediately. Also return immediately if the device does not have firmware.
Cc: stable@vger.kernel.org Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
Commit 091f0ea30074bc43f9250961b3247af713024bc6 "tg3: Add New 5719 Read DMA workaround" added a workaround for TX DMA stall on the 5719. This workaround needs to be applied to the 5720 as well.
Cc: stable@vger.kernel.org Reported-by: Roland Dreier Tested-by: Roland Dreier Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
The current code calls tg3_set_bdinfo() separately on napi0, followed by a loop that does napi1+. Simplify it by setting bdinfo in the loop for all napi contexts.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Split APE driver state change out of boot reset signature update
Unlike the boot signature that needs to be set before every reset, the ape state only needs to be updated to tell the firmware that the driver is now taking/releasing control of the hardware. Move the calls to tg3_ape_driver_state_change() to better, more appropriate places.
Also, the firmware does not distinguish between SUSPEND and START states anymore. Remove the SUSPEND case in the switch.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
tg3: Ensure boot code has completed initialization before accessing hardware
After resetting the device, the driver waits for a signature to be updated to know that firmware has completed initialization. However, the call to tg3_poll_fw() is being done too late and we're writing to the GRC_MODE register before it has completely initialized, causing contention with firmware. This logic has existed since day one but is causing PCIE link to go down randomly at startup on one platform once every few hundred reboots.
Move the tg3_poll_fw() up to before we write to the GRC_MODE register after reset.
Signed-off-by: Nithin Nayak Sujir Signed-off-by: Michael Chan Signed-off-by: David S. Miller
commit 1cbf9eb85a6601b58f01a71ff10299d2bf5d3365 Author: Nithin Sujir Date: Sat May 18 06:26:55 2013 +0000
tg3: Implement set/get_eee handlers
Reviewed-by: Ben Li Signed-off-by: Michael Chan Signed-off-by: Nithin Nayak Sujir Signed-off-by: David S. Miller
commit 5b6c273ad6c3886f30c7c5df7009e489043c59f3 Author: Nithin Sujir Date: Sat May 18 06:26:54 2013 +0000
tg3: Simplify tg3_phy_eee_config_ok() by reusing tg3_eee_pull_config()
eee_config_ok() was checking only for mismatch in advertised settings. This patch expands the scope of eee_config_ok() to check for mismatch in the other eee settings. On mismatch we will require a call to tg3_setup_eee() to push the configured settings to the hardware.