Broadcom NetXtreme TG3 Linux Driver Version 3.122g Copyright (c) 2010 - 2011 Broadcom Corporation All rights reserved commit 90415477bf1356f72acc34063ff52441fc10a754 Author: Matt Carlson Date: Fri Dec 16 13:33:23 2011 +0000 tg3: Make the RSS indir tbl admin configurable This patch adds the ethtool callbacks necessary to change the rss indirection table from userspace. Should the number of interrupts change (e.g. across a close / open call, or through a reset) and any one of the indirection table values fall out-of-range, the driver will reset the indirection table to a default layout. [Integrated many suggestions made by Ben Hutchings.] Changes since v3 * Removed TG3_FLAG_SUPPORT_MSIX checks at the start of tg3_get_rxfh_indir() and tg3_set_rxfh_indir(). Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit bcebcc468a6bcd3820fe9ad36b34220563efc93a Author: Matt Carlson Date: Wed Dec 14 11:10:01 2011 +0000 tg3: Break out RSS indir table init and assignment This patch creates a new device member to hold the RSS indirection table and separates out the code that initializes the table from the code that programs the table into device registers. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit f88788f0da6326cbcaa837e12c8c074027891f07 Author: Matt Carlson Date: Wed Dec 14 11:10:00 2011 +0000 tg3: Use mii_advertise_flowctrl This patch replaces tg3's internal tg3_advert_flowctrl_1000T function with mii_advertise_flowctrl provided by the kernel headers. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 55086ad95d740577def0b4e6ecc2c0ae9b0d6dec Author: Matt Carlson Date: Wed Dec 14 11:09:59 2011 +0000 tg3: Add 57766 ASIC rev support This patch adds support for the 57766 ASIC revision. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit a4cb428d31e11af1662e19c6fab9133c0f7a0eda Author: Matt Carlson Date: Wed Dec 14 11:09:58 2011 +0000 tg3: Make the TX BD DMA limit configurable The 57766 ASIC rev will impose a new TX BD DMA limit on the driver. This patch prepares for 57766 support by making the tx BD DMA limit tunable. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 4f272096054b6154e31e850f192eef5782f156c6 Author: Matt Carlson Date: Wed Dec 14 11:09:57 2011 +0000 tg3: Enable EEE support for capable 10/100 devs There are some devices in the 57765 ASIC rev that are EEE capable. Unfortunately the EEE setup code only gets executed if the device is gigabit capable. This patch fixes the problem. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit efab79c5c3bf830a41b2f737146a9b70c0e13f44 Author: Matt Carlson Date: Thu Dec 8 14:40:18 2011 +0000 tg3: Update version to 3.122 This patch updates the tg3 version to 3.122. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Ben Hutchings Signed-off-by: David S. Miller commit 4a2db503c57f7223d851dc7ab8cefca614e0d98a Author: Matt Carlson Date: Thu Dec 8 14:40:17 2011 +0000 tg3: Return flowctrl config through ethtool This patch changes the driver to return the flow control configuration rather than the flow control status through the ETHTOOL_GPAUSEPARAM ioctl. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Ben Hutchings Signed-off-by: David S. Miller commit 859edb2631c31813e63cbff7a81ced4f853b63ed Author: Matt Carlson Date: Thu Dec 8 14:40:16 2011 +0000 tg3: Track LP advertising This patch adds code to track the autonegotiation advertisements of the link partner and report them through ethtool. Signed-off-by: Matt Carlson Signed-off-by: Ben Hutchings Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit e2bf73e75aef01d93f569c4625b0d7f50f3e1031 Author: Matt Carlson Date: Thu Dec 8 14:40:15 2011 +0000 tg3: Integrate flowctrl check into AN adv check This patch integrates tg3_adv_1000T_flowctrl_ok() into tg3_copper_is_advertising_all() and renames the function tg3_phy_copper_an_config_ok(). Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Ben Hutchings Signed-off-by: David S. Miller commit 92feeabf3f673767c6ee4cfc7fc224098446c1c1 Author: Matt Carlson Date: Thu Dec 8 14:40:14 2011 +0000 tg3: Save stats across chip resets Tg3 has a place to store stats, but doesn't really use it. This patch modifies the driver so that stats are saved across chip resets and gets cleared across close / open calls. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Ben Hutchings Signed-off-by: David S. Miller commit 0e6c9da35ef774109a1b5740144c9d442bd5a5b5 Author: Matt Carlson Date: Thu Dec 8 14:40:13 2011 +0000 tg3: Remove ethtool stats member from dev struct This patch removes the ethtool stats member from the tg3 device structure. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Ben Hutchings Signed-off-by: David S. Miller commit 298376d3e8f00147548c426959ce79efc47b669a Author: Tom Herbert Date: Mon Nov 28 16:33:30 2011 +0000 tg3: Support for byte queue limits Changes to tg3 to use byte queue limits. Signed-off-by: Tom Herbert Acked-by: Eric Dumazet Signed-off-by: David S. Miller commit 2c55a3d08ade44a778c182c220a7907ec65d5fb8 Author: Matt Carlson Date: Mon Nov 28 09:41:04 2011 +0000 tg3: Scale back code that modifies MRRS Tg3 normally gets a performance boost by increasing the PCI Maximum Read Request Size (MRRS) to 4k. Unfortunately, this is causing some problems on particular hardware platforms. This patch removes all code that modifies the MRRS except for one case. As part of a solution to fix an internal FIFO problem on the 5719, the driver artificially capped the MRRS to 2k for the entire 5719, and later 5720, ASIC revs. This was overly aggressive and only really needed to be done for the 5719 A0. In the spirit of the rest of this patch, the driver will only reprogram the MRRS for this device if the value exceeds the 2k cap. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit cf9ecf4b631f649a964fa611f1a5e8874f2a76db Author: Matt Carlson Date: Mon Nov 28 09:41:03 2011 +0000 tg3: Fix TSO CAP for 5704 devs w / ASF enabled On the earliest TSO capable devices, TSO was accomplished through firmware. The TSO cannot coexist with ASF management firmware though. The tg3 driver determines whether or not ASF is enabled by calling tg3_get_eeprom_hw_cfg(), which checks a particular bit of NIC memory. Commit dabc5c670d3f86d15ee4f42ab38ec5bd2682487d, entitled "tg3: Move TSO_CAPABLE assignment", accidentally moved the code that determines TSO capabilities earlier than the call to tg3_get_eeprom_hw_cfg(). As a consequence, the driver was attempting to determine TSO capabilities before it had all the data it needed to make the decision. This patch fixes the problem by revisiting and reevaluating the decision after tg3_get_eeprom_hw_cfg() is called. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e348c5e7de4a759a94eed4d0303ba81a4939f8b9 Author: Matt Carlson Date: Mon Nov 21 15:01:20 2011 +0000 tg3: Add MDI-X reporting This patch adds MDI-X state reporting. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit fa6b2aae6ab5ae1ce4b65c1872477c4b794d338e Author: Matt Carlson Date: Mon Nov 21 15:01:19 2011 +0000 tg3: Restrict large prod ring cap devices Future devices may or may not be capable of supporting larger rx producer rings. This patch changes the code so that this flag is set on an ASIC rev to ASIC rev basis. Also, this patch changes a place where the LRG_PROD_RING_CAP flag was not controlling how the rx standard producer ring size was set. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 513aa6ea39adfc9daf5b4bc33b49008733c3eb51 Author: Matt Carlson Date: Mon Nov 21 15:01:18 2011 +0000 tg3: Adjust BD replenish thresholds The BD replenish thresholds for the 57765 and newer ASIC revs are a little strict. They were tuned for a mode that is currently unused. This patch relaxes the thresholds so that they are set to values more inline with the resources available. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f3791cdf33e7d21515de25f5ead0eca38f85ca11 Author: Matt Carlson Date: Mon Nov 21 15:01:17 2011 +0000 tg3: Make 1000Base-X FC resolution look like 1000T This patch changes tg3's 1000Base-X flow control resolution to look like the 1000Base-T flow control resolution code. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 202ff1c26c768efeead20b388556eda265dc8352 Author: Hiroaki SHIMODA Date: Tue Nov 22 04:05:41 2011 +0000 tg3: Fix advertisement handling Commit 28011cf19b (net: Add ethtool to mii advertisment conversion helpers) added a helper function ethtool_adv_to_mii_100bt() and tg3_copper_is_advertising_all(), tg3_phy_autoneg_cfg() were modified to use this. Before that commit, ethtool to mii advertisement conversion was done wrt speed, but now pause operation is also taken account. So, in tg3_copper_is_advertising_all(), below condition becomes true and this makes link up fails. if ((adv_reg & ADVERTISE_ALL) != all_mask) return 0; To fix this add ADVERTISE_ALL bit and operation to cap speed, and change default advertisement not including ADVERTISED_Pause. Reported-by: Eric Dumazet Signed-off-by: Hiroaki SHIMODA Signed-off-by: David S. Miller commit 9205fd9ccab8ef51ad771c1917eed7b2f2225d45 Author: Eric Dumazet Date: Fri Nov 18 06:47:01 2011 +0000 tg3: switch to build_skb() infrastructure This is very similar to bnx2x conversion, but simpler since no special alignement is required, so goal was not to reduce skb truesize. Using build_skb() reduces cache line misses in the driver, since we use cache hot skb instead of cold ones. Number of in-flight sk_buff structures is lower, they are more likely recycled in SLUB caches while still hot. Signed-off-by: Eric Dumazet CC: Matt Carlson CC: Michael Chan CC: Eilon Greenstein Signed-off-by: David S. Miller commit 37f07023d30708b5da091fe6d6be9b60783c6d82 Author: Matt Carlson Date: Thu Nov 17 14:30:55 2011 +0000 net: Change mii to ethtool advertisement function names This patch implements advice by Ben Hutchings to change the mii side of the function names to look more like the register whose values they convert. New LPA translation functions have been added as well. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 28011cf19b75df9d3f35489a7599a97ec0b3f1a0 Author: Matt Carlson Date: Wed Nov 16 18:36:59 2011 -0500 net: Add ethtool to mii advertisment conversion helpers Translating between ethtool advertisement settings and MII advertisements are common operations for ethernet drivers. This patch adds a set of helper functions that implements the conversion. The patch then modifies a couple of the drivers to use the new functions. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c8f44affb7244f2ac3e703cab13d55ede27621bb Author: Michał Mirosław Date: Tue Nov 15 15:29:55 2011 +0000 net: introduce and use netdev_features_t for device features sets v2: add couple missing conversions in drivers split unexporting netdev_fix_features() implemented %pNF convert sock::sk_route_(no?)caps Signed-off-by: Michał Mirosław Signed-off-by: David S. Miller commit 68aad78c5023b8aa82da99b47f9d8cf40e8ca453 Author: Rick Jones Date: Mon Nov 7 13:29:27 2011 +0000 sweep the floors and convert some .get_drvinfo routines to strlcpy Per the mention made by Ben Hutchings that strlcpy is now the preferred string copy routine for a .get_drvinfo routine, do a bit of floor sweeping and convert some of the as-yet unconverted ethernet drivers to it. Signed-off-by: Rick Jones Signed-off-by: David S. Miller commit 5ae7fa06bb90421bc63f1f1e56ab241b49bc7b91 Author: Matt Carlson Date: Fri Nov 4 09:15:05 2011 +0000 tg3: Update version to 3.121 This patch updates the tg3 version to 3.121. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5b1906241905d9bd1abe920854b3d43c2b9c85e1 Author: Matt Carlson Date: Fri Nov 4 09:15:04 2011 +0000 tg3: Eliminate timer race with reset_task During shutdown, it is impossible to reliably disable the timer and reset_task threads. Each thread can schedule the other, which leads to shutdown code that chases its tail. To fix the problem, this patch removes the ability of tg3_reset_task to schedule a new timer thread. To support this change, tg3_timer no longer terminates itself, but rather goes into a polling mode. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit db21997379906fe7657d360674e1106d80b020a4 Author: Matt Carlson Date: Fri Nov 4 09:15:03 2011 +0000 tg3: Schedule at most one tg3_reset_task run It is possible for multiple threads in the tg3 driver to each attempt to schedule a run of tg3_reset_task(). The multiple tg3_reset_task executions could all wind up on the same queue (and execute serially) or wind up on the queues of another processor (which could execute in parallel). Either scenario is not what was truly desired. This patch adds a new flag, TG3_FLAG_RESET_TASK_PENDING, and uses it to determine whether or not to schedule another run of tg3_reset_task(). With the new flag comes two new functions to facilitate scheduling and descheduling of tg3_reset_task(). Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 9dc5e342703948ea7b086d063c85c0e79dac8149 Author: Matt Carlson Date: Fri Nov 4 09:15:02 2011 +0000 tg3: Obtain PCI function number from device This patch adds code to attempt to obtain the PCI function number from the device rather than accept the number handed by the kernel. In pass-through scenarios, the function number handed by the kernel may not reflect the true function of the device. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5bc09186deba2a016b60aa3923fc0e42838ce877 Author: Matt Carlson Date: Fri Nov 4 09:15:01 2011 +0000 tg3: Fix irq alloc error cleanup path This patch fixes a bug where the irq error cleanup path did not free all the resources it allocated. Signed-off-by: Matt Carlson Signed-off-by: Ben Li Signed-off-by: Akinobu Mita Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit ba1142e4fb291c7bf124d93596351dca8d226a0f Author: Matt Carlson Date: Fri Nov 4 09:15:00 2011 +0000 tg3: Fix 4k skb error recovery path On the error recovery resource unwind path, it is possible for the driver to attempt to unmap a fragment that hadn't been mapped. This patch fixes the problem by correcting the "last" parameter supplied. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b9e454826f22e17d1945bd282834c87aef8d0f95 Author: Matt Carlson Date: Fri Nov 4 09:14:59 2011 +0000 tg3: Fix 4k tx bd segmentation code The new 4k tx bd segmentation code had a bug in the error cleanup path. If the driver did not map all the physical fragments, the abort path would wind up advancing the producer index beyond the point where the setup code stopped. This would ultimately turn into a tx recovery error where the driver would expect the skb pointer to be set when it isn't. This patch fixes the problem, and then makes the code a little easier to understand. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 78f94dc7b10d98cf4cf8498d98581500d910c6b7 Author: Matt Carlson Date: Fri Nov 4 09:14:58 2011 +0000 tg3: Fix APE mutex init and use APE mutex register blocks are shared by all ports of multiport devices. For some mutexing purposes, each function is assigned their own register. For other cases, each function is assigned its own request and grant bits of a single register. For the latter cases, the tg3 driver is incorrectly allowing each function to use the same set of grant / request bits. This patch fixes the code so that each function uses the appropriate bitset. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 48855432047c9de7ea9987349de4c47d48ade8d1 Author: Eric Dumazet Date: Mon Oct 24 07:53:03 2011 +0000 |PATCH net-next] tg3: add tx_dropped counter If a frame cant be transmitted, it is silently discarded. Add a counter to report these errors to user. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1805b2f04855f07afe3a71d620a68f483b0ed74f Merge: 78d81d1 f42af6c Author: David S. Miller Date: Mon Oct 24 18:18:09 2011 -0400 Merge branch 'master' of ra.kernel.org:/pub/scm/linux/kernel/git/davem/net commit 9e903e085262ffbf1fc44a17ac06058aca03524a Author: Eric Dumazet Date: Tue Oct 18 21:00:24 2011 +0000 net: add skb frag size accessors To ease skb->truesize sanitization, its better to be able to localize all references to skb frags size. Define accessors : skb_frag_size() to fetch frag size, and skb_frag_size_{set|add|sub}() to manipulate it. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8b0c11679fd37522d8d34a76101319a085d80912 Author: Rick Jones Date: Fri Oct 7 19:13:28 2011 -0400 net: Remove unnecessary driver assignments of ethtool_ringparam fields to zero Per comments from Ben Hutchings on a previous patch, sweep the floors a little removing unnecessary assignments of zero to fields of struct ethtool_ringparam in driver code supporting ethtool -g. Signed-off-by: Rick Jones Signed-off-by: David S. Miller commit 5d6bcdfe38ce883946aebf751a64695471ce1ab5 Author: Ian Campbell Date: Thu Oct 6 11:10:48 2011 +0100 net: use DMA_x_DEVICE and dma_mapping_error with skb_frag_dma_map When I converted some drivers from pci_map_page to skb_frag_dma_map I neglected to convert PCI_DMA_xDEVICE into DMA_x_DEVICE and pci_dma_mapping_error into dma_mapping_error. Signed-off-by: Ian Campbell Signed-off-by: David S. Miller commit 8decf868790b48a727d7e7ca164f2bcd3c1389c0 Merge: 3fc7237 d93dc5c Author: David S. Miller Date: Thu Sep 22 03:23:13 2011 -0400 Merge branch 'master' of github.com:davem330/net Conflicts: MAINTAINERS drivers/net/Kconfig drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c drivers/net/ethernet/broadcom/tg3.c drivers/net/wireless/iwlwifi/iwl-pci.c drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c drivers/net/wireless/rt2x00/rt2800usb.c drivers/net/wireless/wl12xx/main.c commit 93a700a9d20b05b3c3c85efc53ac840499c2e103 Author: Matt Carlson Date: Wed Aug 31 11:44:54 2011 +0000 tg3: Code movement This patch just moves some code around for better organization. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 997b4f135b8dffea812eda0311c142873804a785 Author: Matt Carlson Date: Wed Aug 31 11:44:53 2011 +0000 tg3: Eliminate tg3_halt_cpu() prototype This patch moves the implementatino of tg3_halt_cpu() earlier in the file to eliminate its prototype. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit fd6d3f0ec7050681f65445a38f81c43caea15ea6 Author: Matt Carlson Date: Wed Aug 31 11:44:52 2011 +0000 tg3: Eliminate tg3_write_sig_post_reset() prototype This patch moves the implementation of tg3_write_sig_post_reset() earlier to eliminate its prototype. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 8d5a89b3da78fd4cb17b261bf9d3b016c2120cac Author: Matt Carlson Date: Wed Aug 31 11:44:51 2011 +0000 tg3: Eliminate tg3_stop_fw() prototype This patch moves tg3_stop_fw() earlier in the file to eliminate its prototype. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5b39de9178ce792862a414255dc98c970ec25a88 Author: Matt Carlson Date: Wed Aug 31 11:44:50 2011 +0000 tg3: Add ability to turn off 1shot MSI In older devices, 1-shot MSI mode had to be enabled by the code. In newer devices however, 1-shot MSI mode is enabled by default; code would be needed to disable it. Disabling 1-shot MSI mode is useful when debugging. This patch changes the code so that the TG3_FLAG_1SHOT_MSI accurately reflects (and controls) the state of 1-shot MSI mode. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 81389f57150ca84c9517a6ab2338f57badef4219 Author: Matt Carlson Date: Wed Aug 31 11:44:49 2011 +0000 tg3: Remove tp->rx_offset term when unneeded This patch removes the tp->rx_offset term if NET_IP_ALIGN is defined to zero. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 7f23073515c83e8a7261462329b6f26f211126d7 Author: Matt Carlson Date: Wed Aug 31 11:44:48 2011 +0000 tg3: Fix missed MSI workaround This patch fixes a minor counter initialization bug and makes the MSI workaround slightly more efficient by attempting to service pending interrupts before applying the workaround. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b99d2a57b7d9e9e64e9193d70696b77ed035c311 Author: Matt Carlson Date: Wed Aug 31 11:44:47 2011 +0000 tg3: Check all adv bits when checking config This patch makes sure the driver checks all advertisement bits when checking the current hw advertisements. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit dc234d0b24e9639476969ece81d56dd7588e944a Author: Ian Campbell Date: Wed Aug 24 22:28:11 2011 +0000 tg3: convert to SKB paged frag API. Signed-off-by: Ian Campbell Reviewed-by: Konrad Rzeszutek Wilk Cc: Matt Carlson Cc: Michael Chan Cc: netdev@vger.kernel.org Cc: devicetree-discuss@lists.ozlabs.org Signed-off-by: David S. Miller commit eaa36660de7e174498618d69d7277d44a2f24c3d Author: Matt Carlson Date: Fri Aug 19 13:58:24 2011 +0000 tg3: Update version to 3.120 This patch updates the tg3 version to 3.120. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 941ec90f35603f35466988efd01395377fd00475 Author: Matt Carlson Date: Fri Aug 19 13:58:23 2011 +0000 tg3: Add external loopback support to selftest This patch adds external loopback support to tg3's ethtool selftest. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 28a4595786a64fb51d41c0bad819256198525e49 Author: Matt Carlson Date: Fri Aug 19 13:58:22 2011 +0000 tg3: Restructure tg3_test_loopback The tg3_test_loopback() function is starting to get more complicated as more loopback tests are added. This patch cleans up the code. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5e5a7f371ffea4b5aeca60253f912e0b36391495 Author: Matt Carlson Date: Fri Aug 19 13:58:21 2011 +0000 tg3: Pull phy int lpbk setup into separate func This patch pulls out the internal phy loopback setup code into a separate function. This cleans up the loopback test code and makes it available for NETIF_F_LOOPBACK support later. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 6e01b20b21d6b2131f27a7c068ff71a7fbe58796 Author: Matt Carlson Date: Fri Aug 19 13:58:20 2011 +0000 tg3: Consilidate MAC loopback code The driver puts the device into MAC loopback in two places in the driver. This patch consolidates the code into a single routine. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 2215e24ceb74b701c34b2ebe7cdc96e5509ac565 Author: Matt Carlson Date: Fri Aug 19 13:58:19 2011 +0000 tg3: Remove dead code Now that CPMU devices don't do MAC loopback, all the CPMU power saving mode adjustments are unneeded. This patch removes the dead code. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit afc4b13df143122f99a0eb10bfefb216c2806de0 Author: Jiri Pirko Date: Tue Aug 16 06:29:01 2011 +0000 net: remove use of ndo_set_multicast_list in drivers replace it by ndo_set_rx_mode Signed-off-by: Jiri Pirko Signed-off-by: David S. Miller commit adfc5217e9db68d3f0cec8dd847c1a6d3ab549ee Author: Jeff Kirsher Date: Thu Apr 7 06:03:04 2011 -0700 broadcom: Move the Broadcom drivers Moves the drivers for Broadcom devices into drivers/net/ethernet/broadcom/ and the necessary Kconfig and Makefile changes. CC: Eilon Greenstein CC: Michael Chan CC: Matt Carlson CC: Gary Zambrano CC: "Maciej W. Rozycki" Signed-off-by: Jeff Kirsher commit a051294423b015c5c89f2ed78f7fe0893b775098 Author: Matt Carlson Date: Wed Jul 27 14:20:54 2011 +0000 tg3: Remove 5719 jumbo frames and TSO blocks The A0 revision of this chip is the only device that requires these features to be disabled. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit e31aa9870627106aebddd280aab8ecb2f493246a Author: Matt Carlson Date: Wed Jul 27 14:20:53 2011 +0000 tg3: Break larger frags into 4k chunks for 5719 The 5719 has bug where RDMAs larger than 4k can cause problems. This patch works around the problem by dividing larger DMA requests into something the hardware can handle. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 84b67b27e9531e9a70c9e8cd952d66c55f4d0ddb Author: Matt Carlson Date: Wed Jul 27 14:20:52 2011 +0000 tg3: Add tx BD budgeting code As the driver breaks large skb fragments into smaller submissions to the hardware, there is a new danger that BDs might get exhausted before all fragments have been mapped. This patch adds code to make sure tx BDs aren't oversubscribed and flag the condition if it happens. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d1a3b7377d3b6a01ec5f70adb32173b13233aabf Author: Matt Carlson Date: Wed Jul 27 14:20:51 2011 +0000 tg3: Consolidate code that calls tg3_tx_set_bd() This patch consolidates all code that populates tx BDs into a single routine. Setting tx BDs needs to be more carefully controlled to see if workarounds need to be applied. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit e01ee14d499e5d09c0a9db0cac2545a018849e3d Author: Matt Carlson Date: Wed Jul 27 14:20:50 2011 +0000 tg3: Add partial fragment unmapping code The following patches are going to break skb fragments into smaller sizes. This patch attempts to make the change easier to digest by only addressing the skb teardown portion. The patch modifies the driver to skip over any BDs that have a flag set that indicates the BD isn't the beginning of an skb fragment. Such BDs were a result of segmentation and do not need a pci_unmap_page() call. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 0d681b27b0efc962a3038a316e78373de7bfe1ce Author: Matt Carlson Date: Wed Jul 27 14:20:49 2011 +0000 tg3: Generalize tg3_skb_error_unmap() In the following patches, unmapping skb fragments will get just as complicated as mapping them. This patch generalizes tg3_skb_error_unmap() and makes it the one-stop-shop for skb unmapping. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 13350ea78bd687a229af0f6052d2f45aa50a6524 Author: Matt Carlson Date: Wed Jul 27 14:20:48 2011 +0000 tg3: Remove short DMA check for 1st fragment The first fragment of an skb should always be greater than 8 bytes. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4 Author: Matt Carlson Date: Wed Jul 27 14:20:47 2011 +0000 tg3: Simplify tx bd assignments In the following patches, the process the driver will use to assign skb fragments to transmit BDs will get more complicated. To prepare for that new code, this patch seeks to simplify how transmit BDs are populated. It does this by separating the code that assigns the BD members from the logic that controls how the fields are set. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit df8944cf5cd3794c46e95e0404038376ee7f8dda Author: Matt Carlson Date: Wed Jul 27 14:20:46 2011 +0000 tg3: Reintroduce tg3_tx_ring_info The following patches will require the use of an additional flag in the ring_info structure. The use of this flag is tx path specific, so this patch defines a specialized ring_info structure. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit bda18faf630ae3731f4b4e8f4b94a26e326c4797 Author: Matt Carlson Date: Wed Jul 20 10:20:57 2011 +0000 tg3: Fix NVRAM selftest failures for 5720 devs This patch fixes NVRAM selftest failures for 5720 devices by fixing the checksum area size. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 535a490eaddab484c53717fe2feeba800c9cdda2 Author: Matt Carlson Date: Wed Jul 20 10:20:56 2011 +0000 tg3: Return size from tg3_vpd_readblock() Newer VPD datablocks can exceed the size the tg3 driver is traditionally used to. This can cause some of the routines that operate on the VPD data to fail when in-fact they could have succeeded had they known the correct size. This patch fixes the problem. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 3aa1cdf87c0b3f2345e75c474acc32ebbf0a4724 Author: Matt Carlson Date: Wed Jul 20 10:20:55 2011 +0000 tg3: Fix int selftest for recent devices. This patch fixes interrupt selftest failures for recent devices (57765, 5717, 5718. 5719, 5720) by disabling MSI one-shot mode and applying the status tag workaround to the selftest code. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 9d53fa129628d4899083b06fa66b7ca10fed8eb4 Author: Matt Carlson Date: Wed Jul 20 10:20:54 2011 +0000 tg3: Fix RSS indirection table distribution The current RSS indirection table is populated such that more traffic will hit the first RSS ring. This patch adjusts the indirection table so that the load is more evenly distributed. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5baa5e9aa28baccd2a1227095c25bb3e999f250d Author: Matt Carlson Date: Wed Jul 20 10:20:53 2011 +0000 tg3: Add 5719 and 5720 to EEE_CAP list This patch adds the 5719 and the 5720 to the list of devices that are EEE capable. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b715ce947f51c6637e78b262501f0c4ff9d848cc Author: Matt Carlson Date: Wed Jul 20 10:20:52 2011 +0000 tg3: Fix link down notify failure when EEE disabled Occasionally, when the network cable is removed after a successful autonegotiation, the device will not send a link down interrupt to the driver. This happens because of a bad interaction of an EEE workaround. The fix is to adjust the code so that the root cause condition does not happen. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit be671947b5b3efc6863ff429c1f265aa38e291db Author: Matt Carlson Date: Wed Jul 20 10:20:51 2011 +0000 tg3: Fix link flap at 100Mbps with EEE enabled This patch increases the scope of the EEE interoperability workaround to include more asic revisions. The workarond value is tuned to workaround a link flap issue at 100Mbps. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 9e975cc291d80d5e4562d6bed15ec171e896d69b Author: Matt Carlson Date: Wed Jul 20 10:20:50 2011 +0000 tg3: Fix io failures after chip reset Commit f2096f94b514d88593355995d5dd276961e88af1, entitled "tg3: Add 5720 H2BMC support", needed to add code to preserve some bits set by firmware. Unfortunately the new code causes throughput to stop after a chip reset because it enables state machines before they are ready. This patch undoes the problematic code. The bits will be restored later in the init sequence. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit cd0d7228b4f0279f219bc555fa0192dc072d79cd Author: Matt Carlson Date: Wed Jul 13 09:27:33 2011 +0000 tg3: Match power source to driver state Now that the driver state (and power source) is being more intensely scrutinized, we need to make sure it is correct 100% of the time. This patch finds and fixes all dangling power state transitions. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 3a1e19d383c7b91c8af52e8938ab60c40e3d26b3 Author: Matt Carlson Date: Wed Jul 13 09:27:32 2011 +0000 tg3: Add function status reporting This patch adds code to update the status of the function to a common location to the critical section added in the previous patch. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 6f5c8f8317d37045ffc7ea21dab8319a53c1ae57 Author: Matt Carlson Date: Wed Jul 13 09:27:31 2011 +0000 tg3: Create critical section around GPIO toggling The code that performs the power source switching will need to consider the status of the other devices before making any switches. The status updates and power source switching will need to be an atomic operation, so a critical section will be needed. This patch establishes the critical section through a CPMU mutex. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 69f11c9936ba310ed3620072983da6ed95e86cc0 Author: Matt Carlson Date: Wed Jul 13 09:27:30 2011 +0000 tg3: Determine PCI function number in one place tg3 devices will need to know exactly what function number they are so that they can communicate their status to the other functions. In a KVM environment, the function number of a device presented by the kernel might not be the true function number, so an alternative method to determine the function number is needed. This patch used to contain an implementation for the alternative method, but recently we discovered a hardware bug that renders it incorrect. While new method is not yet known, it is still useful to consolidate the code that determines the PCI function to one location and use the results throughout the code. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit bed9829f3ec4b30d5cbec6511a11368ba5f169fb Author: Matt Carlson Date: Wed Jul 13 09:27:29 2011 +0000 tg3: Check transitions to D0 power state Currently pci_set_power_state() does not return useful return codes for transitions to the D0 power state. If a device refuses to go into D0, the PCI layer issues a warning but returns success. Entering into D0 is a requirement for correct operation of tg3 devices though. If the PCI layer should be changed to return an error code for this type of failure, the tg3 driver would be interested in catching it and reacting to it. This patch makes the necessary modifications. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 168212858712b12c65e0fa1bec6c9c65808e7621 Author: Matt Carlson Date: Wed Jul 13 09:27:28 2011 +0000 tg3: Move power state transitions to init_one The tg3 driver is going to require memory mapped register access much sooner than before. This patch makes sure the device is in the D0 power state as soon as possible, and moves the code that enables the memory arbiter outside tg3_get_eeprom_hw_cfg() where it can be more easily monitored. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit c9cab24e954867a03ab833ea3b4c0e6e607eb0d6 Author: Matt Carlson Date: Wed Jul 13 09:27:27 2011 +0000 tg3: Detect APE enabled devs earlier The following patch will require the driver to communicate with the APE much sooner than before. This patch make sure the APE registers are memory mapped and that the ENABLE_APE bit is set before the first use. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 708ebb3a51489e70bc2b67b2772deea336eba849 Author: Jon Mason Date: Mon Jun 27 12:56:50 2011 +0000 tg3: remove unnecessary read of PCI_CAP_ID_EXP The PCIE capability offset is saved during PCI bus walking. Use the value from pci_dev instead of checking in the driver and saving it off the the driver specific structure. It will remove an unnecessary search in the PCI configuration space if this value is referenced instead of reacquiring it. v2 of the patch re-adds the PCI_EXPRESS flag and adds comments describing why it is necessary. [ pdev->pcie_cap --> pci_pcie_cap(pdev) -DaveM ] Signed-off-by: Jon Mason Signed-off-by: David S. Miller commit d515b450bfd50d355c5b3230685b997faeee5c49 Author: Richard Cochran Date: Sun Jun 19 03:31:41 2011 +0000 tg3: fix race in transmit time stamping. Signed-off-by: Richard Cochran Signed-off-by: David S. Miller commit 520b2756d9414cb6b0f6fc70714e95ee9248ebf4 Author: Matt Carlson Date: Mon Jun 13 13:39:02 2011 +0000 tg3: Create funcs for power source switching The power source switching code is about to get a little more complex. This patch seeks to simplify future power source switching patches by clarifying the existing code. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 221c56373ee7088dd3015b928782d5e70dc5074e Author: Matt Carlson Date: Mon Jun 13 13:39:01 2011 +0000 tg3: Migrate phy preprocessor defs to system defs This patch changes to code to use some of the preprocessor definitions from mii.h over its homegrown equivalents. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 5bb09778e2196770d218e82904f15b558d9a1e50 Author: Matt Carlson Date: Mon Jun 13 13:39:00 2011 +0000 tg3: Show flowctrl settings through get_settings() This patch adds code to present the flow control advertisements through the ethtool get_settings callback. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 727a6d9f39604b5592e474295960fceeb523ae4f Author: Matt Carlson Date: Mon Jun 13 13:38:58 2011 +0000 tg3: Add more selfboot formats to NVRAM selftest This patch adds more selfboot formats to the NVRAM selftest. It also changes the code to return an error on an unsupported NVRAM format. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit eb69d564a3f34df602bd9b0fae94e14fad23de2d Author: Matt Carlson Date: Mon Jun 13 13:38:57 2011 +0000 tg3: Remove 4G_DMA_BNDRY_BUG flag Now that all chips have this bug, the flag checks become useless code. This patch removes the flag. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit daf9a55387df8f429d1219bbdabba1ab33d2a479 Author: Matt Carlson Date: Mon Jun 13 13:38:56 2011 +0000 tg3: Remove 40BIT_DMA_LIMIT_BUG This patch removes the 40BIT_DMA_LIMIT_BUG flag. There already exists a flag for this purpose (TG3_FLAG_40BIT_DMA_BUG) and was already being used in the correct spot. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 0e6cf6a9e3cf911577b1dde0dc724f634e4ca119 Author: Matt Carlson Date: Mon Jun 13 13:38:55 2011 +0000 tg3: Workaround tagged status update bug On rare occasions, writing the tag to the interrupt mailbox does not reenable interrupts. This patch fixes the problem by reissuing the mailbox update. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 2669069aacc914821b45fe14a49e7fe0ba5d10bd Author: Richard Cochran Date: Sun Jun 12 02:19:02 2011 +0000 tg3: enable transmit time stamping. This patch enables software (and phy device) transmit time stamping for the TIGON3 driver. Compile tested only. Cc: Matt Carlson Cc: Michael Chan Signed-off-by: Richard Cochran Signed-off-by: David S. Miller commit a6b7a407865aab9f849dd99a71072b7cd1175116 Author: Alexey Dobriyan Date: Mon Jun 6 10:43:46 2011 +0000 net: remove interrupt.h inclusion from netdevice.h * remove interrupt.g inclusion from netdevice.h -- not needed * fixup fallout, add interrupt.h and hardirq.h back where needed. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9a2e0fb0893ddf595d0a372e681f5b98017c6d90 Author: Matt Carlson Date: Thu Jun 2 13:01:39 2011 +0000 tg3: Fix tg3_skb_error_unmap() This function attempts to free one fragment beyond the number of fragments that were actually mapped. This patch brings back the limit to the correct spot. Signed-off-by: Matt Carlson Tested-by: Alex Williamson Signed-off-by: David S. Miller commit 1dcb14d9e874d12bab9ceeba776b742f1682b0a6 Author: Meelis Roos Date: Wed May 25 05:43:47 2011 +0000 Add Fujitsu 1000base-SX PCI ID to tg3 This patch adds the PCI ID of Fujitsu 1000base-SX NIC to tg3 driver. Tested to detect the card, MAC and serdes, not tested with link at the moment since I have no fiber switch here. I did not add new constants to the pci_ids.h header file since these constants are used only here. Signed-off-by: Meelis Roos Signed-off-by: David S. Miller commit 7196cd6c3d4863000ef88b09f34d6dd75610ec3e Author: Matt Carlson Date: Thu May 19 16:02:44 2011 +0000 tg3: Add braces around 5906 workaround. Commit dabc5c670d3f86d15ee4f42ab38ec5bd2682487d, entitled "tg3: Move TSO_CAPABLE assignment", moved some TSO flagging code around. In the process it failed to add braces around an exceptional 5906 condition. This patch fixes the problem. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit d542fe27c86ecf932f40c898881208ccdaef9dc5 Author: Matt Carlson Date: Thu May 19 16:02:43 2011 +0000 tg3: Fix NETIF_F_LOOPBACK error Mahesh Bandewar noticed that the features cleanup in commit 0da0606f493c5cdab74bdcc96b12f4305ad94085, entitled "tg3: Consolidate all netdev feature assignments", mistakenly sets NETIF_F_LOOPBACK by default. This patch corrects the error. Signed-off-by: Matt Carlson Signed-off-by: Mahesh Bandewar Signed-off-by: David S. Miller commit 43a5f002afc6f24891e57d31275f34e19a1a07d0 Author: Matt Carlson Date: Thu May 19 12:12:56 2011 +0000 tg3: Update version to 3.119 This patch updates the tg3 version to 3.119. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 310050fad8962a2ebc70011353a549614e118152 Author: Matt Carlson Date: Thu May 19 12:12:55 2011 +0000 tg3: Apply rx_discards fix to 5719/5720 Commit 4d95847381228639844c7197deb8b2211274ef22, entitled "tg3: Workaround rx_discards stat bug", was intended to be applied to the 5717, 5718, 5719_A0, and 5720 A0 chip revisions. The implementation missed the latter two when applying the fix in a critical area. This patch fixes the problem. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 6ff6f81dd4ec08945e10147dbfe611569ef4cc09 Author: Matt Carlson Date: Thu May 19 12:12:54 2011 +0000 tg3: Remove excessive parenthesis This patch removes some excessive parenthesizing. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 0da0606f493c5cdab74bdcc96b12f4305ad94085 Author: Matt Carlson Date: Thu May 19 12:12:53 2011 +0000 tg3: Consolidate all netdev feature assignments This patch consolidates all the netdev feature bit assignments to one location. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit dabc5c670d3f86d15ee4f42ab38ec5bd2682487d Author: Matt Carlson Date: Thu May 19 12:12:52 2011 +0000 tg3: Move TSO_CAPABLE assignment This patch moves the code that asserts the TSO_CAPABLE flag closer to where the TSO capabilities flags are set. There isn't a good enough reason for the code to be separated. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4452d0999906e3e26b718566362e943fcaa3d694 Author: Matt Carlson Date: Thu May 19 12:12:51 2011 +0000 tg3: Fix stats for 5704 and later devices Commit 4d95847381228639844c7197deb8b2211274ef22, entitled "tg3: Workaround rx_discards stat bug" modified the hardware statistics data structure. The modification shifted the statistics so that the labels no longer corresponded to the counter values. This patch fixes the problem by utilizing reserved space for the new counters. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 54e0a67f446fae290f99781691eba46c5cda66e7 Author: Matt Carlson Date: Thu May 19 12:12:50 2011 +0000 tg3: Fix TSO loopback test Commit bb158d696489244f79fd4c3abd47968a06b48c79, entitled "tg3: Add TSO loopback test", mistakenly inverted the checksum field test from the receive BD. This patch corrects the problem. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 42b64a450b81ec9e8cdd5b3fb13613ab9bb25048 Author: Matt Carlson Date: Thu May 19 12:12:49 2011 +0000 tg3: Consolidate autoneg advertisement setup code Autonegotiation setup has gotten a little more complicated since the tg3 driver was created. This patch consolidates autoneg setup into one routine and modifies the call sites accordingly. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b0c5943f1ca4df6c1c451ef6be5287a161d29a9d Author: Matt Carlson Date: Thu May 19 12:12:48 2011 +0000 tg3: Fix EEE interoperability workaround Commit 21a00ab270f95d32e502d92f166dd75c518d3c5f, entitled "tg3: Fix EEE interoperability issue", added an EEE interoperability fix. We found that the fix doesn't work if applied too early though. This patch delays the fix until right before allowing LPI assertion. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 108a6c1655f184c9abb7b5917838a8fb204361f5 Author: Matt Carlson Date: Thu May 19 12:12:47 2011 +0000 tg3: Fix IPv6 TCP problems for 5719 Commit 4d163b75e979833979cc401ae433cb1d7743d57e, entitled "tg3: Fix 5719 A0 tx completion bug" turned off TSO to fix a hardware bug. In doing so, it accidentally turned off all IPv6 TCP checksum offloading too. This patch fixes the problem by reenabling the hardware bit that control both features. The TSO capability is still not exposed to the kernel. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 1ff30a59f6d0c754e99442501a5145bdbbcfa6ea Author: Matt Carlson Date: Thu May 19 12:12:46 2011 +0000 tg3: Fix 57765 B0 data corruption The PCIe max FTS limit is too aggressive on these chips. This patch loosens the limit a little to eliminate data corruption issues. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 432aa7ed75b3adaef6040d2cbe745fdd1c899415 Author: Matt Carlson Date: Thu May 19 12:12:45 2011 +0000 tg3: Cleanup transmit error path This patch consolidates the skb cleanup code into a function named tg3_skb_error_unmap(). The modification addresses a long-standing bug where pci_unmap_single() was incorrectly being called instead of pci_unmap_page() in tigon3_dma_hwbug_workaround(). Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 2ffcc981d823a0518c627ca22d51ef72d0b7ca9a Author: Matt Carlson Date: Thu May 19 12:12:44 2011 +0000 tg3: Set tx bug flags for more devices It has been recently discovered that all tg3 devices have a 4Gb boundary DMA problem, and that all 5755 and newer devices can't handle fragments less than or equal to 8 bytes in size. This patch adjusts the flags and removes tg3_start_xmit(). tg3_start_xmit_dma_bug() has been renamed to tg3_start_xmit(). Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 06c03c02ea528af0cbce50ce45ddd6a361864550 Author: Mahesh Bandewar Date: Sun May 8 06:51:48 2011 +0000 tg3: Allow ethtool to enable/disable loopback. This patch adds tg3_set_features() to handle loopback mode. Currently the capability is added for the devices which support internal MAC loopback mode. So when enabled, it enables internal-MAC loopback. Signed-off-by: Mahesh Bandewar Signed-off-by: David S. Miller commit 7143b7d41218d4fc2ea33e6056c73609527ae687 Merge: 90864fb 87e9af6 Author: David S. Miller Date: Thu May 5 14:59:02 2011 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/tg3.c commit 6fdbab9d93e04bfe71f2b3fde485d092e2ffe3ec Author: Rafael J. Wysocki Date: Thu Apr 28 11:02:15 2011 +0000 tg3: Fix failure to enable WoL by default when possible tg3 is supposed to enable WoL by default on adapters which support that, but it fails to do so unless the adapter's /sys/devices/.../power/wakeup file contains 'enabled' during the initialization of the adapter. Fix that by making tg3 use device_set_wakeup_enable() to enable wakeup automatically whenever WoL should be enabled by default. Signed-off-by: Rafael J. Wysocki Signed-off-by: David S. Miller commit 707394972093e2056e1e8cc39be19cf9bcb3e7b3 Author: David Decotigny Date: Wed Apr 27 18:32:40 2011 +0000 ethtool: cosmetic: Use ethtool ethtool_cmd_speed API This updates the network drivers so that they don't access the ethtool_cmd::speed field directly, but use ethtool_cmd_speed() instead. For most of the drivers, these changes are purely cosmetic and don't fix any problem, such as for those 1GbE/10GbE drivers that indirectly call their own ethtool get_settings()/mii_ethtool_gset(). The changes are meant to enforce code consistency and provide robustness with future larger throughputs, at the expense of a few CPU cycles for each ethtool operation. All drivers compiled with make allyesconfig ion x86_64 have been updated. Tested: make allyesconfig on x86_64 + e1000e/bnx2x work Signed-off-by: David Decotigny Signed-off-by: David S. Miller commit 25db0338813a8915457636b1f6abe6a28fa73f8d Author: David Decotigny Date: Wed Apr 27 18:32:39 2011 +0000 ethtool: Use full 32 bit speed range in ethtool's set_settings This makes sure the ethtool's set_settings() callback of network drivers don't ignore the 16 most significant bits when ethtool calls their set_settings(). All drivers compiled with make allyesconfig on x86_64 have been updated. Signed-off-by: David Decotigny Signed-off-by: David S. Miller commit 63c3a66fe6c827a731dcbdee181158b295626f83 Author: Joe Perches Date: Tue Apr 26 08:12:10 2011 +0000 tg3: Convert u32 flag,flg2,flg3 uses to bitmap Using a bitmap instead of separate u32 flags allows a consistent, simpler and more extensible mechanism to determine capabilities. Convert bitmasks to enum. Add tg3_flag, tg3_flag_clear and tg3_flag_set. Convert the flag & bitmask tests. Signed-off-by: Joe Perches Acked-by: Matt Carlson Signed-off-by: David S. Miller commit 64cad2ade1e6f890531a58318ca9ee013f92ef2f Author: Matt Carlson Date: Mon Apr 25 12:42:50 2011 +0000 tg3: Update version to 3.118 This patch updates the tg3 version to 3.118. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit bea8a63b27eb8e705a957938aadeb975178c5ea6 Author: Matt Carlson Date: Mon Apr 25 12:42:49 2011 +0000 tg3: Whitespace cleanups This patch gets rid of some harmless whitespace errors. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit b45aa2f6192e34a837ebdbb3548039c24440bc04 Author: Matt Carlson Date: Mon Apr 25 12:42:48 2011 +0000 tg3: Add EEH support This patch adds EEH support to the tg3 driver. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit bb158d696489244f79fd4c3abd47968a06b48c79 Author: Matt Carlson Date: Mon Apr 25 12:42:47 2011 +0000 tg3: Add TSO loopback test This patch adds code to exercise the TSO portion of the device through a phy loopback test. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 00c266b794d589dcf7d280926dfc27c5896a410a Author: Matt Carlson Date: Mon Apr 25 12:42:46 2011 +0000 tg3: Organize loopback test failure flags As more test modes are added to each loopback mode, the need to organise the results increases. This patch groups the results by loopback mode, and then by test mode. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 0aebff4871d26410ae485b521870bb0ffe1736f0 Author: Matt Carlson Date: Mon Apr 25 12:42:45 2011 +0000 tg3: Fix int generation hw bug for 5719 / 5720 On the 5719 and 5720, there is a bug where the hardware will misinterpret a status tag update and leave interrupts permanently disabled. This patch enables a hardware fix that works around the issue. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 470078312515f12e7cd916f1bd002acad313b9c8 Author: Matt Carlson Date: Wed Apr 20 07:57:43 2011 +0000 tg3: Add additional EEE messaging This patch adds link messages and an item to the sign-on banner to make EEE status more visible. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 1d36ba450bf8c88eda57deb028370880d09a14bc Author: Matt Carlson Date: Wed Apr 20 07:57:42 2011 +0000 tg3: Add macro for SMDSP toggling A common AUX CTRL operation in the driver is to enable and disable the SMDSP. This patch consolidates the code so that the details of the operation are in one place. This patch also adds code to make sure the SMDSP is enabled before executing code that relies on it. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b4bd292933537e19107c3e151b27a15fefa5f8d0 Author: Matt Carlson Date: Wed Apr 20 07:57:41 2011 +0000 tg3: Add write accessor for AUX CTRL phy reg This patch adds a write accessor for the aux ctrl phy register. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 15ee95c36d355a9f47746eaa4ae8cc0ecafec550 Author: Matt Carlson Date: Wed Apr 20 07:57:40 2011 +0000 tg3: Add read accessor for AUX CTRL phy reg This patch adds a read accessor for the aux ctrl register. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b0988c15c12c40b9680730f55a8351f30ec7a564 Author: Matt Carlson Date: Wed Apr 20 07:57:39 2011 +0000 tg3: Move phy accessor functions higher Phy accessor functions should live closer to where the base phy read / write routines are. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 34eea5ac214353ccd93ef7dd8dbd10aed87f5f46 Author: Matt Carlson Date: Wed Apr 20 07:57:38 2011 +0000 tg3: Only allow phy ioctls while netif_running When tg3 was new, phy accesses through ioctl were allowable at any time. Then, the driver started shutting down the phy when the device was closed. Phy accesses would be allowed when the driver first attached to the device, but then would be forbidden after the device had been up'd and down'd. After that, management firmware made it illegal to access the phy unless the driver "owned" the device. Now that most firmware is being moved over to the APE, it is less clear when phy accesses are safe. While it is possible to attempt to identify these conditions and code the driver to navigate through the pitfalls, it could be perplexing to the admin why phy accesses work in some cases and not others. This patch brings some uniformity to the problem by only allowing phy accesses while the driver has control of the device. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4a85f09831329bc5a5e4b9bca3f3ecbffb78f858 Author: Matt Carlson Date: Wed Apr 20 07:57:37 2011 +0000 tg3: Nullify RSS for loopback test The loopback test assumes all traffic goes to the first rx queue. There is a 1 in 4 chance this won't be true if RSS is enabled though. This patch reprograms the RSS indirection table to route all rx packets to the first queue. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit eb07a9408e05f67caa671bdf2a509a4d2bd05abf Author: Matt Carlson Date: Wed Apr 20 07:57:36 2011 +0000 tg3: Adjust rx prod ring bd replenish thresholds The oldest tg3 devices had large rx producer ring BD caches. Back then, it made sense to make the BD cache replenish threshold only a function of the number of rx buffers posted by the driver. Since then, the BD cache sizes have shrunk to 25% of their original size and, in some cases, the ring sizes have quadrupled in size. Under such conditions, static BD cache replenish thresholds no longer match the hardware constraints. This patch attempts to factor in the BD cache size into the bd cache replenish strategy, taking the existing hardware bugs into account. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4d95847381228639844c7197deb8b2211274ef22 Author: Matt Carlson Date: Wed Apr 20 07:57:35 2011 +0000 tg3: Workaround rx_discards stat bug The 5717, 5718, 5719 A0, and 5720 A0 has a bug where the rx_discards statistic counter will increment when dropping unwanted multicast frames. This patch works around the problem by attempting to recreate the data using other means. The resulting value will not be accurate, but it can still serve as a problem indicator. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fce55922f5299a04c0a56b170a141fab34f13465 Author: Allan, Bruce W Date: Wed Apr 13 13:09:10 2011 +0000 ethtool: allow custom interval for physical identification When physical identification of an adapter is done by toggling the mechanism on and off through software utilizing the set_phys_id operation, it is done with a fixed duration for both on and off states. Some drivers may want to set a custom duration for the on/off intervals. This patch changes the API so the return code from the driver's entry point when it is called with ETHTOOL_ID_ACTIVE can specify the frequency at which to cycle the on/off states, and updates the drivers that have already been converted to use the new set_phys_id and use the synchronous method for identifying an adapter. The physical identification frequency set in the updated drivers is based on how it was done prior to the introduction of set_phys_id. Compile tested only. Also fixes a compiler warning in sfc. v2: drivers do not return -EINVAL for ETHOOL_ID_ACTIVE v3: fold patchset into single patch and cleanup per Ben's feedback Signed-off-by: Bruce Allan Cc: Ben Hutchings Cc: Sathya Perla Cc: Subbu Seetharaman Cc: Ajit Khaparde Cc: Michael Chan Cc: Eilon Greenstein Cc: Divy Le Ray Cc: Don Fry Cc: Jon Mason Cc: Solarflare linux maintainers Cc: Steve Hodgson Cc: Stephen Hemminger Cc: Matt Carlson Acked-by: Jon Mason Acked-by: Ben Hutchings Signed-off-by: David S. Miller commit c3e945006ab2295e9a3f4327aa74a502ad123fe6 Author: Matt Carlson Date: Wed Apr 13 11:05:08 2011 +0000 tg3: Add support for extended VPD blocks In some devices, the VPD block is relocated to a different area in NVRAM. The original location can still contain old, but still valid VPD data. This patch changes the code to look for an extended VPD block in NVRAM. If one is found, that block is used for all VPD operations instead. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 4852a8614f63999e38539ad16615054dcd20a05d Author: Matt Carlson Date: Wed Apr 13 11:05:07 2011 +0000 tg3: Add jumbo frame loopback tests to selftest This patch adds jumbo frame loopback test support to the ethtool selftest. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 48fa55a0a5e20b9e2a28a72c66c7027678cae6bb Author: Matt Carlson Date: Wed Apr 13 11:05:06 2011 +0000 tg3: Automatically size stat/test string arrays This patch reimplements the size preprocessor constants of the stats and ethtool test string arrays. The size is calculated at compile time rather than using static constants. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit e64de4e6c660dae6d6370b3acb59d5d5cc9ecf20 Author: Matt Carlson Date: Wed Apr 13 11:05:05 2011 +0000 tg3: Dump registers when status block shows errors This patch monitors the error bit of the status word within the status block. If it is set, the driver will dump the driver state after validating the error and then reset the chip. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 97bd8e491d1786f0020372a5a470bb8b3184856f Author: Matt Carlson Date: Wed Apr 13 11:05:04 2011 +0000 tg3: Provide full regdump on tx timeout The current amount of information provided in the output of a tx timeout is insufficient to determine a root cause. This patch replaces the terse, four-register status output with a more complete body of information. For PCIe devices, the full register space is dumped. For other devices, select registers are dumped instead. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 1c01a80cfec6f806246f31ff2680cd3639b30e67 Merge: c44d799 4a9f65f Author: David S. Miller Date: Mon Apr 11 13:44:25 2011 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/smsc911x.c commit dc668910f4eaa233c241d43d96ed6b0b9258cc43 Author: Michał Mirosław Date: Thu Apr 7 03:35:07 2011 +0000 net: tg3: convert to hw_features Cleanup hint: Some features are calculated in tg3_get_invariants() and the rest in its caller --- tg3_init_one(). This is not changed here. Signed-off-by: Michał Mirosław Acked-by: Matt Carlson Signed-off-by: David S. Miller commit 81b8709c25e8c8f56224a24d860de7b77a772e83 Author: stephen hemminger Date: Mon Apr 4 08:43:50 2011 +0000 tg3: implement ethtool set_phys_id Implement control of LED via set_phys_id. Note: since PHY is powered off if device is down, this board only allows blinking if device is up. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 66ee33bfda6237b009b6fb0e48690e31800ff334 Author: Matt Carlson Date: Tue Apr 5 14:22:51 2011 +0000 tg3: Support 4mb flash sizes for 5717 and 5719 If a 5717 or 5719 NVRAM part is manually strapped and is 2mb in size, the driver needs to look at the NVRAM size field rather than infer it from the strapping itself. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit ba1f3c76d7607a0af58834b79a055326619cbf2a Author: Matt Carlson Date: Tue Apr 5 14:22:50 2011 +0000 tg3: Enable 5720 support This patch adds the 5720 device ID to the PCI table, thus enabling 5720 support. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 6418f2c1b57f9a5d4e7380f698635e5a445c2a50 Author: Matt Carlson Date: Tue Apr 5 14:22:49 2011 +0000 tg3: Add 5720 PHY ID This patch adds the 5720 PHY ID. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f2096f94b514d88593355995d5dd276961e88af1 Author: Matt Carlson Date: Tue Apr 5 14:22:48 2011 +0000 tg3: Add 5720 H2BMC support This patch adds support for the new Host to BMC feature. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 9b91b5f178605dd0d4debcbc184a3e97fcb4f591 Author: Matt Carlson Date: Tue Apr 5 14:22:47 2011 +0000 tg3: Add 5720 NVRAM decoding The 5720 implements its own NVRAM pin strapping scheme. This patch adds the required support. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d78b59f5d18bf064abae2fa5bc87f00545e2160a Author: Matt Carlson Date: Tue Apr 5 14:22:46 2011 +0000 tg3: Add 5720 ASIC rev This patch adds support for the 5720 ASIC rev. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 0a58d6689bb7c0d49addbf6992aa97234bcfc96c Author: Matt Carlson Date: Tue Apr 5 14:22:45 2011 +0000 tg3: Reintroduce 5717_PLUS This patch reintroduces the TG3_FLG3_5717_PLUS to identify 5717 and later devices. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 1407deb1a99f7ec7ed5b09798b02abea5aa44128 Author: Matt Carlson Date: Tue Apr 5 14:22:44 2011 +0000 tg3: 5717_PLUS => 57765_PLUS The 57765 arrived before the 5717 and has a subset of the features supported by the 5717. This patch renames the 5717_PLUS flag so that it can be reintroduced to designate only 5717 and later devices. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit de9f52300d03915846c2baab27332ec462f7f6b0 Author: Matt Carlson Date: Tue Apr 5 14:22:43 2011 +0000 tg3: Cleanup extended rx ring size code Hardcoded values are used in multiple places to describe the maximum rx ring sizes. This patch replaces those values with preprocessor constants. This patch also introduces a new TG3_FLG3_LRG_PROD_RING_CAP to determine if the device is capable of supporting larger ring sizes. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 25985edcedea6396277003854657b5f3cb31a628 Author: Lucas De Marchi Date: Wed Mar 30 22:57:33 2011 -0300 Fix common misspellings Fixes generated by 'codespell' and manually reviewed. Signed-off-by: Lucas De Marchi commit ab392d2d6d4e2e50502985eead545b44ee58802c Author: Javier Martinez Canillas Date: Mon Mar 28 16:27:31 2011 +0000 drivers/net: Remove IRQF_SAMPLE_RANDOM flag from network drivers The IRQF_SAMPLE_RANDOM flag is marked as deprecated and will be removed. Every input point to the kernel's entropy pool have to better document the type of entropy source it is. drivers/char/random.c now implements a set of interfaces that can be used for devices to collect enviromental noise. IRQF_SAMPLE_RANDOM will be replaced with these add_*_randomness exported functions. Network drivers are not a good source of entropy. They use as a source of entropy essentially a remote host. Which means that the source of entropy can be potentially controlled by an attacker. Also, with heavy workloads the entropy decreases due to less hardware interrupts happening thanks to irq mitigation and NAPI. If a system relies in its network interface as a entropy source it has a false sense of security. Systems that don't have devices whose drivers are good sources of entropy, should either use a hardware random number generator or feed the kernel's entropy pool from userspace using other sources of entropy such as EGD, video_entropyd, timer_entropyd and audio-entropyd. Signed-off-by: Javier Martinez Canillas Signed-off-by: David S. Miller commit 6303e6e8da770e62a4d38f7206fe046514276d14 Author: Javier Martinez Canillas Date: Sat Mar 26 16:42:33 2011 +0000 tg3: Fix inline keyword usage The correct usage is "static inline void" not "static void inline". Signed-off-by: Javier Martinez Canillas Signed-off-by: David S. Miller commit 27fd9de8eb9bf48e4a09c8f02d13f56e9a074a1e Author: Javier Martinez Canillas Date: Sat Mar 26 16:42:31 2011 +0000 tg3: use and instead and It is proper style to include linux/foo.h instead asm/foo.h if both exist Signed-off-by: Javier Martinez Canillas Signed-off-by: David S. Miller commit c5908939b2738bafe1b309bc2465cb9f2e6184c5 Author: Matt Carlson Date: Wed Mar 9 16:58:25 2011 +0000 tg3: Remove 5750 PCI code The 5750 ASIC rev was never released as a PCI device. It only exists as a PCIe device. This patch removes the code that supports the former configuration. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit e256f8a35179f3795a200912b79c369676ecb669 Author: Matt Carlson Date: Wed Mar 9 16:58:24 2011 +0000 tg3: Move tg3_init_link_config to tg3_phy_probe This patch moves the function that initializes the link configuration closer to the place where the rest of the phy code is initialized. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 683644b74783725971e5ff61618bd932c5361c3f Author: Matt Carlson Date: Wed Mar 9 16:58:23 2011 +0000 tg3: Refine VAux decision process In the near future, the VAux switching decision process is going to get more complicated. This patch refines and consolidates the existing algorithm in anticipation of the new scheme. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4143470c10ab5c2bbd0522efe92935416332c5e8 Author: Matt Carlson Date: Wed Mar 9 16:58:22 2011 +0000 tg3: cleanup pci device table vars Commit 895950c2a6565d9eefda4a38b00fa28537e39fcb, entitled "tg3: Use DEFINE_PCI_DEVICE_TABLE" moved two pci device tables into the global address space, but didn't declare them static and didn't prefix them with "tg3_". This patch fixes those problems. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d4894f3ea7375dd9492b5d3d2ecb0b6e4bdb604e Author: Matt Carlson Date: Wed Mar 9 16:58:21 2011 +0000 tg3: Add code to verify RODATA checksum of VPD This patch adds code to verify the checksum stored in the "RV" info keyword of the RODATA VPD section. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 01c3a3920f9f78866420b2004602944fca45083a Author: Matt Carlson Date: Wed Mar 9 16:58:20 2011 +0000 tg3: Fix NVRAM selftest The tg3 NVRAM selftest actually fails when validating the checksum of the legacy NVRAM format. However, the test still reported success because the last update of the return code was a success from the NVRAM reads. This patch fixes the code so that the error return code defaults to a failure status. Then the patch fixes the reason why the checsum validation failed. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit bb18bb942a31411954021ad036ca7bace642c3c0 Author: Matt Carlson Date: Wed Mar 9 16:58:19 2011 +0000 tg3: Add missed 5719 workaround change Commit 2866d956fe0ad8fc8d8a7c54104ccc879b49406d, entitled "tg3: Expand 5719 workaround" extended a 5719 A0 workaround to all revisions of the chip. There was a change that should have been a part of that patch that was missed. This patch adds the missing piece. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 43067ed8aecac4410a0a629e504629ebece35206 Author: Rafael J. Wysocki Date: Thu Feb 10 06:53:09 2011 +0000 tg3: Avoid setting power.can_wakeup for devices that cannot wake up The tg3 driver uses device_init_wakeup() in such a way that the device's power.can_wakeup flag may be set even though the PCI subsystem cleared it before, in which case the device cannot wake up the system from sleep states. Modify the driver to only change the power.can_wakeup flag if the device is not capable of generating wakeup signals. Signed-off-by: Rafael J. Wysocki Acked-by: Matt Carlson Signed-off-by: David S. Miller commit 2866d956fe0ad8fc8d8a7c54104ccc879b49406d Author: Matt Carlson Date: Thu Feb 10 20:06:46 2011 -0800 tg3: Expand 5719 workaround As a precautionary measure, expand the fix submitted in commit 4d163b75e979833979cc401ae433cb1d7743d57e entitled "tg3: Fix 5719 A0 tx completion bug" to apply to all 5719 revisions. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit b86fb2cfe82fc4a555f0841f5f8ca4db303ed092 Author: Matt Carlson Date: Tue Jan 25 15:58:57 2011 +0000 tg3: Update copyrights and update version to 3.117 This patch updates copyrights and updates the tg3 version to 3.117. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d7f2ab20432441c7d4e41cd1745aafc17d712672 Author: Matt Carlson Date: Tue Jan 25 15:58:56 2011 +0000 tg3: Fix eee preprocessor naming This patch fixes a preprocessor naming bug for one of the EEE registers. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 21a00ab270f95d32e502d92f166dd75c518d3c5f Author: Matt Carlson Date: Tue Jan 25 15:58:55 2011 +0000 tg3: Fix EEE interoperability issue This patch fixes a problem where EEE will fail to work in certain environments. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit ab78904608bd6e421b81420e4d2f7d5bae9d4660 Author: Matt Carlson Date: Tue Jan 25 15:58:54 2011 +0000 tg3: Disable EEE during loopback tests EEE interferes with the hardware's ability to loop a packet back to the host. This patch disables the feature for the duration of the test. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit aba49f2421d5287692aee961ab4ce2981fdf4939 Author: Matt Carlson Date: Tue Jan 25 15:58:53 2011 +0000 tg3: Disable MAC loopback test for CPMU devices On CPMU devices, the MAC loopback test does not test any important paths the phy loopback test doesn't also test. The phy loopback test is the more comprehensive test. This patch disables the MAC loopback test for these devices. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 49692ca1e686970bac5726c3fd925427bb3ae89d Author: Matt Carlson Date: Tue Jan 25 15:58:52 2011 +0000 tg3: Fix loopback tests The half-duplex bit in the MAC MODE register will be set during the loopback test if the external link is in half-duplex mode. This will cause the loopback test to fail on newer devices. This patch turns the half-duplex bit off for the test. Also, newer devices fail the internal phy loopback test because the phy link takes a little while to come up. This patch adds code to wait for the link before proceeding with the test. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f746a3136a61ae535c5d0b49a9418fa21edc61b5 Author: Matt Carlson Date: Tue Jan 25 15:58:51 2011 +0000 tg3: Restrict phy ioctl access If management firmware is present and the device is down, the firmware will assume control of the phy. If a phy access were allowed from the host, it will collide with firmware phy accesses, resulting in unpredictable behavior. This patch fixes the problem by disallowing phy accesses during the problematic condition. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 0583d52114b19ea06d03dd2cf762a7737c265400 Author: Matt Carlson Date: Tue Jan 25 15:58:50 2011 +0000 tg3: Disable multivec mode for 1 MSIX vector For single vector MSI-X allocations, we do not want to enable multivector modes. This patch makes the necessary corrections. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit bf933c802763b2beb1a1d4977f00af1a78c4fb70 Author: Matt Carlson Date: Tue Jan 25 15:58:49 2011 +0000 tg3: Use new VLAN code This patch pivots the tg3 driver to the new VLAN infrastructure. All references to vlgrp have been removed. The driver still attempts to disable VLAN tag stripping if CONFIG_VLAN_8021Q or CONFIG_VLAN_8021Q_MODULE is not defined. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4d163b75e979833979cc401ae433cb1d7743d57e Author: Matt Carlson Date: Tue Jan 25 15:58:48 2011 +0000 tg3: Fix 5719 A0 tx completion bug The 5719 A0 has a bug that manifests itself as if the chipset were reordering memory writes. The best known way to solve this problem is to turn off LSO and jumbo frames. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b4495ed88b782febddfa5bb99c87d75724520ecf Author: Matt Carlson Date: Tue Jan 25 15:58:47 2011 +0000 tg3: Revise 5719 internal FIFO overflow solution Commit cf79003d598b1f82a4caa0564107283b4f560e14, entitled "tg3: Fix 5719 internal FIFO overflow problem", proposed a way to solve an internal FIFO overflow problem. We have since discovered a slightly better way to solve the problem. This patch changes the code so that the problem is contained closer to the problem source. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit dbbe68bb12b34f3e450da7a73c20e6fa1f85d63a Merge: 7b26e5e 9fc3bbb Author: David S. Miller Date: Tue Jan 4 11:57:25 2011 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 commit aa6027cacdd912ce884953714fcc7392b6155bc6 Author: Eric Dumazet Date: Sat Jan 1 05:22:46 2011 +0000 tg3: fix warnings In case CONFIG_PM_SLEEP is disabled, we dont need tg3_suspend() and tg3_resume(). drivers/net/tg3.c:15056: warning: ‘tg3_suspend’ defined but not used drivers/net/tg3.c:15110: warning: ‘tg3_resume’ defined but not used Signed-off-by: Eric Dumazet Cc: Rafael J. Wysocki Cc: Michael Chan Cc: Matt Carlson Signed-off-by: David S. Miller commit 824f5f38d3005c346a043dedcfe8b048b699b81a Author: David Sterba Date: Wed Dec 29 03:40:31 2010 +0000 tg3: fix return value check in tg3_read_vpd() Besides -ETIMEDOUT and -EINTR, pci_read_vpd may return other error values like -ENODEV or -EINVAL which are ignored due to the buggy check, but the data are not read from VPD anyway and this is checked subsequently with at most 3 needless loop iterations. This does not show up as a runtime bug. CC: Matt Carlson CC: Michael Chan Signed-off-by: David Sterba Signed-off-by: David S. Miller commit c866b7eac073198cef03ea6bac2dc978635a9f5c Author: Rafael J. Wysocki Date: Sat Dec 25 12:56:23 2010 +0000 tg3: Do not use legacy PCI power management The tg3 driver uses the legacy PCI power management, so it has to do some PCI-specific things in its ->suspend() and ->resume() callbacks, which isn't necessary and should better be done by the PCI sybsystem-level power management code. Convert tg3 to the new PCI power management framework and make it let the PCI subsystem take care of all the PCI-specific aspects of device handling during system power transitions. Tested on HP nx6325 with a NetXtreme BCM5788 adapter. Signed-off-by: Rafael J. Wysocki Signed-off-by: David S. Miller commit 895950c2a6565d9eefda4a38b00fa28537e39fcb Author: Joe Perches Date: Tue Dec 21 02:16:08 2010 -0800 tg3: Use DEFINE_PCI_DEVICE_TABLE Moves the PCI tables to the right read-only section. Signed-off-by: Joe Perches commit 23f333a2bfafba80339315b724808982a9de57d9 Author: Tejun Heo Date: Sun Dec 12 16:45:14 2010 +0100 drivers/net: don't use flush_scheduled_work() flush_scheduled_work() is on its way out. This patch contains simple conversions to replace flush_scheduled_work() usage with direct cancels and flushes. Directly cancel the used works on driver detach and flush them in other cases. The conversions are mostly straight forward and the only dangers are, * Forgetting to cancel/flush one or more used works. * Cancelling when a work should be flushed (ie. the work must be executed once scheduled whether the driver is detaching or not). I've gone over the changes multiple times but it would be much appreciated if you can review with the above points in mind. Signed-off-by: Tejun Heo Cc: "David S. Miller" Cc: Jay Cliburn Cc: Michael Chan Cc: Divy Le Ray Cc: e1000-devel@lists.sourceforge.net Cc: Vasanthy Kolluri Cc: Samuel Ortiz Cc: Lennert Buytenhek Cc: Andrew Gallatin Cc: Francois Romieu Cc: Ramkrishna Vepa Cc: Matt Carlson Cc: David Brownell Cc: Shreyas Bhatewara Cc: netdev@vger.kernel.org commit 5ee493767352314893520ac40aec5bb07d0147e0 Author: Matt Carlson Date: Mon Dec 6 08:28:54 2010 +0000 tg3: Update version to 3.116 This patch updates the tg3 version to 3.116. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit a386b9011a4687470e6168e2f2a08c468f25f72f Author: Matt Carlson Date: Mon Dec 6 08:28:53 2010 +0000 tg3: Relax EEE thresholds The hardware defaults to fairly aggressive EEE thresholds. While there appear to be no ill effects, this patch relaxes them, just as a precaution. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit a6b68dab169e2a51e59f43504f1279cbc2afcde8 Author: Matt Carlson Date: Mon Dec 6 08:28:52 2010 +0000 tg3: Minor EEE code tweaks The first hunk of this patch makes sure that the driver checks for the appropriate preconditions before checking if EEE negotiation succeeded. More specifically the link needs to be full duplex for EEE to be enabled. The second and third hunks of this patch fix a bug where the eee advertisement register would be programmed with extra bits set. The fourth hunk of this patch makes sure the EEE capability flag is not set for 5718 A0 devices and that the device is not a serdes device. None of these modifications are strictly necessary. The driver / hardware still does the right thing. They are submitted primarily for correctness. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 699c019385fcb13498a5a3a8bd368f04f1d4a223 Author: Matt Carlson Date: Mon Dec 6 08:28:51 2010 +0000 tg3: Fix 57765 EEE support EEE support in the 57765 internal phy will not enable after a phy reset unless it sees that EEE is supported in the MAC. This patch moves the code that programs the CPMU EEE registers to a place before the phy reset. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 3110f5f5545a645c50ef66b1f705d08dfd1df404 Author: Matt Carlson Date: Mon Dec 6 08:28:50 2010 +0000 tg3: Move EEE definitions into mdio.h In commit 52b02d04c801fff51ca49ad033210846d1713253 entitled "tg3: Add EEE support", Ben Hutchings had commented that the EEE advertisement register will be in a standard location. This patch moves that definition into mdio.h and changes the code to use it. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 8fc2f9956127d2b85280c07e69aeb08b9bd85150 Author: Matt Carlson Date: Mon Dec 6 08:28:49 2010 +0000 tg3: Raise the jumbo frame BD flag threshold The current transmit routines set the jumbo frame BD flag too aggressively. This can reduce performance for common cases. This patch raises the jumbo flag threshold to 1518, up from 1500. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 2e1e3291d4727e14c8f0f48df561afb1a5c26ffe Author: Matt Carlson Date: Wed Nov 24 08:31:53 2010 +0000 tg3: Enable phy APD for 5717 and later asic revs This patch enables the gphy autopowerdown feature in the phy for all new devices that support it. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4bae65c892b4ff9a2797cbfa8526a5f9aaf1b2ed Author: Matt Carlson Date: Wed Nov 24 08:31:52 2010 +0000 tg3: use dma_alloc_coherent() instead of pci_alloc_consistent() Using dma_alloc_coherent() permits to use GFP_KERNEL allocations instead of GFP_ATOMIC ones. Its better when a machine is out of memory, because this allows driver to sleep to get its memory and succeed its init, especially when allocating high order pages. Signed-off-by: Eric Dumazet Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b92b9040f6e4997b895b7b9c655a158354d28964 Author: Matt Carlson Date: Wed Nov 24 08:31:51 2010 +0000 tg3: Reenable TSS for 5719 All TSS bugs have been fixed in the 5719. This patch reenables the feature. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit deabaac8beeccdfee5358c0cd4c63258f28f3a74 Author: Matt Carlson Date: Wed Nov 24 08:31:50 2010 +0000 tg3: Enable mult rd DMA engine on 5719 The multiple DMA read engine bugs have been fixed on the 5719. This patch reenables support for this feature. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit cf79003d598b1f82a4caa0564107283b4f560e14 Author: Matt Carlson Date: Wed Nov 24 08:31:48 2010 +0000 tg3: Fix 5719 internal FIFO overflow problem Under load, there an internal FIFO can overflow on the 5719. The fix is to scale back the PCIe maximum read request size based on the current link speed and width. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d2394e6bb1aa636f3bd142cb6f7845a4332514b5 Author: Matt Carlson Date: Wed Nov 24 08:31:47 2010 +0000 tg3: Always turn on APE features in mac_mode reg The APE needs certain bits in the mac_mode register to be enabled for traffic to flow correctly. This patch changes the code to always enable these bits in the presence of the APE. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b75cc0e4c1caac63941d96a73b2214e8007b934b Author: Matt Carlson Date: Wed Nov 24 08:31:46 2010 +0000 tg3: Assign correct tx margin for 5719 Commit d309a46e42542223946d3a9e4e239fdc945cb53e, entitled "tg3: 5719: Prevent tx data corruption", was supposed to contain the tx margin adjustment but it looks like it somehow was omitted. This patch fixes the problem. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5093eedc8bdfd7d906836a44a248f66a99e27d22 Author: Matt Carlson Date: Wed Nov 24 08:31:45 2010 +0000 tg3: Apply 10Mbps fix to all 57765 revisions Commit a977dbe8445b8a81d6127c4aa9112a2c29a1a008, entitled "tg3: Reduce 57765 core clock when link at 10Mbps" needs to be applied to all revisions of the 57765 asic rev, not just the A0 revision. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f2dc0d1809ab7e0147c7e4ac837be1682f706538 Author: Rafael J. Wysocki Date: Mon Oct 25 13:01:55 2010 +0000 tg3: Do not call device_set_wakeup_enable() under spin_lock_bh The tg3 driver calls device_set_wakeup_enable() under spin_lock_bh, which causes a problem to happen after the recent core power management changes, because this function can sleep now. Fix this by moving the device_set_wakeup_enable() call out of the spin_lock_bh-protected area. Reported-by: Maxim Levitsky Signed-off-by: Rafael J. Wysocki Signed-off-by: David S. Miller commit 2198a10b501fd4443430cb17e065a9e859cc58c9 Merge: 9941fb6 db5a753 Author: David S. Miller Date: Thu Oct 21 08:43:05 2010 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: net/core/dev.c commit eab6d18d20fc5b5ba04a7e7fcd6f357197870e51 Author: Jesse Gross Date: Wed Oct 20 13:56:03 2010 +0000 vlan: Don't check for vlan group before vlan_tx_tag_present. Many (but not all) drivers check to see whether there is a vlan group configured before using a tag stored in the skb. There's not much point in this check since it just throws away data that should only be present in the expected circumstances. However, it will soon be legal and expected to get a vlan tag when no vlan group is configured, so remove this check from all drivers to avoid dropping the tags. Signed-off-by: Jesse Gross Signed-off-by: David S. Miller commit 7c1a96a9966efc2eb33d1021569c5ef6ae6f5ecb Author: Matt Carlson Date: Thu Oct 14 10:37:45 2010 +0000 tg3: Update version to 3.115 This patch updates the tg3 version to 3.115. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 64c2218266996b562a8e940a95a887fc432daced Author: Matt Carlson Date: Thu Oct 14 10:37:44 2010 +0000 tg3: Report invalid link from tg3_get_settings() Currently the tg3 driver leaves the speed and duplex fields uninitialized in tg3_get_settings() if the device is not up. This can lead to some strange deductions in certain versions of ethtool. When the device is up and the link is down, the driver reports SPEED_INVALID and DUPLEX_INVALID for these fields. This patch makes the presentation consistent by returning SPEED_INVALID and DUPLEX_INVALID when the device has not been brought up as well. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4803572815feea2dca9485a343a8556c9037e36e Author: Matt Carlson Date: Thu Oct 14 10:37:43 2010 +0000 tg3: Don't allocate jumbo ring for 5780 class devs The 5714, 5715, and 5780 devices do not have a separate rx jumbo producer ring. This patch changes the code so that resources are not allocated for it. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f94e290eba2f98e8f759d273d9d04e8487fb4b6b Author: Matt Carlson Date: Thu Oct 14 10:37:42 2010 +0000 tg3: Cleanup tg3_alloc_rx_skb() src_map is no longer used in tg3_alloc_rx_skb(). Remove it. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 52b02d04c801fff51ca49ad033210846d1713253 Author: Matt Carlson Date: Thu Oct 14 10:37:41 2010 +0000 tg3: Add EEE support This patch adds Energy Efficient Ethernet (EEE) support for the 5718 device ID and the 57765 B0 asic revision. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit ddfc87bfd16f370904c6ff7d23738335dd68d0ce Author: Matt Carlson Date: Thu Oct 14 10:37:40 2010 +0000 tg3: Add clause 45 register accessor methods This patch adds clause 45 register access methods. They will be used in the following patch. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 3d37728bc55994fdf2888f6c872bdeea03a84cc2 Author: Matt Carlson Date: Thu Oct 14 10:37:39 2010 +0000 tg3: Disable unused transmit rings This patch allows the driver to disable the additional transmit rings available on the 5717 and 5719 devices. This is not strictly necessary, but is done anyways for correctness. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit bba226acf4d13586ce47cf8376db33bed7bc0bd6 Author: Matt Carlson Date: Thu Oct 14 10:37:38 2010 +0000 tg3: Add support for selfboot format 1 v6 5718 B0 and 5719 devices will use a new selfboot firmware format. This patch adds code to detect the new format so that bootcode versions get reported correctly. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b0057c51db66c5f0f38059f242c57d61c4741d89 Author: Eric Dumazet Date: Sun Oct 10 19:55:52 2010 +0000 tg3: restore rx_dropped accounting commit 511d22247be7 (tg3: 64 bit stats on all arches), overlooked the rx_dropped accounting. We use a full "struct rtnl_link_stats64" to hold rx_dropped value, but forgot to report it in tg3_get_stats64(). Use an "unsigned long" instead to shrink "struct tg3" by 176 bytes, and report this value to stats readers. Increment rx_dropped counter for oversized frames. Signed-off-by: Eric Dumazet CC: Michael Chan CC: Matt Carlson Acked-by: Matt Carlson Signed-off-by: David S. Miller commit 2259dca36a2f0226596ea37132a46338fcff6722 Author: Nicolas Kaiser Date: Thu Oct 7 23:29:27 2010 +0000 net/tg3: simplify conditional Simplify: ((a && !b) || (!a && b)) => (a != b) Signed-off-by: Nicolas Kaiser Signed-off-by: David S. Miller commit 85407885d5d8e9eed9be8e4d33c519646b90d09f Author: Matt Carlson Date: Wed Oct 6 13:40:58 2010 -0700 [PATCH net-next] tg3: Set real_num_rx_queues for non-multiq devs Commit 2ddaad397c47de012dfb956b0c05540da1a0dde5 entitled "tg3: Use netif_set_real_num_{rx,tx}_queues()" added a new call to netif_set_real_num_rx_queues in tg3_enable_msix(). This call also needs to be added to the legacy path to correctly reflect the actual number of rx queues. Signed-off-by: Matt Carlson Acked-by: Eric Dumazet Signed-off-by: David S. Miller commit c7ebfdaca0b89fe9d846e93b249303313612d0e3 Author: Matt Carlson Date: Thu Sep 30 10:34:37 2010 +0000 tg3: Update version to 3.114 This patch updates the tg3 version to 3.114. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 7cb32cf23c63a371cf89bfaad3f911a1609241cc Author: Matt Carlson Date: Thu Sep 30 10:34:36 2010 +0000 tg3: Add extend rx ring sizes for 5717 and 5719 This patch increases the rx ring sizes for those asic revs that support them. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 2c49a44df33e22e1f48bd8d51781e7f38d55d002 Author: Matt Carlson Date: Thu Sep 30 10:34:35 2010 +0000 tg3: Prepare for larger rx ring sizes This patch adds two new variables to track the size of the standard and jumbo rx producer ring sizes. The code is then pivoted to these variables from preprocessor constants. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 1da85aa3db6878639e407548dad5b2404443e2c5 Author: Matt Carlson Date: Thu Sep 30 10:34:34 2010 +0000 tg3: Futureproof the loopback test There are other multiqueue modes 5717 and 5719 devices can assume. This patch makes sure that the loopback test is safe, should those other modes be enabled in the future. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 37a949c54857d8b2a38dbdc75bc8666c3292cbc4 Author: Matt Carlson Date: Thu Sep 30 10:34:33 2010 +0000 tg3: Cleanup missing VPD partno section This patch cleans up the default VPD partno section. New entries for 5717 asic rev devices were also added. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f51a8903f14512f5ce61a74657db7f84f16b2717 Author: Matt Carlson Date: Thu Sep 30 10:34:32 2010 +0000 tg3: Remove 5724 device ID This product was never released to the public. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d309a46e42542223946d3a9e4e239fdc945cb53e Author: Matt Carlson Date: Thu Sep 30 10:34:31 2010 +0000 tg3: 5719: Prevent tx data corruption This patch enables a bit that prevents read DMA overflows and adjusts the txmbuf margin from the hardware default. The combination of these modifications prevents a tx data corruption issue we were seeing on the 5719. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 66cfd1bd05a7a1c31c9cdbb2ddf5c57d1cddc5f6 Author: Matt Carlson Date: Thu Sep 30 10:34:30 2010 +0000 tg3: Fix potential netpoll crash Up until now the tg3 driver would call netif_napi_add() for the maximum number of NAPI instances the driver could use. The problem is that netpoll could call tg3_poll() on instances that are not active. The net effect is that the driver will crash attempting to dereference uninitialized pointers. The fix is to only allocate as many NAPI instances as the driver would use in tg3_open() and deleted them in tg3_close(). Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 2ddaad397c47de012dfb956b0c05540da1a0dde5 Author: Ben Hutchings Date: Mon Sep 27 22:11:51 2010 -0700 tg3: Use netif_set_real_num_{rx,tx}_queues() Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 807540baae406c84dcb9c1c8ef07a56d2d2ae84a Author: Eric Dumazet Date: Thu Sep 23 05:40:09 2010 +0000 drivers/net: return operator cleanup Change "return (EXPR);" to "return EXPR;" return is not a function, parentheses are not required. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit f833c4c181e4e948758b7b252322f50273100d30 Author: Matt Carlson Date: Wed Sep 15 09:00:01 2010 +0000 tg3: phy tmp variable roundup The tg3's phy routines define temporary variables in many locations within the same routine. This patch unifies all temporary variables into one location. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit a4a8bb15aed20ff74aa3ca14a4f2c0d62efd8391 Author: Matt Carlson Date: Wed Sep 15 09:00:00 2010 +0000 tg3: Dynamically allocate VPD data memory This patch eases stack pressure by dynamically allocating the memory used to temporarily store VPD data. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 02e96080af2b70313f2ffc8c1b03ae2f9d8c65ac Author: Matt Carlson Date: Wed Sep 15 08:59:59 2010 +0000 tg3: Use skb_is_gso_v6() This patch converts the driver to prefer the skb_is_gso_v6() helper over the explicit inlined version. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 8fea32b9555726d35b91492d17fc21c7874d36f9 Author: Matt Carlson Date: Wed Sep 15 08:59:58 2010 +0000 tg3: Move producer ring struct to tg3_napi Now that each NAPI instance has its own producer ring, it no longer makes sense to keep the producer ring structure external. This patch migrates the producer ring struct to tg3_napi and pivots the code to the new implementation. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 6fd45cb814709767a1704b541aa91647b7f275cf Author: Matt Carlson Date: Wed Sep 15 08:59:57 2010 +0000 tg3: Clarify semantics of TG3_IRQ_MAX_VECS TG3_IRQ_MAX_VECS should be seen as the maximum number of vectors that any device could be expected to use. tp->irq_max represents the maximum number of vectors the current device can use. This patch clarifies the semantics of the code to match the above description. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 2e9f7a7408d264f01d4477c564ef5c6b610cd10f Author: Matt Carlson Date: Wed Sep 15 08:59:56 2010 +0000 tg3: Unlock 5717 B0+ support This patch adjusts the driver to use the tg3_start_xmit_dma_bug() transmit routine for all revisions of 5717 asic rev devices and then allows the driver to attach to B0 and later devices. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit dc6d074457f1551f9357f773a4eda09a3d5ef150 Author: Matt Carlson Date: Wed Sep 15 08:59:55 2010 +0000 tg3: Don't send APE events for NCSI firmware NCSI firmware does not accept APE events. It relies on a "driver state" location in shared memory to tell it what the driver's current state is. This patch pivots the code to use the new driver state scheme. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f0392d24485e4c144d2741a5424f069b8b5f30e7 Author: Matt Carlson Date: Wed Sep 15 08:59:54 2010 +0000 tg3: Disable TSS It was recently discovered that enabling TSS can lockup the device. This patch disables the feature until a suitable workaround can be found. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 41a8a7ee4a78216962f3afcea5968c04d0ab3b08 Author: Matt Carlson Date: Wed Sep 15 08:59:53 2010 +0000 tg3: Fix read DMA FIFO overruns on recent devices Earlier versions of tg3 devices had a problem where the read DMA FIFO could be overrun in certain edge conditions. The fix was to limit the number of rx BDs the hardware would fetch at a time. For later devices (5761, 5784 and later ASIC revs), there is a hardware fix that must be enabled to fix the same problem. This patch adds that hardware fix. There is a gap in the ASIC revision lineage where neither fix is applied. This is intentional as these ASIC revisions are not afflicted by the bug. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit bc8acf2c8c3e43fcc192762a9f964b3e9a17748b Author: Eric Dumazet Date: Thu Sep 2 13:07:41 2010 -0700 drivers/net: avoid some skb->ip_summed initializations fresh skbs have ip_summed set to CHECKSUM_NONE (0) We can avoid setting again skb->ip_summed to CHECKSUM_NONE in drivers. Introduce skb_checksum_none_assert() helper so that we keep this assertion documented in driver sources. Change most occurrences of : skb->ip_summed = CHECKSUM_NONE; by : skb_checksum_none_assert(skb); Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 9ed6eda4fad9ea95e99f1e3cc546bcde049695cf Author: Matt Carlson Date: Mon Aug 2 11:26:08 2010 +0000 tg3: Update version to 3.113 This patch updates the tg3 version to 3.113. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f07e9af31e6e1bf2a499e1f52cbf0982619fa611 Author: Matt Carlson Date: Mon Aug 2 11:26:07 2010 +0000 tg3: Migrate tg3_flags to phy_flags This patch moves most of the phy related flag definitions over to the phyflags member and changes the code accordingly. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 80096068bc21420ba4d690341a3c70c49017d167 Author: Matt Carlson Date: Mon Aug 2 11:26:06 2010 +0000 tg3: Create phy_flags and migrate phy_is_low_power This patch deletes the link_config.phy_is_low_power flag and creates a new phy_flags device member to store all phy related settings. All the code is converted accordingly. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f08aa1a8b8ff0738d42936c3ac8c5516848bca02 Author: Matt Carlson Date: Mon Aug 2 11:26:05 2010 +0000 tg3: Add phy-related preprocessor constants This patch replaces some instances of hardcoded phy register values with preprocessor equivalents. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 6ee7c0a0a5003abd4afd724f5c2f654fe7328c0a Author: Matt Carlson Date: Mon Aug 2 11:26:04 2010 +0000 tg3: Add error reporting to tg3_phydsp_write() This patch adds error reporting to the tg3_phydsp_write() function and converts a few more locations to use this function over the inlined equivalent. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f65aac166fe10b96e64c233980a3522fc50fbecf Author: Matt Carlson Date: Mon Aug 2 11:26:03 2010 +0000 tg3: Improve small packet performance smp_mb() inside tg3_tx_avail() is used twice in the normal tg3_start_xmit() path (see illustration below). The full memory barrier is only necessary during race conditions with tx completion. We can speed up the tx path by replacing smp_mb() in tg3_tx_avail() with a compiler barrier. The compiler barrier is to force the compiler to fetch the tx_prod and tx_cons from memory. In the race condition between tg3_start_xmit() and tg3_tx(), we have the following situation: tg3_start_xmit() tg3_tx() if (!tg3_tx_avail()) BUG(); ... if (!tg3_tx_avail()) netif_tx_stop_queue(); update_tx_index(); smp_mb(); smp_mb(); if (tg3_tx_avail()) if (netif_tx_queue_stopped() && netif_tx_wake_queue(); tg3_tx_avail()) With smp_mb() removed from tg3_tx_avail(), we need to add smp_mb() to tg3_start_xmit() as shown above to properly order netif_tx_stop_queue() and tg3_tx_avail() to check the ring index. If it is not strictly ordered, the tx queue can be stopped forever. This improves performance by about 3% with 2 ports running bi-directional 64-byte packets. Reviewed-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 67b284d476bcb3d100e946da23d6cf9acfd0465c Author: Matt Carlson Date: Mon Aug 2 11:26:02 2010 +0000 tg3: Remove 5720, 5750, and 5750M These devices were never released to the public. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit ecc796486f0a7f4958f8dc7550267570dcacb608 Author: Matt Carlson Date: Mon Aug 2 11:26:01 2010 +0000 tg3: Detect APE firmware types This patch adds code to determine the APE firmware type and report this along with the firmware version. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 8c69b1e702527e39c0b4fbda79d2738d186a3908 Author: Matt Carlson Date: Mon Aug 2 11:26:00 2010 +0000 tg3: Restrict ASPM workaround devlist The ASPM workaround setting obtained from NVRAM only works with devices older than 5717. This patch enforces the restriction. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f37500d3f66ba82888315838278d56fc27308327 Author: Matt Carlson Date: Mon Aug 2 11:25:59 2010 +0000 tg3: Manage gphy power for CPMU-less devs only This patch changes the code to only manage the PCIe gphy power for CPMU-less devices only. The CPMU takes over management for newer chips. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 88075d915b51d9a17cc7436c868013a3113a849a Author: Matt Carlson Date: Mon Aug 2 11:25:58 2010 +0000 tg3: Don't access phy test ctrl reg for 5717+ The phy test register location has been repurposed for 5717+ devices. This patch changes the code to avoid this location for these devices. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit c885e824699f49bc3758a0dec760e189cd774e79 Author: Matt Carlson Date: Mon Aug 2 11:25:57 2010 +0000 tg3: Create TG3_FLG3_5717_PLUS flag This patch creates a TG3_FLG3_5717_PLUS flag to collectively describe the set of changes in the ASIC that will apply to all future chip revisions. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 774ee7525ff94e597844c9f7f6a48938906df698 Author: Matt Carlson Date: Mon Aug 2 11:25:56 2010 +0000 tg3: Disable TSS also during tg3_close() The TSS flag needs to be turned off during tg3_close(). If the device fails to allocate more than one MSI-X vector the next time the device is brought up, transmits will fail. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 6de34cb963a934953fdd365937b4b75959256602 Author: Matt Carlson Date: Mon Aug 2 11:25:55 2010 +0000 tg3: Add 5784 ASIC rev to earlier PCIe MPS fix tg3 commit e7126997342560533317d8467e8516119ebcbd21 entitled "tg3: Preserve PCIe MPS setting for new devs" attempted to ensure the PCIe link negotiated Maximum Payload Size (MPS) setting was 128 bytes for all devices that didn't support higher speeds. The 5784 device was mistakenly added to this list when it shouldn't have. This patch removes the 5784 ASIC rev devices from that list. Reviewed-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 28b041139e344ecd0f144d6205b004ae354cfa1e Author: Richard Cochran Date: Sat Jul 17 08:48:55 2010 +0000 net: preserve ifreq parameter when calling generic phy_mii_ioctl(). The phy_mii_ioctl() function unnecessarily throws away the original ifreq. We need access to the ifreq in order to support PHYs that can perform hardware time stamping. Two maverick drivers filter the ioctl commands passed to phy_mii_ioctl(). This is unnecessary since phylib will check the command in any case. Signed-off-by: Richard Cochran Signed-off-by: David S. Miller commit 98e32a9ceea8e3a0cd6ea89c9ce8e09a74b03b78 Author: Matt Carlson Date: Sun Jul 11 09:31:47 2010 +0000 tg3: Update version to 3.112 This patch updates the tg3 version to 3.112. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit be98da6a10f3e7f855f36f3fdd67a91366cabc1c Author: Matt Carlson Date: Sun Jul 11 09:31:46 2010 +0000 tg3: Fix some checkpatch errors This patch fixes the following checkpatch errors: ERROR: do not use assignment in if condition + if ((mss = skb_shinfo(skb)->gso_size) != 0) { ERROR: do not use assignment in if condition + if ((mss = skb_shinfo(skb)->gso_size) != 0) { ERROR: space prohibited after that '!' (ctx:BxW) + if (! netif_carrier_ok(tp->dev) && ^ ERROR: space required after that ',' (ctx:VxV) +#define GET_REG32_LOOP(base,len) \ ^ ERROR: "(foo*)" should be "(foo *)" + memcpy(data, ((char*)&val) + b_offset, b_count); ERROR: do not use assignment in if condition + if ((err = tg3_do_mem_test(tp, mem_tbl[i].offset, Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 702e52ccd32164a09ea91aa5896ad7c64cb708cb Author: Matt Carlson Date: Sun Jul 11 09:31:45 2010 +0000 tg3: Revert PCIe tx glitch fix This patch reverts commit 52cdf8526fe24f11d300b75458ddee017f3f4c88, entitled "tg3: Prevent a PCIe tx glitch". The problem does not have any visible side-effects and happens too early for the driver to do anything about it. The proper place for this code is within the device's bootcode. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 6867c843813a801d5f568b6fb006695316714f1b Author: Matt Carlson Date: Sun Jul 11 09:31:44 2010 +0000 tg3: Report driver version to firmware This patch changes the code so that the driver version can be reported to the firmware in addition to the current use. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 2138c002173abe3e439e213e5cc03b385b20508c Author: Matt Carlson Date: Sun Jul 11 09:31:43 2010 +0000 tg3: Relax 5717 serdes restriction tg3 is coded to refuse to attach to 5717 serdes devices. Now that the hardware is better supported, we can relax this restriction. This patch also fixes a recently introduced bug which will cause serdes parallel detection not to work with 5780 class devices. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 34195c3dce84fd0ee47f4131584ff1f6f283b93c Author: Matt Carlson Date: Sun Jul 11 09:31:42 2010 +0000 tg3: Fix IPv6 TSO code in tg3_start_xmit_dma_bug() The tg3_start_xmit_dma_bug() function was missing code to process IPv6 TSO packets. This patch adds the missing support. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 20d7375c1fdf054ca8ab9e5b9fe7fe62b39fa218 Author: Matt Carlson Date: Sun Jul 11 09:31:41 2010 +0000 tg3: Fix single MSI-X vector coalescing The interrupt coalescing setup code used the TG3_FLG2_USING_MSIX flag to determine whether or not to configure the rx coalescing parameters. This is incorrect for the single MSI-X vector case. This patch changes the code to look at the TG3_FLG3_ENABLE_RSS instead. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5efeeea1cf16b6382e1a9e2e389950024ba17f3e Author: Matt Carlson Date: Sun Jul 11 09:31:40 2010 +0000 tg3: Revert RSS indir tbl setup change This patch reverts commit 2601d8a0049c8b5d29cd5adb844a305a804e505f. A spectacular set of coincidences made it look as though the table was setup incorrectly. The original version was correct. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 7fe876af921d1d2bc8353e0062c10ff35e902653 Author: Eric Dumazet Date: Thu Jul 8 06:14:55 2010 +0000 tg3: allow TSO on vlan devices Similar to commit 72dccb01e8632aa (bnx2: Update vlan_features) In order to enable TSO on vlan devices, tg3 needs to update dev->vlan_features. Tested on HP NC326m (aka BCM5715S (rev a3)) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 511d22247be767bbf275ee7a5a388c4f009aa0c1 Author: Eric Dumazet Date: Wed Jul 7 20:44:24 2010 +0000 tg3: 64 bit stats on all arches Now core network is able to handle 64 bit netdevice stats on 32 bit arches, we can provide them for tg3, since hardware maintains 64 bit counters. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 83038a2a7062f6cbbdcfaff47284566f060a5af1 Author: Matt Carlson Date: Sat Jun 5 17:24:39 2010 +0000 tg3: Update version to 3.111 This patch updates the tg3 version to 3.111. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 302b500b27dda8e07b3cb967ff588de84ee87ba4 Author: Matt Carlson Date: Sat Jun 5 17:24:38 2010 +0000 tg3: Add 5719 PCI device and phy IDs This patch adds the 5719 PCI device and phy IDs. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a50d0796b09ad909a25fc75e54eec7f713edeba8 Author: Matt Carlson Date: Sat Jun 5 17:24:37 2010 +0000 tg3: Add 5719 ASIC rev This patch adds the 5719 ASIC revision. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9c7df9157889a8f67d2d104fd52f2aacb3826fe7 Author: Matt Carlson Date: Sat Jun 5 17:24:36 2010 +0000 tg3: Use devfn to determine function number The driver sometimes needs to know which function number the current device is. This patch changes the code to use devfn over internal register values. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 57d8b88030ca9f295bb72ef65228c6d86bed22f6 Author: Matt Carlson Date: Sat Jun 5 17:24:35 2010 +0000 tg3: 5717: Allow serdes link via parallel detect The 5717 serdes phy brings link up via parallel detection without any additional help from the driver. This patch changes the tg3_setup_fiber_mii_phy() function to detect and allow the use of this feature. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2430b031be8d3eb57f22f2df6fb3784564109db0 Author: Matt Carlson Date: Sat Jun 5 17:24:34 2010 +0000 tg3: Allow single MSI-X vector allocations This patch changes the code to make it legal to allocate only one MSI-X vector. It also fixes a bug where the driver was not checking for error return codes from pci_enable_msix(). Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2601d8a0049c8b5d29cd5adb844a305a804e505f Author: Matt Carlson Date: Sat Jun 5 17:24:33 2010 +0000 tg3: Off-by-one error in RSS setup The driver was incorrectly programming the indirection table such that rx traffic intended for the second ring went to the first ring, rx traffic intended for the third ring went to the second ring, etc. This patch changes the code so that rx traffic is diverted to the proper ring. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b28f6428af279ffb9e97ee00486a29498b7fcfdc Author: Matt Carlson Date: Sat Jun 5 17:24:32 2010 +0000 tg3: Fix a memory leak on 5717+ devices The rx resources for MSI-X interrupt vector 0 were not being freed correctly. This happens because the teardown loop continue's to the next loop iteration if it detects the tx ring for that vector is not setup, thus bypassing the rx teardown code. This patch moves the call to tg3_rx_prodring_free() earlier in the loop. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b1d0521059789a138d19c4f940d6eca7d620a6eb Author: Matt Carlson Date: Sat Jun 5 17:24:31 2010 +0000 tg3: Avoid tx lockups on 5755+ devices In certain edge conditions, internal tx resources can get corrupted. This patch enables a bit that will fix the problem. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f92d9dc1504a964acfe07e8036fa30dcef22d343 Author: Matt Carlson Date: Sat Jun 5 17:24:30 2010 +0000 tg3: Relocate APE mutex regs for 5717+ The 5717 and later devices relocate the APE mutex registers. This patch organizes the code so that the driver can use the mutex registers in the old and new locations. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e1703b36c358dde24ececba4fd609ecd91433ba3 Merge: 7ec75c5 e95ef5d Author: David S. Miller Date: Tue Apr 27 12:49:13 2010 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/e100.c drivers/net/e1000e/netdev.c commit dc8bf1b1a6edfc92465526de19772061302f0929 Author: Andre Detsch Date: Mon Apr 26 07:27:07 2010 +0000 tg3: Fix INTx fallback when MSI fails tg3: Fix INTx fallback when MSI fails MSI setup changes the value of irq_vec in struct tg3 *tp. This attribute must be taken into account and restored before we try to do a new request_irq for INTx fallback. In powerpc, the original code was leading to an EINVAL return within request_irq, because the driver was trying to use the disabled MSI virtual irq number instead of tp->pdev->irq. Signed-off-by: Andre Detsch Acked-by: Michael Chan Signed-off-by: David S. Miller commit cb903bf4ee2d6e53210e2174d363e10698112042 Author: David S. Miller Date: Tue Apr 20 18:49:45 2010 -0700 tg3: Enable GRO by default. This was merely an oversight when I added the *_gro_receive() calls. Signed-off-by: David S. Miller commit 4e5e4f0d65975ce092202cce48b42571bf84591e Author: FUJITA Tomonori Date: Mon Apr 12 14:32:09 2010 +0000 tg3: use the DMA state API instead of the pci equivalents This replace the PCI DMA state API (include/linux/pci-dma.h) with the DMA equivalents since the PCI DMA state API will be obsolete. No functional change. For further information about the background: http://marc.info/?l=linux-netdev&m=127037540020276&w=2 Signed-off-by: FUJITA Tomonori Cc: Matt Carlson Cc: Michael Chan Signed-off-by: David S. Miller commit 3941f1885bbf5b9f5e45cdd5a82efc794cc3823f Author: Matt Carlson Date: Mon Apr 12 06:58:31 2010 +0000 tg3: Update version to 3.110 This patch updates the tg3 version to 3.110. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit de6f31eb9a467cfd0f1f8c5e6ca842563f7f2870 Author: Matt Carlson Date: Mon Apr 12 06:58:30 2010 +0000 tg3: Remove function errors flagged by checkpatch This patch removes the following checkpatch errors: * return is not a function, parentheses are not required * space prohibited between function name and open parenthesis '(' Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 04380d401ebd02ec68bb0fc170f21a93690ebc80 Author: Matt Carlson Date: Mon Apr 12 06:58:29 2010 +0000 tg3: Unify max pkt size preprocessor constants The maximum packet size that gets programmed into the standard producer ring control block is directly related to the packet size used to allocate packet buffers. This patch removes the redundant preprocessor constant. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 9dc7a1134919bda8951bf5909fb79c14defb8317 Author: Matt Carlson Date: Mon Apr 12 06:58:28 2010 +0000 tg3: Re-inline VLAN tags when appropriate The tg3 driver is written so that VLAN tagged packets can be accepted, even if CONFIG_VLAN_8021Q or CONFIG_VLAN_8021Q_MODULE is not defined. (Think raw interfaces.) If the device has ASF support enabled, the firmware requires the driver to enable VLAN tag stripping. If VLAN tagging is not explicitly supported by the kernel and ASF is enabled, the driver will have to reinject the VLAN tag back into the packet stream. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d2757fc4076118e13180e91f02c3c52659be3d9d Author: Matt Carlson Date: Mon Apr 12 06:58:27 2010 +0000 tg3: Optimize rx double copy test On a PCIX bus, the 5701 has a bug which requires the driver to double copy all rx packets. The rx code uses the rx_offset device member as a flag to determine if this workaround should take effect. The following patch will modify the rx_offset member such that this test will become less clear. The patch starts by integrating the workaround check into the packet length check. It rounds out the implementation by relaxing the workaround restrictions if the platform has efficient unaligned accesses. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit a977dbe8445b8a81d6127c4aa9112a2c29a1a008 Author: Matt Carlson Date: Mon Apr 12 06:58:26 2010 +0000 tg3: Reduce 57765 core clock when link at 10Mbps This patch reduces the core clock to 6.25MHz when operating at 10Mbps link speed. This is needed to prevent a bug that will ultimately cause transmits to cease. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 1a3190254c0d1d1951e1d7e93542387c6ec82384 Author: Matt Carlson Date: Mon Apr 12 06:58:25 2010 +0000 tg3: Set card 57765 card reader MRRS to 1024B This patch sets the Maximum Read Request Size for the card reader function to 1024 bytes to prevent an SD controller lockup. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit cea46462681d61a65a208d17206d38739c1ea1b1 Author: Matt Carlson Date: Mon Apr 12 06:58:24 2010 +0000 tg3: Disable CLKREQ in L2 This patch disables CLKREQ in L2 to workaround a chipset bug. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 7ae554e5557bc8ee6ced437e5acffba922463a63 Author: Matt Carlson Date: Mon Apr 5 10:19:30 2010 +0000 tg3: Update version to 3.109 This patch updates the tg3 version to 3.109. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 7705736f5fc2e8fd0aa98eb7667e65dbedf50d63 Author: Matt Carlson Date: Mon Apr 5 10:19:29 2010 +0000 tg3: Remove tg3_dump_state() The tg3_dump_state() function is commented out and doesn't get used much when debugging efforts are underway. The chip architecture has also changed enough that any debugging effort that might use it would have to tailor it to the capabilities of the hardware. This patch just removes the function entirely. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 859a58879d7c771e78a373028d719467a2f8feb7 Author: Matt Carlson Date: Mon Apr 5 10:19:28 2010 +0000 tg3: Cleanup if codestyle This patch cleans up the code style as it pertains to if statements. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 33f401aec709e4fea414e5a4cf81b96462bc224f Author: Matt Carlson Date: Mon Apr 5 10:19:27 2010 +0000 tg3: The case of switches This patch fixes checkpatch errors related to switch statements. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit c6cdf43631c4108b38b872136c926691e987880f Author: Matt Carlson Date: Mon Apr 5 10:19:26 2010 +0000 tg3: Whitespace, constant, and comment updates This patch fixes whitespace errors, preprocessor definition placement oddities and updates comments. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 184b89044fb6e2a74611dafa69b1dce0d98612c6 Author: Matt Carlson Date: Mon Apr 5 10:19:25 2010 +0000 tg3: Use VPD fw version when present This patch extracts the firmware version from the VPD area and changes the code to prefer that version version over the manually extracted version. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 75f9936e1150be739a9f6577a9d34de120ea35f1 Author: Matt Carlson Date: Mon Apr 5 10:19:24 2010 +0000 tg3: Prepare FW version code for VPD versioning The code that extracts the firmware version from the device's NVRAM assumes the firmware version member is a clean slate. The following patch will add code to extract the firmware version from the VPD area of NVRAM, so this assumption will no longer be true. This patch adjusts the versioning code to respect the VPD version if it exists. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5129c3a3faf8c5f4e6dd6ca581e1c4b06f8e837f Author: Matt Carlson Date: Mon Apr 5 10:19:23 2010 +0000 tg3: Fix message 80 char violations Commit 05dbe005386e7521153dce6c5ad95c98b73b80c7, "Use (pr|netdev)_ macro helpers" extended some of the message lines longer than 80 chars. This patch reels the line lengths back in. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit ab96b241fd82ec8d546684ab6e29b6530976780a Author: Matt Carlson Date: Mon Apr 5 10:19:22 2010 +0000 tg3: netdev_err() => dev_err() Some uses of netdev_err() happen before the device has been registered. This will cause the messages to be prepended with "(unregistered net_device)" strings. We can clean up the message by using dev_err() instead. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 2445e461ce8c5a2316ed4c8a45cd2d0b6a366310 Author: Matt Carlson Date: Mon Apr 5 10:19:21 2010 +0000 tg3: Replace pr_err with sensible alternatives All the instances of pr_err() in the tg3 driver have better alternatives. This patch replaces all pr_err() calls. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 6d40db7beaef823621ff3d340ef53d08445960b4 Author: Matt Carlson Date: Mon Apr 5 10:19:20 2010 +0000 tg3: Restore likely() check in tg3_poll_msix() When creating the new tg3_poll_msix() function, the likely() compiler hint was dropped. This patch reintroduces it. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 22bedad3ce112d5ca1eaf043d4990fa2ed698c87 Author: Jiri Pirko Date: Thu Apr 1 21:22:57 2010 +0000 net: convert multicast list to list_head Converts the list and the core manipulating with it to be the same as uc_list. +uses two functions for adding/removing mc address (normal and "global" variant) instead of a function parameter. +removes dev_mcast.c completely. +exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for manipulation with lists on a sandbox (used in bonding and 80211 drivers) Signed-off-by: Jiri Pirko Signed-off-by: David S. Miller commit 3f07d1295191cfa41125e4e61ee2064790070071 Author: Julia Lawall Date: Sat Mar 13 12:22:16 2010 -0800 drivers/net/tg3.c: change the field used with the TG3_FLAG_10_100_ONLY constant The constant TG3_FLAG_10_100_ONLY should be used with the tg3_flags field, not the tg3_flags2 field, as done elsewhere in the same file. Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit fe234f0e5cbb880792d2d1ac0743cf8c07e9dde3 Author: Louis Rilling Date: Tue Mar 9 06:14:41 2010 +0000 tg3: Fix tg3_poll_controller() passing wrong pointer to tg3_interrupt() Commit 09943a1819a240ff4a72f924d0038818fcdd0a90 Author: Matt Carlson Date: Fri Aug 28 14:01:57 2009 +0000 tg3: Convert ISR parameter to tnapi forgot to update tg3_poll_controller(), leading to intermittent crashes with netpoll. Fix this. Signed-off-by: Louis Rilling Cc: stable@kernel.org Signed-off-by: David S. Miller commit 4181b2c8bc29bb756ac1816678104b528377b656 Author: Matt Carlson Date: Fri Feb 26 14:04:45 2010 +0000 tg3: Remove now useless VPD code Now that the VPD searching code is abstracted away, the outer loop used to detect the read-only large resource data type section is useless. Signed-off-by: Matt Carlson Acked-by: Jesse Barnes Signed-off-by: David S. Miller commit 4067a8541d397e9d6b443dd2ce0ecb78bfd991db Author: Matt Carlson Date: Fri Feb 26 14:04:43 2010 +0000 pci: Add helper to search for VPD keywords This patch adds the pci_vpd_find_info_keyword() helper function to find information field keywords within read-only and read-write large resource data type sections. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Acked-by: Jesse Barnes Signed-off-by: David S. Miller commit e1d5bdabb94da89bdb3c3f2ee105cf61fca88ec8 Author: Matt Carlson Date: Fri Feb 26 14:04:42 2010 +0000 pci: Add VPD information field helper functions This patch adds a preprocessor constant to describe the PCI VPD information field header size and an inline function to extract the size of the information field itself. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Acked-by: Jesse Barnes Signed-off-by: David S. Miller commit b55ac1b22690d2e5b02a61cf6d69c2d66969c79d Author: Matt Carlson Date: Fri Feb 26 14:04:41 2010 +0000 pci: Add helper to find a VPD resource data type This patch adds the pci_vpd_find_tag() helper function to find VPD resource data types in a buffer. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Acked-by: Jesse Barnes Signed-off-by: David S. Miller commit 7ad506fa1adc2da3d394c562f09b8e1b3026c402 Author: Matt Carlson Date: Fri Feb 26 14:04:40 2010 +0000 pci: Add large and small resource data type code This patch introduces more VPD preprocessor definitions to identify some small and large resource data type item names. The patch then continues to correct how the tg3 and bnx2 drivers search for the "read-only data" large resource data type. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Acked-by: Jesse Barnes Signed-off-by: David S. Miller commit a2ce766238f72ff7337606c0bc96803c30c9e05c Author: Matt Carlson Date: Fri Feb 26 14:04:39 2010 +0000 pci: Add PCI LRDT tag size and section size This patch adds a preprocessor constant to describe the PCI VPD large resource data type tag size and an inline function to extract the large resource section size from the large resource data type tag. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Acked-by: Jesse Barnes Signed-off-by: David S. Miller commit 567ec874d15b478c8eda7e9a5d2dcb05f13f1fb5 Author: Jiri Pirko Date: Tue Feb 23 23:17:07 2010 +0000 net: convert multiple drivers to use netdev_for_each_mc_addr, part6 Signed-off-by: Jiri Pirko Signed-off-by: David S. Miller commit 05dbe005386e7521153dce6c5ad95c98b73b80c7 Author: Joe Perches Date: Wed Feb 17 19:44:19 2010 +0000 drivers/net/tg3.c: Use (pr|netdev)_ macro helpers Add #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt Remove #define PFX Use pr_ Use netdev_ Remove periods from most formats Coalesce long formats Use printk_once Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit be7ce5307ded2e416224baab0bd1e5072591f33f Author: Matt Carlson Date: Wed Feb 17 15:17:05 2010 +0000 tg3: Update version to 3.108 This patch updates the tg3 version to 3.108. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 6a443a0f72ad7706345412dbd2e4d4981fdfce39 Author: Matt Carlson Date: Wed Feb 17 15:17:04 2010 +0000 tg3: Push phylib definitions to phylib This patch pushes phylib definitions out to phylib headers. For phy IDs, this removes some code duplication. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 79eb6904361fe4e54e589919a9b62c5e036c42c3 Author: Matt Carlson Date: Wed Feb 17 15:17:03 2010 +0000 tg3: Rename tg3 phy ID preprocessor definitions The phylib presents the phy ID in a different format than the one tg3 has traditionally used. To highlight the distinction, this patch prepends the tg3 native phy ID format with TG3. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 24daf2b0a4005f3a4e757752fcfed9da276cf202 Author: Matt Carlson Date: Wed Feb 17 15:17:02 2010 +0000 tg3: Reformat SSID to phy ID table This patch reformats the SSID to phy ID table, replacing constants with preprocessor definitions. This patch is also prep work for the following patch, which will push line lengths beyond 80 chars. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 9ea4818dd39cc8c6b31c38c9f51d19d5d4ee0be6 Author: Matt Carlson Date: Wed Feb 17 15:17:01 2010 +0000 tg3: Discover phy address once The phy address will not change after it has been identified. Move the discovery code to a location that only gets executed once. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 0d86df808886d4e56c46a9c356dfb81146e3b6d1 Author: Matt Carlson Date: Wed Feb 17 15:17:00 2010 +0000 tg3: Reduce indent level of tg3_rx_prodring_alloc This patch adds an inverted "jumbo ring enable" test and jumps to the exit if it succeeds. The change reduces the indent level of the remaining code making it more readable. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 144170635b543ceadfe6ba907ac496b40795764e Author: Matt Carlson Date: Wed Feb 17 15:16:59 2010 +0000 tg3: Rename TG3_FLG3_RGMII_STD_IBND_DISABLE The STD part of this preprocessor definition is a bit of a misnomer. This flag is a coarse control of the RGMII inband status facilities. This patch renames the definition to be more accurate. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b474eca74cf647df0a7fd56bc975ee4a812741b7 Author: Matt Carlson Date: Wed Feb 17 15:16:58 2010 +0000 tg3: Add more partno entries for fallback path This patch adds 57765 asic partno entries for the path executed if VPD is not present in NVRAM. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 2712168f856e8cd42265e7ef855d64702da20089 Author: Matt Carlson Date: Wed Feb 17 15:16:57 2010 +0000 tg3: Allow phylib flowctrl changes anytime This patch loosens the restriction that the phylib interface must be up and running to change the flow control parameters. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit a4153d401ac440c73e0721db0b6b031e8e6f77d1 Author: Matt Carlson Date: Wed Feb 17 15:16:56 2010 +0000 tg3: Add support for 2 new selfboot formats This patch adds new offsets to the bootcode version extraction code to support NVRAM format versions 4 and 5. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d110114281fad580dd9ce629507d17b123169cff Author: Matt Carlson Date: Wed Feb 17 15:16:55 2010 +0000 tg3: Make 57791 and 57795 10/100 only This patch adds the 57791 and 57795 to the list of devices that only support 10 and 100 Mbps speeds. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 61e800cf949926b3d463ca3cf3025d964872774b Author: Matt Carlson Date: Wed Feb 17 15:16:54 2010 +0000 tg3: Enforce DMA mapping / skb assignment ordering Michael Chan noted that there is nothing in the code that would prevent the compiler from delaying the access of the "mapping" member of the newly arrived packet until much later. If this happened after the skb = NULL assignment, it is possible for the driver to pass a bad dma_addr value to pci_unmap_single(). To enforce this ordering, we need a write memory barrier. The pairing read memory barrier already exists in tg3_rx_prodring_xfer() under the comments starting with "Ensure that updates to the...". Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b3b3f04fb587ecb61b5baa6c1c5f0e666fd12d73 Author: Matt Carlson Date: Fri Feb 12 14:47:13 2010 +0000 tg3: Update driver version to 3.107 This patch updates the tg3 version to 3.107. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 1061b7c56482310bbb8197045d51e2986afabfce Author: Matt Carlson Date: Fri Feb 12 14:47:12 2010 +0000 tg3: Fix AC131 loopback test errors for 5785 The AC131 does not enable the forced transmit clock settings immediately. The workaround is to read the register again to get the setting to take effect. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit c88734054e787542ea093b02120e324e92cad882 Author: Matt Carlson Date: Fri Feb 12 14:47:11 2010 +0000 tg3: Fix napi assignments in loopback test The 57765 lacks TSS support. This renders the napi assignments incorrect in the loopback test function. This patch fixes the problem. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 603f11738cee4d46a2a1d394ae80d718f8d37cba Author: Matt Carlson Date: Fri Feb 12 14:47:10 2010 +0000 tg3: Reset phy during bringup when using phylib The driver puts the phy into low-power mode when it releases the device. If the device were to be reacquired, the phy needs a reset to bring it back to full powered operation. This patch allows phylib-enabled devices to reset the phy. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 0339e4e3effeae71e2b19c6340ef9672fb7a2cb3 Author: Matt Carlson Date: Fri Feb 12 14:47:09 2010 +0000 tg3: Turn off multiple DMA reads for 5717 The 5717's DMA read engine has a bug when initiating multiple DMA reads across the PCIe bus. This patch disables the feature. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 6b10c1653e425e30cff7f41d0e6f9743bfa9810f Author: Matt Carlson Date: Fri Feb 12 14:47:08 2010 +0000 tg3: Fix 57765 A0 bootcode race condition On A0 revision of 57765 asic rev devices, the bootcode will perform some hardware operations, after the magic signature is presented, that will collide with setup operations performed by the driver. The best way to avoid the contention is to have the driver delay an additional 10 milliseconds. B0 revisions of the chip will make this workaround unnecessary. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f89f38b8ec3171664314669a1396ab70b43e8961 Author: Matt Carlson Date: Fri Feb 12 14:47:07 2010 +0000 tg3: Unwedge stuck MSI-X vectors The previous patch changed the code so that new rx buffer submissions to the hardware stall if a new submission would overwrite data needed by an unserviced rx packet. On very busy 5717 and 57765 asic rev devices, there is a corner case where the hardware will fail to assert an MSI-X interrupt for rx traffic. If that vector's interrupt never has another reason to assert, any rx buffers held will never be serviced. If the buffers are never serviced and the hardware consumes all the available rx packets for other rx rings, deadlock will result. The most reliable and least intrusive way to work around the problem is to detect the case where new submissions would overwrite existing data and force all rx interrupt vectors to fire. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit e92967bfb1f4fa7da7c425df9239c4bb615dec30 Author: Matt Carlson Date: Fri Feb 12 14:47:06 2010 +0000 tg3: Prevent rx producer ring overruns When operating in RSS mode, it is possible for one rx return ring to submit enough rx buffers back to the hardware such that it inadvertently overwrites data needed by another rx return ring. This patch addresses the problem by looking for non-NULL skb pointers in the rx_[std|jmb]_buffers rings that parallel the rx producer rings. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit e4af1af900328e4aa71cd5df75bb22669ab11522 Author: Matt Carlson Date: Fri Feb 12 14:47:05 2010 +0000 tg3: Give MSI-X vec 1 rx backlog space RSS ring 1 is responsible for submitting new rx buffers to the hardware on behalf of all the other RSS rx return rings. Up until now this ring submitted its new rx buffers to the producer ring directly. The following patch will require that this ring have a place to put backlogged rx packets. As a consequence, it can no longer submit new buffers to the producer ring. This patch adds code to allocate an extra shadow producer ring for this RSS ring and adds RSS ring 1 to the list of rings needing buffer transfers. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 4cd24eaf0c6ee7f0242e34ee77ec899f255e66b5 Author: Jiri Pirko Date: Mon Feb 8 04:30:35 2010 +0000 net: use netdev_mc_count and netdev_mc_empty when appropriate This patch replaces dev->mc_count in all drivers (hopefully I didn't miss anything). Used spatch and did small tweaks and conding style changes when it was suitable. Jirka Signed-off-by: Jiri Pirko Signed-off-by: David S. Miller commit 51c24aaacaea90c8e87f1dec75a2ac7622b593f8 Merge: 4276e47 6be3257 Author: David S. Miller Date: Sat Jan 23 00:31:06 2010 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 commit b0f752210c0aa5e3d9ece4cbfefdc43092a68b83 Author: Matt Carlson Date: Wed Jan 20 16:58:11 2010 +0000 tg3: Add 57765 phy ID and enable devices. This patch rounds out the 57765 asic rev support by adding the 57765 phy ID and entering the 57765 device IDs in the pci table. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 334355aa590c4b58750015c2f5710cd5074f45dd Author: Matt Carlson Date: Wed Jan 20 16:58:10 2010 +0000 tg3: Bypass power source switching for 57765 The 57765 repurposes all the GPIOs normally used to switch power sources when configured as a NIC device. This patch changes the code to avoid touching the GPIOs for this asic rev. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit cb4ed1fd8af963101a59c8c5fef97cbbf5f3fb88 Author: Matt Carlson Date: Wed Jan 20 16:58:09 2010 +0000 tg3: Turn off the debug UART for 57765 If the debug UART is left enabled, the LEDs will not work properly. This patch disables the debug UART. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit c2353a3214ff5813c4b719b3cdacbe939b1c63a0 Author: Matt Carlson Date: Wed Jan 20 16:58:08 2010 +0000 tg3: Fix tx mailbox initialization If a device supports MSI-X interrupts, the driver assumes TSS will be available. This is not true for the 57765. This patch changes the code so that only the default tx mailbox is initialized if TSS is not available. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 5fd68fbdaf75505a2400826c7f314a1f3121a5f7 Author: Matt Carlson Date: Wed Jan 20 16:58:07 2010 +0000 tg3: Supply a nicaddr for 57765 jumbo RCB The 57765 needs the driver to supply a nic address to the jumbo RCB, just like all other devices except the 5717. This patch changes the test to single out the 5717 rather than maintain a lengthy whitelist of asic revs. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 8b5a6c42e1f2277433aeefa9ee5a0c1a2473b7d8 Author: Matt Carlson Date: Wed Jan 20 16:58:06 2010 +0000 tg3: Fix 5717 and 57765 memory selftests Both the 5717 and the 57765 will fail 'ethtool -t' selftests at the memory selftest portion. The memory map for these two devices differs from the rest of the asic revs and each other. This patch adds a new memory map to use for memory selftests. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit ecf1410b9d70b3034e5955e92bb0c3e02ff21e9c Author: Matt Carlson Date: Wed Jan 20 16:58:05 2010 +0000 tg3: Abort phy init for 5717 serdes devices The 5717 serdes devices have a different phy register layout than all other previous serdes devices. This patch aborts the phy init sequence in tg3_phy_reset() if the device is a 5717 serdes. It also aborts the tg3_phy_toggle_apd() operation. Most other operations in the MII_SERDES path are O.K. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 9b952f51d019db37276bdb2924e776ca09132fc1 Author: Matt Carlson Date: Wed Jan 20 16:58:04 2010 +0000 tg3: Add 5717 serdes phy ID The serdes and copper phys of the 5717 asic rev have different phy IDs. This patch adds the serdes phy ID. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 666bc831cf820e16cbd0c2d5be780c512b1afe15 Author: Matt Carlson Date: Wed Jan 20 16:58:03 2010 +0000 tg3: Improve internal resource allocations The 5717 and the 57765 have more resources at their disposal internally. This patch tunes the driver to get better performance. The adjustments made here only apply to the 57765 and 5717 asic revs. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 614b05900ec3516b835cd06f848ef6bc915beeea Author: Matt Carlson Date: Wed Jan 20 16:58:02 2010 +0000 tg3: Enable PLL PD when CLKREQ disabled for 5717A0 PCIe PLL power down cannot be used if CLKREQ is enabled because data corruption will occur. If CLKREQ is disabled though, enabling PCIE P1 PLL power-down saves some power. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit ba5b0bfa06b6fbee03c6889046e9adcefa5d2c20 Author: Matt Carlson Date: Tue Jan 12 10:11:40 2010 +0000 tg3: Update copyright and driver version This patch updates the copyright notice for 2010 and updates the version number to 3.106. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 55dffe79b34e2af98bd1315f1e00c2fc6a7a7078 Author: Matt Carlson Date: Tue Jan 12 10:11:39 2010 +0000 tg3: Disable 5717 serdes and B0 support The B0 revision of the 5717 will not get enough testing by the time 2.6.33 ships. Since the kernel is already at RC3, serdes support will require too many patches to fix. For these reasons, this patch disables 5717 serdes support and will refuse to attach to all 5717 devices that are later than an A0 revision. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit d1ec96af77df611d1728f3bb70289f83a02df1ea Author: Matt Carlson Date: Tue Jan 12 10:11:38 2010 +0000 tg3: Add reliable serdes detection for 5717 A0 The serdes status bit does not work as intended for the 5717 A0. This patch implements an alternative detection scheme that will only be valid for A0 revisions. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 86cfe4ff02a51294cb2c974a8bedc7f648491df9 Author: Matt Carlson Date: Tue Jan 12 10:11:37 2010 +0000 tg3: Fix std rx prod ring handling There are some tg3 devices that require the driver to post new rx buffers in smaller increments. Commit 4361935afe3abc3e5a93006b99197fac1fabbd50, "tg3: Consider rx_std_prod_idx a hw mailbox" changed how the driver tracks the rx producer ring updates, but it does not make any special considerations for the above-mentioned devices. For those devices, it is possible for the driver to hit the special case path, which updates the hardware mailbox register but skips updating the shadow software mailbox member. If the special case path represents the final mailbox update for this ISR iteration, the hardware and software mailbox values will be out of sync. Ultimately, this will cause the driver to use a stale mailbox value on the next iteration, which will appear to the hardware as a large rx buffer update. Bad things ensue. The fix is to update the software shadow mailbox member when the special case path is taken. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reported-by: Dmitry Torokhov Signed-off-by: David S. Miller commit 13fa95b0398d65885a79c6e95a09976ee9f8c009 Author: Matt Carlson Date: Tue Jan 12 10:11:36 2010 +0000 tg3: Fix std prod ring nicaddr for 5787 and 57765 Commit 87668d352aa8d135bd695a050f18bbfc7b50b506, titled "tg3: Don't touch RCB nic addresses", tried to avoid assigning the nic address of the standard producer ring. Unfortunately, the default nic address is not correct for the 5787, the 5755M, or the 57765. This patch reenables the old behavior and opts out of the assignment only for the 5717. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Tested-by: Chow Loong Jin Tested-by: Dmitry Torokhov Signed-off-by: David S. Miller commit a3aa18842a5303fc28fcc4d57dbd16618bd830a0 Author: Alexey Dobriyan Date: Thu Jan 7 11:58:11 2010 +0000 drivers/net/: use DEFINE_PCI_DEVICE_TABLE() Use DEFINE_PCI_DEVICE_TABLE() so we get place PCI ids table into correct section in every case. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit cceea982ef78cf358b70f3412a6799f153211e14 Author: Matt Carlson Date: Thu Dec 3 08:36:25 2009 +0000 tg3: Update version to 3.105 This patch updates the tg3 version to 3.105. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 026a6c21646cf77ea838f3c121de29cdf948ca71 Author: Matt Carlson Date: Thu Dec 3 08:36:24 2009 +0000 tg3: Clean tg3_init_one() Tg3's firmware is no longer loaded from tg3_init_one(). Remove the error path that releases the firmware back to the system. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 94c982bd9f07b801f03cebe32b20f893b4ad6d27 Author: Matt Carlson Date: Thu Dec 3 08:36:23 2009 +0000 tg3: Use pci_read_vpd() instead of private method If the driver needs to use PCI configuration space to read the VPD data, the accesses could collide with the pci_read_vpd() function. This patch converts the driver to use pci_read_vpd() to avoid any potential collisions. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 141518c95870228da4e050fbe31a8f0c9df82c72 Author: Matt Carlson Date: Thu Dec 3 08:36:22 2009 +0000 tg3: Add some VPD preprocessor constants This patch cleans up the VPD code by creating preprocessor definitions and using them in the place of hardcoded constants. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b703df6f628ab63eaa875232551b1f2f0503b9af Author: Matt Carlson Date: Thu Dec 3 08:36:21 2009 +0000 tg3: Add 57765 asic rev This patch adds the 57765 asic revision. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 19cfaecc094781da273b5cd1411ee46589898d0e Author: Matt Carlson Date: Thu Dec 3 08:36:20 2009 +0000 tg3: Make TSS enable independent of MSI-X enable The 57765 asic rev has MSI-X capability, but does not support TSS. This patch changes the tx paths so that TSS is explicitly mentioned, rather than implied through the ENABLE_MSIX flag. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8e95a2026f3b43f7c3d676adaccd2de9532e8dcc Author: Joe Perches Date: Thu Dec 3 07:58:21 2009 +0000 drivers/net: Move && and || to end of previous line Only files where David Miller is the primary git-signer. wireless, wimax, ixgbe, etc are not modified. Compile tested x86 allyesconfig only Not all files compiled (not x86 compatible) Added a few > 80 column lines, which I ignored. Existing checkpatch complaints ignored. Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit f4188d8affc8267a0f0f1b587a4d0a4b9b7f2999 Author: Alexander Duyck Date: Wed Dec 2 16:48:38 2009 +0000 tg3: remove use of skb_dma_map/unmap Due to the fact that skb_dma_map/unmap do not work correctly when a HW IOMMU is enabled it has been recommended to go about removing the calls from the network device drivers. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher CC: Matt Carlson CC: Michael Chan Signed-off-by: David S. Miller commit c5d5d1721763842a516529e553433d13b11c3f31 Author: Matt Carlson Date: Fri Nov 13 13:03:52 2009 +0000 tg3: Update version to 3.104 This patch updates the tg3 version to 3.104. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 5001e2f638011859c1351f9fe57ca4e545a15c47 Author: Matt Carlson Date: Fri Nov 13 13:03:51 2009 +0000 tg3: Fix DIDs, Enable 5717 support This patch fixes the 5717 variant device ID enumerations and adds those DIDs to the PCI ID table. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit b196c7e45f30cbcd38c83386bc8a04a21477f8d3 Author: Matt Carlson Date: Fri Nov 13 13:03:50 2009 +0000 tg3: Add rx prod ring consolidation This patch adds code to funnel each MSI-X vector's rx packet buffers into a single set of producer rings which will then be submitted to the hardware. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 66711e66639776685aeaad774488be1857abce26 Author: Matt Carlson Date: Fri Nov 13 13:03:49 2009 +0000 tg3: Create aliases for rx producer mailbox regs The rx producer mailbox registers are used in several spots in the code. The addition of TG3_64BIT_REG_LOW makes register references uncomfortably long. This patch creates an alias for the standard and jumbo ring producer index registers to make the code cleaner. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2b2cdb65bec42d38268b2ac115876b066afa7f95 Author: Matt Carlson Date: Fri Nov 13 13:03:48 2009 +0000 tg3: Lay proucer ring handling groundwork The patch increases the number of producer rings available and implements the constructor and destructor code that deals with them. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 4361935afe3abc3e5a93006b99197fac1fabbd50 Author: Matt Carlson Date: Fri Nov 13 13:03:47 2009 +0000 tg3: Consider rx_std_prod_idx a hw mailbox This patch changes how the code uses the rx_std_prod_idx member. In the following patch, the code will be changed so that it will act just like a hardware mailbox. This patch prepares the code so that memory barriers can be more easily inserted. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 411da6407e778bf946911df08bb5afc505422f31 Author: Matt Carlson Date: Fri Nov 13 13:03:46 2009 +0000 tg3: rename rx_[std|jmb]_ptr A later patch is going to add consumer indicies for the producer rings. To keep things readable, this patch renames rx_[std|jmb]_ptr to rx_[std|jmb]_prod_idx. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 86b21e59c9a65c8e46d35ac6c4220f63639828c6 Author: Matt Carlson Date: Fri Nov 13 13:03:45 2009 +0000 tg3: tg3_alloc_rx_skb(tnapi => tp) This patch converts the tnapi argument of tg3_alloc_rx_skb() to tp. The level of indirection is unnecessary. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit a3896167160ce9ad1eadeb88fd2f3971888444ae Author: Matt Carlson Date: Fri Nov 13 13:03:44 2009 +0000 tg3: Add prodring parameter to tg3_alloc_rx_skb() This patch changes the tg3_alloc_rx_skb() implementation to accept the destination producer ring set pointer as a parameter rather than assuming the source and destination producer rings are the same. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit afc081f83c59a7cf2c025a3ed89d011b5db556eb Author: Matt Carlson Date: Fri Nov 13 13:03:43 2009 +0000 tg3: Make tg3_alloc_rx_skb() a dst-only operation This patch removes the source index parameter of tg3_alloc_rx_skb(). A later patch will make it possible for the source and destination producer rings to be different. This patch opts to make tg3_alloc_rx_skb() a destination-only implementation and move the code sensitive to the difference elsewhere. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 78f90dcf184b8225a24217605c4289f1986451a3 Author: Matt Carlson Date: Fri Nov 13 13:03:42 2009 +0000 tg3: Move napi_add calls below tg3_get_invariants tg3_get_invariants(), among other things, discovers whether or not the device is MSI-X capable and how many interrupts it supports. This discovery needs to happen before registering NAPI instances with netdev. This patch moves the code block that calls napi_add later in tg3_init_one() so that tg3_get_invariants() has a chance to run first. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 35f2d7d0d7c222a580da0ed91c8d70c54267620a Author: Matt Carlson Date: Fri Nov 13 13:03:41 2009 +0000 tg3: Create tg3_poll_msix() for non-zero MSIX vecs This patch gives all non-zero MSIX vectors their own NAPI handler. This will make NAPI handling for those vectors slightly more efficient. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit cbf9ca6cf8304beb640a948709c4672bc1d5a55f Author: Matt Carlson Date: Fri Nov 13 13:03:40 2009 +0000 tg3: Allow DMAs to cross cacheline boundaries By default, the 5717 (and future chips) break up PCIe DMA packets across cacheline boundaries. This isn't necessary on x86. This patch selectively loosens the restriction. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 615774fe598f8ee971a8dfeb1f2ec4211241c433 Author: Matt Carlson Date: Fri Nov 13 13:03:39 2009 +0000 tg3: Use tg3_start_xmit_dma_bug for 5717 A0 The A0 revision of the 5717 has problems with short packet fragments. It needs to use the tg3_start_xmit_dma_bug() routine. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit e849cdc309de4a1e49dc3c23c6c36da91b990c9f Author: Matt Carlson Date: Fri Nov 13 13:03:38 2009 +0000 tg3: Add new HW_TSO_3 flag for 5717 The 5717 sets up TSO slightly differently in the transmit path. It looks like this method will be the new way of doing things. This patch defines a flag to indicate this. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 507399f18ea5810de42f0ea228c14305a8f67512 Author: Matt Carlson Date: Fri Nov 13 13:03:37 2009 +0000 tg3: Refine TSO and MSI discovery This patch consolidates the TSO capability discovery code into its own code block. The code that decides whether or not to allow TSO is then cleaned up. Finally, the patch consolidates all MSI and MSIX capability code into a single code block. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f66a29b03a2637ff052f2b8a81a5417fa44e228b Author: Matt Carlson Date: Fri Nov 13 13:03:36 2009 +0000 tg3: Move TG3_FLG2_PROTECTED_NVRAM to tg3_flags3 We need room for another TSO flag and it would be most efficient if it resided in tg3_flags2. This patch moves the TG3_FLG2_PROTECTED_NVRAM to tg3_flags3 to make room. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 24f4efd4e6c89a4093d0b8653d6669e45de45001 Author: Matt Carlson Date: Fri Nov 13 13:03:35 2009 +0000 tg3: Napify tg3_start_xmit_dma_bug() This patch converts tg3_start_xmit_dma_bug() to accomodate multiple NAPI instances. This is prep work for a later patch in this series. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 87668d352aa8d135bd695a050f18bbfc7b50b506 Author: Matt Carlson Date: Fri Nov 13 13:03:34 2009 +0000 tg3: Don't touch RCB nic addresses This patch avoids reprogramming the RCB NIC addresses for all 5755 and later devices. The address is incorrect for 5717 devices and should be correct by default for all other affected devices. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit c2060fe1f36565e60e622662a4519babd3b72f68 Author: Matt Carlson Date: Fri Nov 13 13:03:33 2009 +0000 tg3: Add 5717 phy ID This patch adds the 5717 phy ID. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 123b43e9716115302a0095e14f2c545811712715 Author: Matt Carlson Date: Mon Nov 2 14:33:03 2009 +0000 tg3: Update version to 3.103 This patch updates the tg3 version to 3.103. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 52fae0837153e86e4dabaf5df517a0b8b7a20bd7 Author: Matt Carlson Date: Mon Nov 2 14:32:38 2009 +0000 tg3 / broadcom: Optionally disable TXC if no link This patch adds code to disable the TXC and RXC reference clocks if link is not available. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit c704dc23cac0e433796bfe0a1fe2f1a64da11ac7 Author: Matt Carlson Date: Mon Nov 2 14:32:12 2009 +0000 tg3 / broadcom: Add APD support for GPHYs This patch adds an RXC auto power-down feature to the code that supports the gphys. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 32e5a8d651c0dbb02bf82ca954206282e44c4b11 Author: Matt Carlson Date: Mon Nov 2 14:31:39 2009 +0000 tg3 / broadcom: Add code to disable rxc refclk The 5785 does not use the RXC reference clock. Turning it off is desirable as it saves power. By default, the 50610 enables the RXC reference clock and the 50610M disables it. Presumably this is one of the reasons why the hardware architect chose one over the other. Adding a "rx reference clock disable" flag is not the ideal way to describe the option, as it would force the MAC using a 50610M to set the flag. Ideally we want the flags to represent opt-in behavior that deviates from hardware defaults. Furthermore, the lack of a "disable" flag implies that the requester wants the rx reference clock enabled, which doesn't necessarily follow. By presenting the option as a passive statement (rx reference clock unused) rather than a command, I hope to convey an opt-in option to disable the rx reference clock that falls back to hardware defaults if not set. A secondary benefit of this is that it keeps the intelligence about phy defaults in the broadcom module where it belongs and allows the broadcom module more latitude should a bug arise. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit cdd4e09d692bd4f3457b3789279005e112b7696d Author: Matt Carlson Date: Mon Nov 2 14:31:11 2009 +0000 tg3 / broadcom: Refine AC131 APD support Auto power-down (APD) support is a power-saving feature. It should be selectively enabled since it might expose MAC bugs. This patch changes the code to enable APD only if the PHY_BRCM_AUTO_PWRDWN_ENABLE flag is set. The tg3 driver was changed to set this bit. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 63a14ce449dd6d647de2725809159eb072b2c44f Author: Matt Carlson Date: Mon Nov 2 14:30:40 2009 +0000 tg3 / broadcom: Add PHY_BRCM_CLEAR_RGMII_MODE flag Broadcom 50610M parts changed the default definitions of the RGMII mode shadow register. The 5785 needs the RGMII mode selection bits [4:3] cleared. The default value of the remaining bits in this register are zero. Rather than unnecessarily burn an extra bit in the dev_flags member in an attempt to enumerate all possible combinations, this patch take a more course grained approach and labels the option as "clear all bits". Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit c73430d04ec75962e20e186d34c40b6d999f0968 Author: Matt Carlson Date: Mon Nov 2 14:29:34 2009 +0000 tg3: Add 50610M phy ID for 5785 This patch adds the 50610M phy ID for 5785. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 303fc9218246a748304c005e629d658927cf12d0 Author: Matt Carlson Date: Mon Nov 2 14:27:34 2009 +0000 tg3: Extend loopback test timeout This patch extends the loopback test timeout from 250 usec to 350 usec. When the 5785 is paired against an AC131 phy, the older timeout is just a little too close to the expected performance based on timings. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit c3df0748ee43101dfc5c94d1f61ddfca0ff5baa4 Author: Matt Carlson Date: Mon Nov 2 14:27:02 2009 +0000 tg3: 5785: Set port mode to MII when link down This patch sets the port mode to MII when the link is down for the 5785. Setting the port mode to MII instead of GMII saves power. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 0e5f784c77197edf29d2770b518dc78777d5a480 Author: Matt Carlson Date: Mon Nov 2 14:26:38 2009 +0000 tg3: Add AC131 power down support The AC131 does not respect the power down bit (bit 11) of the MII Control Register (reg 0x0). Instead, software is required to put the phy into standby power down mode through the shadow register set. This patch implements support for the AC131 standby power down mode. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 788a035e6061a66c6c77059c417fdc6234e140ff Author: Matt Carlson Date: Mon Nov 2 14:26:03 2009 +0000 tg3: Improve 5785 PCIe performance This patch improves 5785 performance by allowing the write DMA engine to request larger DMA burst sizes than it otherwise would. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit a21771dd189b340328c573da9e005068e8a74c53 Author: Matt Carlson Date: Mon Nov 2 14:25:31 2009 +0000 tg3: Add more PCI DMA map error checking This patch adds code to check the status of pci_map_single() before allowing rx buffers to be used. It also converts the pci_map_single() call in tg3_run_loopback() to use skb_dma_map() instead. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 52cdf8526fe24f11d300b75458ddee017f3f4c88 Author: Matt Carlson Date: Mon Nov 2 14:25:06 2009 +0000 tg3: Prevent a PCIe tx glitch This patch prevents a PCIe tx glitch by allowing the transmitter to go to a low power state. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 3f0e3ad72393db9c2932a2ca86cc1a49294bbc63 Author: Matt Carlson Date: Mon Nov 2 14:24:36 2009 +0000 tg3: Convert PHY_ADDR => TG3_PHY_MII_ADDR This patch renames the PHY_ADDR preprocessor definition. The following patch will identify a new member on the MDIO bus, so we want this preprocessor definition to be a little more descriptive. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit f40386c8452f9eead9c5906bfffaaf59f3dc748f Author: Matt Carlson Date: Mon Nov 2 14:24:02 2009 +0000 tg3: Fix disappearing 57780 devices Under certain power saving conditions, 57780 asic rev devices might disappear from the system. The fix is to disallow the PCIe PLL from powering down. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 92c6b8d16a36df3f28b2537bed2a56491fb08f11 Author: Matt Carlson Date: Mon Nov 2 14:23:27 2009 +0000 tg3: Fix 5906 transmit hangs The 5906 has trouble with fragments that are less than 8 bytes in size. This patch works around the problem by pivoting the 5906's transmit routine to tg3_start_xmit_dma_bug() and introducing a new SHORT_DMA_BUG flag that enables code to detect and react to the problematic condition. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0e1406dd404ce55dbe8d68b4b5e2aed7e5c75fdb Author: Matt Carlson Date: Mon Nov 2 12:33:33 2009 +0000 tg3: Assign flags to fixes in start_xmit_dma_bug This patch adds a flag for each bug workaround in tg3_start_xmit_dma_bug(). This is prep work for the following patch. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Signed-off-by: David S. Miller commit 24bb4fb6dac59f220f42fb375ba0e0f19365a227 Author: Matt Carlson Date: Mon Oct 5 17:55:29 2009 +0000 tg3: Fix phylib locking strategy Felix Radensky noted that chip resets were generating stack trace dumps. This is because the driver is attempting to acquire the mdio bus mutex while holding the tp->lock spinlock. The fix is to change the code such that every phy access takes the tp->lock spinlock instead. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 5ea1c50662d447de344812054175d7151783ea25 Author: Matt Carlson Date: Fri Sep 11 16:50:16 2009 -0700 tg3: Fix return ring size breakage Commit f6eb9b1fc1411d22c073f5264e5630a541d0f7df, "tg3: Add 5717 asic rev" changed how the rx return ring size operations are done. It effectively inverts the sense of the previous test, but it failed to also invert the resulting sizes. This patch corrects that error. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 7ab0f2736bfe137a82a7084bbfb5f809da95cabd Author: Ben Hutchings Date: Thu Sep 3 10:39:43 2009 +0000 netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations dev_ioctl() already checks capable(CAP_NET_ADMIN) before calling the driver's implementation of MDIO ioctls. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit daf09de817353f18bb81a23a023d429cfd258e62 Author: Matt Carlson Date: Tue Sep 1 13:22:42 2009 +0000 tg3: Update version to 3.102 This patch updates the tg3 version to 3.102. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 882e9793faa9425dff581c33b1af45ed10145626 Author: Matt Carlson Date: Tue Sep 1 13:21:36 2009 +0000 tg3: Add MDIO bus address assignments The 5717 is a dual port chip that has a shared MDIO bus design. While it is impossible for one function to interface with the wrong phy, that function still needs to know which MDIO bus address to use when interfacing with its own phy. This patch adds code to determine which MDIO bus address to use. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit a1b950d56de3c72bea3343f54de24c43fb7dc74e Author: Matt Carlson Date: Tue Sep 1 13:20:17 2009 +0000 tg3: Add 5717 NVRAM detection routines This patch adds NVRAM detection routines for the 5717. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit f6eb9b1fc1411d22c073f5264e5630a541d0f7df Author: Matt Carlson Date: Tue Sep 1 13:19:53 2009 +0000 tg3: Add 5717 asic rev This patch adds the 5717 asic rev. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 8d9d7cfc0ec2fe37ff9afd74326d03f38f96ad1b Author: Matt Carlson Date: Tue Sep 1 13:19:05 2009 +0000 tg3: Assign rx ret producer indexes by vector When RSS is enabled, the status block format changes slightly. The "rx_jumbo_consumer", "reserved", and "rx_mini_consumer" members get mapped to the other three rx return ring producer indexes. This patch introduces a new per-interrupt member which identifies which location in the status block a particular vector should look for return ring updates. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 0c1d0e2b05e92ad847b3ebe1c75b7974086bc8fa Author: Matt Carlson Date: Tue Sep 1 13:16:33 2009 +0000 tg3: Adjust RSS ring allocation strategies When multivector RSS is enabled, the first interrupt vector is only used to report link interrupts and error conditions. This patch changes the code so that rx and tx ring resources are not allocated for this vector. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit baf8a94a572928710e9e60967d153a7bf3aebd9c Author: Matt Carlson Date: Tue Sep 1 13:13:00 2009 +0000 tg3: Add RSS support This patch adds code needed to enable RSS. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit b6080e126012047d42e53154189fdca286d0600e Author: Matt Carlson Date: Tue Sep 1 13:12:00 2009 +0000 tg3: Add coalesce parameters for msix vectors This patch adds code to tune the coalescing parameters for the other msix vectors. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit fed9781081aa9600765346c108ff22751e003715 Author: Matt Carlson Date: Tue Sep 1 13:10:19 2009 +0000 tg3: Enable NAPI instances for other int vectors This patch adds code to enable and disable the rest of the NAPI instances. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit fe5f5787f0866e9f883bdd90018a354f2f3defd1 Author: Matt Carlson Date: Tue Sep 1 13:09:39 2009 +0000 tg3: Add TSS support This patch exposes the additional transmit rings to the kernel and makes the necessary modifications to transmit, open, and close paths. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 89aeb3bceaa1a02651206a76a7b9dcb8f3884702 Author: Matt Carlson Date: Tue Sep 1 13:08:58 2009 +0000 tg3: Update intmbox and coal_now for msix This patch fixes up two spots that need attention now that msix support has been added. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit f77a6a8e6cee17b21a43bdf6b853cc2fc0e2c4df Author: Matt Carlson Date: Tue Sep 1 13:04:37 2009 +0000 tg3: Add tx and rx ring resource tracking This patch adds code to assign status block, tx producer ring and rx return ring resources needed for the other interrupt vectors. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 646c9eddcffd202bb0f3d906cecf94eaf10cad31 Author: Matt Carlson Date: Tue Sep 1 12:58:41 2009 +0000 tg3: Add mailbox assignments The 5717 assigns mailbox locations to interrupt vectors in a rather non-intuitive way. (Much of the complexity stems from legacy compatibility issues.) This patch implements the assignment scheme. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 679563f47cd2547a0e091b5bd3ddf30027af6b08 Author: Matt Carlson Date: Tue Sep 1 12:55:46 2009 +0000 tg3: Add MSI-X support This patch adds MSI-X support. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 4f125f42dd55390016e21f8b3960f99d02d1001f Author: Matt Carlson Date: Tue Sep 1 12:55:02 2009 +0000 tg3: Add support code around kernel interrupt API This patch adds code to support multiple interrupt vectors around the kernel's interrupt API. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 2d31ecaf10c4ae03d49aed516481b2839b0220f6 Author: Matt Carlson Date: Tue Sep 1 12:53:31 2009 +0000 tg3: Create tg3_rings_reset() This patch moves most of the chip ring setup logic into a separate function. This will make it easier to verify the multi ring setup changes. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit fd2ce37f8e4a570ce90b141a2e7c476c5b399836 Author: Matt Carlson Date: Tue Sep 1 12:51:13 2009 +0000 tg3: Add per-int coalesce now member Each interrupt vector has its own bit in the host coalescing register to force that vector's status block to be updated and generate an interrupt. This patch adds a member to the per-interrupt structure that records which bit belongs to that vector. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit f19af9c2cc015e42dfe4bd5c383e32066ec2801c Author: Matt Carlson Date: Tue Sep 1 12:47:49 2009 +0000 tg3: inline tg3_cond_int() This patch inlines the code of tg3_cond_int() into the function's only callsite. This prep work makes the following patch cleaner. Signed-off-by: Matt Carlson Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 61357325f377889a1daffa14962d705dc814dd0e Author: Stephen Hemminger Date: Mon Aug 31 19:50:58 2009 +0000 netdev: convert bulk of drivers to netdev_tx_t In a couple of cases collapse some extra code like: int retval = NETDEV_TX_OK; ... return retval; into return NETDEV_TX_OK; Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit fc57e515a2c02599b00d252545521288dfc0158a Author: Matt Carlson Date: Fri Aug 28 14:03:44 2009 +0000 tg3: Update version to 3.101 This patch updates the tg3 version to 3.101. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f3f3f27e5b4e27737f824535e6f145a3c88b976c Author: Matt Carlson Date: Fri Aug 28 14:03:21 2009 +0000 tg3: Move per-int tx members to a per-int struct This patch moves the tx_prod, tx_cons, tx_pending, tx_ring, and tx_buffers transmit ring device members to a per-interrupt structure. It also adds a new transmit producer mailbox member (prodmbox) and converts the code to use it rather than a preprocessor constant. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 723344820aa405ac2663ab9e36fd27833d06129b Author: Matt Carlson Date: Fri Aug 28 14:03:01 2009 +0000 tg3: Move per-int rx members to per-int struct This patch moves the rx_rcb, rx_rcb_mapping, and rx_rcb_ptr return ring device members to a per-interrupt structure. It also adds a new return ring consumer mailbox register member (consmbox) and converts the code to use it rather than a preprocessor constant. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 898a56f8d8170c188e47ae3acb90d2ea9a585ebe Author: Matt Carlson Date: Fri Aug 28 14:02:40 2009 +0000 tg3: Move general int members to a per-int struct This patch moves the last_tag, last_tag_irq, and hw_status device members to a per-interrupt structure. It also adds a new interrupt mailbox member (int_mbox) and converts the code to use it rather than a direct preprocessor constant. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 17375d25d3dcd3d4caf9456fa94f60e29d6b1146 Author: Matt Carlson Date: Fri Aug 28 14:02:18 2009 +0000 tg3: Convert napi handlers to use tnapi This patch converts the napi interrupt handler functions to accept and use tg3_napi structures. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 09943a1819a240ff4a72f924d0038818fcdd0a90 Author: Matt Carlson Date: Fri Aug 28 14:01:57 2009 +0000 tg3: Convert ISR parameter to tnapi This patch migrates the ISR parameter from struct net_device to struct tg3_napi. Checkpatch complains about the existence of the preexisting IRQF_SAMPLE_RANDOM flag. I've opted to keep this patch conservative and let it continue to exist until the flag gets officially purged from the kernel. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 8ef0442f98850333196bc56415192e52a6267878 Author: Matt Carlson Date: Fri Aug 28 14:01:37 2009 +0000 tg3: Move napi to per-int struct This patch creates a per-interrupt data structure, moves the napi member over, and creates a tg3 pointer back to the device structure. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 07b0173cb5d6a9d77646cd855066ebe90b9203f2 Author: Matt Carlson Date: Fri Aug 28 14:01:15 2009 +0000 tg3: Cleanup interrupt setup / teardown Later patches will be adding MSIX support, which will complicate interrupt initialization. This patch prepares for the integration by breaking out the interrupt setup and teardown code into separate functions and cleaning up the error return paths. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 79ed5ac7ddd5f8d6463f5a17b3575772e9896481 Author: Matt Carlson Date: Fri Aug 28 14:00:55 2009 +0000 tg3: Use ext rx bds The 5717 only uses extended buffer descriptors for the jumbo producer ring. Extended buffer descriptors are available on all devices that support a separate jumbo producer ring so make the change universal. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 21f581a5366d48d86b9ae86043fc61d44e992c0c Author: Matt Carlson Date: Fri Aug 28 14:00:25 2009 +0000 tg3: Create a new prodring_set structure This patch migrates most of the rx producer ring variables to a new tg3_rx_prodring_set structure and modifies the code accordingly. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit cf7a7298c4f47ab7546b933bb54ad3ea03a1daf6 Author: Matt Carlson Date: Fri Aug 28 13:59:57 2009 +0000 tg3: Create rx producer ring setup routines Later patches are going to complicate the ring initialization routines. This patch breaks out the setup and teardown of the rx producer rings into separate functions to make the code more readable. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 287be12e1774d842bff21ea0c1809c2387d7b310 Author: Matt Carlson Date: Fri Aug 28 13:58:46 2009 +0000 tg3: Clarify rx buffer relationships This patch attempts to document the various rx buffer sizes used by the driver and how they relate to each other. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 8f666b07ac53eeedd6c035adf6d4299f9ed0df2d Author: Matt Carlson Date: Fri Aug 28 13:58:24 2009 +0000 tg3: Move the JUMBO_CAPABLE and SUPPORT_MSI flags This patch moves where the jumbo capable and msi support flags are located. This is prep work for the addition of msix support flags. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit fdb72b38c94c0ead1f78ecc8db64b832feda22c3 Author: Matt Carlson Date: Fri Aug 28 13:57:12 2009 +0000 tg3: Break out mini producer ring handling This patch separates the code that sets up the mini producer ring from the code that sets up the jumbo producer rings. The 5717 asic rev devices do not have a mini ring, but do have a jumbo frame implementation similar to the 5704 and previous devices. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 8590a603e5e20ccf49d6cf0ea71ecf5388d1f9da Author: Matt Carlson Date: Fri Aug 28 12:29:16 2009 +0000 tg3: Reformat NVRAM case statements This patch fixes up the NVRAM detection switch statements to conform to the kernel coding style. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 2befdcea96fcd9a13e94373c66ea1dd7365d2a74 Author: Matt Carlson Date: Fri Aug 28 12:28:45 2009 +0000 tg3: Add new 5785 10/100 only device ID This patch adds a new device ID for those 5785 devices that will only use 10/100 phys. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 0a9140cff22e405fce1747a2e02d41851c36c55a Author: Matt Carlson Date: Fri Aug 28 12:27:50 2009 +0000 tg3: Delay mdio bus init until fw finishes The device firmware uses the MDIO bus during early setup. If the driver modifies the MDIO bus configuration while it is in use by the firmware, any number of bad things can happen. This patch delays MDIO setup until after the firmware posts its magic signature, signifying initialization is complete. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit f656f39801b00c3c2aa26cefbdee2775d6706d45 Author: Matt Carlson Date: Tue Aug 25 10:11:55 2009 +0000 tg3: Update version to 3.100 This patch updates the tg3 version to 3.100. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 7f97a4bd47291e4ec9b9eaf63d7275ddfb498cb3 Author: Matt Carlson Date: Tue Aug 25 10:10:03 2009 +0000 tg3: Convert code to use PHY_IS_FET This patch converts the code to use the PHY_IS_FET flag rather than the ASIC revision to decide whether or not to use FET paths. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 535ef6e1124d445efbcc13b7126561dc544b0b64 Author: Matt Carlson Date: Tue Aug 25 10:09:36 2009 +0000 tg3: Create MII_TG3_FET namespace Broadcom's phys come in two distinctly different register layouts. For the lack of an official term to distinguish between the two formats, we can loosely categorize them by their fast ethernet or gigabit ethernet transceiver description. This patch creates the (driver-internal) Fast Ethernet Transceiver (FET) namespace and converts the 5906 EPHY definitions over. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit bb85fbb6a98d8edab81599913559c7ff0a963984 Author: Matt Carlson Date: Tue Aug 25 10:09:07 2009 +0000 tg3: Tune 5785 clock switching This patch tunes the timeouts the CPMU uses to decide when to switch from the clocks output by the PHY to internal clock sources. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 5e7ccf2003e6a9c35b5aa24953ba5009a1a8b653 Author: Matt Carlson Date: Tue Aug 25 10:08:42 2009 +0000 tg3: Add 57788, remove 57720 This patch adds support for the 57788 and removes support for the 57720 which was never released. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit e7126997342560533317d8467e8516119ebcbd21 Author: Matt Carlson Date: Tue Aug 25 10:08:16 2009 +0000 tg3: Preserve PCIe MPS setting for new devs Most older tg3 devices only supported a PCIe maximum payload size of 128 bytes. More recent devices bump this limit up to 256 bytes though. This patch modifies the code so that the MPS limit is only enforced on those devices that only allow the 128 byte setting. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 29ea095fb727ac48228ff2d1af484c27bf1dcbd4 Author: Matt Carlson Date: Tue Aug 25 10:07:54 2009 +0000 tg3: Fix TSO test against wrong flags var Julia Lawall discovered that the TG3_FLG2_TSO_CAPABLE flag was being compared against the wrong flags device member. This patch implements the fix. Signed-off-by: Julia Lawall Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 255ca311b650caece3ec4f78b88ef298664d561f Author: Matt Carlson Date: Tue Aug 25 10:07:27 2009 +0000 tg3: Prevent tx BD corruption This patch prevents a tx BD corruption bug by preventing the device from powering down the PLL from L1 if the link speed is 10Mbps or 100Mbps. The same bits are also used to prevent a system hang during chip reset resulting from a complicated set of events that ultimately leads to PCIe block register corruption. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 521e6b90dd3f0392062845d7ef13e6e41bb99d8a Author: Matt Carlson Date: Tue Aug 25 10:06:01 2009 +0000 tg3: Fix 57780 asic rev PCIe link receiver errors This patch fixes some PCIe link receiver errors by decreasing the internal electrical idle timeout. Signed-off-by: Matt Carlson Reviewed-by: Michael Chan Reviewed-by: Benjamin Li Signed-off-by: David S. Miller commit 042a53a9e437feaf2230dd2cadcecfae9c7bfe05 Author: Eric Dumazet Date: Fri Jun 5 04:04:16 2009 +0000 net: skb_shared_info optimization skb_dma_unmap() is quite expensive for small packets, because we use two different cache lines from skb_shared_info. One to access nr_frags, one to access dma_maps[0] Instead of dma_maps being an array of MAX_SKB_FRAGS + 1 elements, let dma_head alone in a new dma_head field, close to nr_frags, to reduce cache lines misses. Tested on my dev machine (bnx2 & tg3 adapters), nice speedup ! Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit cdd0db058d64f2619b08e7d098ee0014aa0a5bc1 Author: Eric Dumazet Date: Thu May 28 00:00:41 2009 +0000 net: dont update dev->trans_start Second round of drivers for Gb cards (and NIU one I forgot in the 10GB round) Now that core network takes care of trans_start updates, dont do it in drivers themselves, if possible. Drivers can avoid one cache miss (on dev->trans_start) in their start_xmit() handler. Exceptions are NETIF_F_LLTX drivers Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit bb9e63e27117b469a151c61fb0045a8ec4cced5d Author: Matt Carlson Date: Mon Apr 20 07:13:31 2009 +0000 tg3: Update version to 3.99 This patch updates the tg3 version to 3.99. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit daba2a631d2b7831b6a021b36d61314a9153526e Author: Matt Carlson Date: Mon Apr 20 06:58:52 2009 +0000 tg3: Restore LAA sooner in shutdown sequence After a shutdown reset, the LAA needs to be restored before posting the post-reset signature in shared memory. If the LAA is not restored before then, the bootcode will assume the factory default MAC address and WOL will not work with the LAA. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9cf74ebb634fe79587cf9a1d5ff971391dd12e1b Author: Matt Carlson Date: Mon Apr 20 06:58:27 2009 +0000 tg3: Limit CLKREQ fix to A[01] of 57780 asic rev This patch restricts the CLKREQ bugfix to the A0 and A1 revisions of 57780 ASIC rev chips. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8d519ab2866c92f5d722085492a124f016f601aa Author: Matt Carlson Date: Mon Apr 20 06:58:01 2009 +0000 tg3: Allow 5761 WOL and LED fixes to 5761S too The 5761 WOL and LED fixes used the PCI device ID to as the activation key. The 5761S requires the same process. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 33466d938f43ab65312466ba5472b9c6ee200cce Author: Matt Carlson Date: Mon Apr 20 06:57:41 2009 +0000 tg3: Prevent send BD corruption On rare occasions, send BD corruptions can occur. This patch fixes the problem by increasing the L1 entry threshold to 4 milliseconds. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit df259d8cba7d7880dc04d34c7a6e0ce15fbc9644 Author: Matt Carlson Date: Mon Apr 20 06:57:14 2009 +0000 tg3: Handle NVRAM absent cases Some 57780 ASIC revision parts do not have NVRAM. Code the driver so that it is tolerant of this configuration. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 624f8e5082efd0348ccf7e3d3f4bfc41efead26c Author: Matt Carlson Date: Mon Apr 20 06:55:01 2009 +0000 tg3: Allow screaming interrupt detection The tg3 driver's ISR is coded to accept interrupts as its own if the status block tag does not equal the last tag the driver has seen. The last_tag field is updated from tg3_poll. In a screaming interrupt situation from another device sharing tg3's IRQ, tg3_poll does not get a chance to be called, so the last_tag will always be out of sync with the status block tag. Consequently, the driver will continually declare the screaming interrupts as its own, thus thwarting the screaming interrupt detection logic. This patch solves the problem by creating a new last_irq_tag member and recording the status block tag in the ISR. The ISR then checks the last_irq_tag for interrupt ownership. Many thanks to John Marvin for the detailed bug report and analysis and Michael Chan for the bugfix. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Tested-by: John Marvin Signed-off-by: David S. Miller commit 62cedd11f63c99efd2962fb69763a09e2778f6e6 Author: Matt Carlson Date: Mon Apr 20 14:52:29 2009 -0700 tg3: Fix SEEPROM accesses The recent NVRAM patches sanitized how the driver deals with NVRAM data, but they failed to bring the SEEPROM interfaces inline with the new strategy. This patch brings the SEEPROM interfaces up to date. This patch also reverts commit 0d489ffb76de0fe804cf06a9d4d11fa7342d74b9 ("tg3: fix big endian MAC address collection failure"). Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Tested-by: Robin Holt Tested-by: James Bottomley Signed-off-by: David S. Miller commit 0d489ffb76de0fe804cf06a9d4d11fa7342d74b9 Author: James Bottomley Date: Mon Apr 13 14:31:51 2009 -0700 tg3: fix big endian MAC address collection failure We noticed on parisc that our broadcoms all swapped MAC addresses going from 2.6.29 to 2.6.30-rc1: Apr 11 07:48:24 ion kernel: eth0: Tigon3 [partno(BCM95700A6) rev 0105] (PCI:66MHz:64-bit) MAC address 00:30:6e:4b:15:59 Apr 13 07:34:34 ion kernel: eth0: Tigon3 [partno(BCM95700A6) rev 0105] (PCI:66MHz:64-bit) MAC address 00:00:59:15:4b:6e The problem patch is: commit 6d348f2c1e0bb1cf7a494b51fc921095ead3f6ae Author: Matt Carlson Date: Wed Feb 25 14:25:52 2009 +0000 tg3: Eliminate tg3_nvram_read_swab() With the root cause being the use of memcpy to set the mac address: memcpy(&dev->dev_addr[0], ((char *)&hi) + 2, 2); memcpy(&dev->dev_addr[2], (char *)&lo, sizeof(lo)); This might work on little endian machines, but it can't on big endian ones. You have to use the original setting mechanism to be correct on all architectures. The attached patch fixes parisc. Signed-off-by: James Bottomley Signed-off-by: David S. Miller commit 284901a90a9e0b812ca3f5f852cbbfb60d10249d Author: Yang Hongyang Date: Mon Apr 6 19:01:15 2009 -0700 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) Replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) Signed-off-by: Yang Hongyang Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 50cf156af7dc68a44409bef636585ef88ebbab34 Author: Yang Hongyang Date: Mon Apr 6 19:01:14 2009 -0700 dma-mapping: replace all DMA_40BIT_MASK macro with DMA_BIT_MASK(40) Replace all DMA_40BIT_MASK macro with DMA_BIT_MASK(40) Signed-off-by: Yang Hongyang Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 6a35528a8346f6e6fd32ed7e51f04d1fa4ca2c01 Author: Yang Hongyang Date: Mon Apr 6 19:01:13 2009 -0700 dma-mapping: replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64) Replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64) Signed-off-by: Yang Hongyang Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 811158b147a503fbdf9773224004ffd32002d1fe Merge: 4e76c5c b26e0ed Author: Linus Torvalds Date: Fri Apr 3 15:24:35 2009 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (28 commits) trivial: Update my email address trivial: NULL noise: drivers/mtd/tests/mtd_*test.c trivial: NULL noise: drivers/media/dvb/frontends/drx397xD_fw.h trivial: Fix misspelling of "Celsius". trivial: remove unused variable 'path' in alloc_file() trivial: fix a pdlfush -> pdflush typo in comment trivial: jbd header comment typo fix for JBD_PARANOID_IOFAIL trivial: wusb: Storage class should be before const qualifier trivial: drivers/char/bsr.c: Storage class should be before const qualifier trivial: h8300: Storage class should be before const qualifier trivial: fix where cgroup documentation is not correctly referred to trivial: Give the right path in Documentation example trivial: MTD: remove EOL from MODULE_DESCRIPTION trivial: Fix typo in bio_split()'s documentation trivial: PWM: fix of #endif comment trivial: fix typos/grammar errors in Kconfig texts trivial: Fix misspelling of firmware trivial: cgroups: documentation typo and spelling corrections trivial: Update contact info for Jochen Hein trivial: fix typo "resgister" -> "register" ... commit 877d03105d04b2c13e241130277fa69c8d2564f0 Author: Nick Andrew Date: Mon Jan 26 11:06:57 2009 +0100 trivial: Fix misspelling of firmware Fix misspelling of firmware. Signed-off-by: Nick Andrew Signed-off-by: Jiri Kosina commit 1383bdb98c01bbd28d72336d1bf614ce79114d29 Author: David S. Miller Date: Sun Mar 29 01:39:49 2009 -0700 tg3: Add GRO support. Signed-off-by: David S. Miller commit 0d2a5068aaa238eba971784585e44130db6d4759 Author: Matt Carlson Date: Wed Feb 25 14:40:42 2009 +0000 tg3: Update copyright and version This patch updates the copyright to 2009 and updates the version number to 3.98. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a6f6cb1cf8ba54efdbbbf61b5b4345b0246da42f Author: Matt Carlson Date: Wed Feb 25 14:27:43 2009 +0000 tg3: Add version reporting for hardware selfboot This patch adds version reporting for hardware selfboot. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7fd764455a13f4d9b37c9b908f07d0758f11d3c5 Author: Matt Carlson Date: Wed Feb 25 14:27:20 2009 +0000 tg3: Add DASH firmware version reporting This patch adds code to report the DASH firmware version. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ff3a7cb25217bddcefd20e72af08a65481db4096 Author: Matt Carlson Date: Wed Feb 25 14:26:58 2009 +0000 tg3: Add legacy bootcode version decoding This patch adds code to obtain the bootcode version for versions of bootcode that do not use the new method. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit acd9c119cc663860fff4f1445ed0f87d82378d99 Author: Matt Carlson Date: Wed Feb 25 14:26:33 2009 +0000 tg3: Refactor firmware version routines This patch reorganizes the firmware version routines in preparation for the following patches. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6d348f2c1e0bb1cf7a494b51fc921095ead3f6ae Author: Matt Carlson Date: Wed Feb 25 14:25:52 2009 +0000 tg3: Eliminate tg3_nvram_read_swab() The remaining uses of tg3_nvram_read_swab() either intended to read the data from NVRAM exactly as tg3_nvram_read_be32() did or hide deeper interpretations of the data. For the former case, a direct replacement of tg3_nvram_read_swab() with tg3_nvram_read_be32() is in order. For the latter case, we remove tg3_nvram_read_swab() and document what the code is really doing. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a9dc529dcd5c541c51cb2ba09bff99580361c576 Author: Matt Carlson Date: Wed Feb 25 14:25:30 2009 +0000 tg3: Correct NVRAM stream endian notations Any software requesting NVRAM data as it exists on NVRAM is necessarily requesting that the results be returned as a bytestream. A bytestream data read in from the device can also be thought to be in big endian format. Therefore, all the LE notations in the driver are mislabeled. This patch converts all LE notations to BE notations, carefully evaluating the surrounding code in the process. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e4f341103e4a2b35f56a0f89802f1b1448e8d04b Author: Matt Carlson Date: Wed Feb 25 14:25:00 2009 +0000 tg3: Invert nvram_read() and nvram_read_swab() This patch removes the blind byteswap of NVRAM data as it is read in. To preserve the logic at the call sites, this patch also inverts every call to tg3_nvram_read() and tg3_nvram_read_swab(). The call swap gets confusing within tg3_nvram_read_le() (LE is a misnomer), but the reader should be able to convince himself / herself that the resulting behavior is still unchanged. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ffbcfed441b9ba74ce77f215eed6925f6a0b82a3 Author: Matt Carlson Date: Wed Feb 25 14:24:28 2009 +0000 tg3: Eliminate nvram routine forward declarations This patch moves all NVRAM routines earlier in the source file to eliminate forward declarations. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 844b3eed8a9efffa4225c811b989c8ff41691a78 Author: Matt Carlson Date: Wed Feb 25 14:23:56 2009 +0000 tg3: Refine tg3_vlan_rx_register() tg3_vlan_rx_register() touches the hardware if netif_running() returns false. This patch fixes the problem. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7e5856bd9644e2299adbf5d0a8916f9cc56f1f36 Author: Matt Carlson Date: Wed Feb 25 14:23:01 2009 +0000 tg3: Update ethtool set_settings error checks The ethtool interface has acquired some new enumerations since the tg3 driver's tg3_set_settings() error checking code was written. The error checking code is no longer complete. This patch rewrites the error checking so that it is future-proofed. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f7b493e02101bb5a0a69a91a8b4b7b002cd60eaf Author: Matt Carlson Date: Wed Feb 25 14:21:52 2009 +0000 tg3: Drop non-VLAN rx pkts larger than the MTU The hardware's MTU is configured so that it will accept packets whose VLAN tag is left inline. This means that the hardware will also accept other packets larger than the desired MTU size. This patch checks for and discards packets that are larger than the requested MTU but are not VLAN tagged frames. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a6435f3a53746a0eb687a9f636cf1941f35f935e Author: Matt Carlson Date: Wed Feb 25 14:21:20 2009 +0000 tg3: Fix 5906 link problems Commit 6833c043f9fc03696fde623914c4a0277df2a0bc introduced the phy auto-powerdown capability. While the APD feature only works for 5761 and 5784 asic revisions, the (harmless portion of the) code was applied to all 5705 and newer devices. However, the 5906 phy departs from the usual design. This commit was interfering with the 5906's ability to negotiate link against some switches. This patch corrects the problem. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e70049b9e74267dd47e1ffa62302073487afcb48 Merge: d18921a f7e603a Author: David S. Miller Date: Tue Feb 24 03:50:29 2009 -0800 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ commit f72b534961ac38dde17824d7693292eeaadf10e8 Author: Roel Kluin Date: Wed Feb 18 17:42:42 2009 -0800 TG3: &&/|| confusion phyid Can't be both TG3_PHY_OUI_1 and TG3_PHY_OUI_2 and TG3_PHY_OUI_3. Signed-off-by: Roel Kluin Acked-by: Matt Carlson Signed-off-by: David S. Miller commit 5e30589521518bff36fd2638b3c3d69679c50436 Merge: ac178ef d2f8d7e Author: David S. Miller Date: Sat Feb 14 23:12:00 2009 -0800 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Conflicts: drivers/net/wireless/iwlwifi/iwl-agn.c drivers/net/wireless/iwlwifi/iwl3945-base.c commit d4675b52a933831d4901217564cba5a434ddd922 Author: Roel Kluin Date: Thu Feb 12 16:33:27 2009 -0800 TG3: limit reaches -1 With while (limit--) { ... } limit reaches -1, so 0 means success. Signed-off-by: Roel Kluin Acked-by: Michael Chan Signed-off-by: David S. Miller commit 3d16543d3235fefca351c10b30c1cca6536f2569 Author: Francois Romieu Date: Mon Jan 19 16:56:50 2009 -0800 tg3: remove extra casting Signed-off-by: Francois Romieu Signed-off-by: David S. Miller commit 288379f050284087578b77e04f040b57db3db3f8 Author: Ben Hutchings Date: Mon Jan 19 16:43:59 2009 -0800 net: Remove redundant NAPI functions Following the removal of the unused struct net_device * parameter from the NAPI functions named *netif_rx_* in commit 908a7a1, they are exactly equivalent to the corresponding *napi_* functions and are therefore redundant. Signed-off-by: Ben Hutchings Acked-by: Neil Horman Signed-off-by: David S. Miller commit 9e9fd12dc0679643c191fc9795a3021807e77de4 Author: Matt Carlson Date: Mon Jan 19 16:57:45 2009 -0800 tg3: Fix firmware loading This patch modifies how the tg3 driver handles device firmware. The patch starts by consolidating David Woodhouse's earlier patch under the same name. Specifically, the patch moves the request_firmware call into a separate tg3_request_firmware() function and calls that function from tg3_open() rather than tg3_init_one(). The patch then goes on to limit the number of devices that will make request_firmware calls. The original firmware patch unnecessarily requested TSO firmware for devices that did not need it. This patch reduces the set of devices making TSO firmware patches to approximately the following device set : 5703, 5704, and 5705. Finally, the patch reduces the effects of a request_firmware() failure. For those devices that are requesting TSO firmware, the driver will turn off the TSO capability. If TSO firmware becomes available at a later time, the device can be closed and then opened again to reacquire the TSO capability. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 077f849de42e58172e25ccb24df4c1a13e82420c Author: Jaswinder Singh Rajput Date: Sun Jan 4 16:11:25 2009 -0800 firmware: convert tg3 driver to request_firmware() Firmware blob looks like this... u8 firmware_major u8 firmware_minor u8 firmware_fix u8 pad __be32 start_address __be32 length (total, including BSS sections to be zeroed) data... (in __be32 words, which is native for the firmware) Signed-off-by: Jaswinder Singh Rajput Signed-off-by: David S. Miller commit 908a7a16b852ffd618a9127be8d62432182d81b4 Author: Neil Horman Date: Mon Dec 22 20:43:12 2008 -0800 net: Remove unused netdev arg from some NAPI interfaces. When the napi api was changed to separate its 1:1 binding to the net_device struct, the netif_rx_[prep|schedule|complete] api failed to remove the now vestigual net_device structure parameter. This patch cleans up that api by properly removing it.. Signed-off-by: Neil Horman Signed-off-by: David S. Miller commit d3d317092b58a6df1d31a4ca90cdb9d2bd4ebffa Author: Matt Carlson Date: Sun Dec 21 20:21:52 2008 -0800 tg3: Update version to 3.97 This patch updates the version number to 3.97. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit aa10f27d99410cff9145bf91b6efc884c7a4871c Author: Matt Carlson Date: Sun Dec 21 20:21:18 2008 -0800 tg3: tg3.h cleanups This patch cleans up the tg3 header file by removing the preprocessor definitions for standard PCI configuration space registers. The driver should be using the standard definitions when needed. The patch continues by removing redundant PHY related definitions and reorganizes some of the remaining entries. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 69fc405318967c7913e5b55cf3906250a26b49d0 Author: Matt Carlson Date: Sun Dec 21 20:19:57 2008 -0800 tg3: Remove unused cfgspc device members This patch removes the pci_bist and pci_hdr_type members from the device structure and removes the code that references them. They are not really used. The patch rounds out the changes by moving the pci_cmd member to plug a structure hole that would have been created. On 32-bit systems, this movement removes a subsequent structure hole later in the structure. On 64-bit systems though, the movement merely consolidates two holes into one larger hole. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 027455adacdc142cc018e555ce391014fa227e70 Author: Matt Carlson Date: Sun Dec 21 20:19:30 2008 -0800 tg3: Cleanup IPV6 LSO This patch attempts to make the relationship between IPV6 checksum offload and IPV6 LSO more obvious. The patch also toggles a bit needed for IPV6 LSO on 5785 and 57780 devices. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2023276ebf074a01eb56f38ed4d04deef1deee67 Author: Matt Carlson Date: Sun Dec 21 20:18:56 2008 -0800 tg3: WOL fixes The first hunk of this patch inverts a flag that was accidentally toggled as part of commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3 ("tg3: Allow WOL for phylib controlled Broadcom phys"). The second hunk of the patch removes the call to device_may_wakeup() in the 5906 config detection path. At the point of the call, the driver shouldn't be querying for WOL capability. It should be detecting and setting it. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bc02ff95fe4ebd3e5ee7455c0aa6f76ebe39ebca Author: Steve Glendinning Date: Tue Dec 16 02:00:48 2008 -0800 net: Refactor full duplex flow control resolution These 4 drivers have identical full duplex flow control resolution functions. This patch changes them all to use one common function. The function in question decides whether a device should enable TX and RX flow control in a standard way (IEEE 802.3-2005 table 28B-3), so this should also be useful for other drivers. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit e18ce3465477502108187c6c08b6423fb784a313 Author: Steve Glendinning Date: Tue Dec 16 02:00:00 2008 -0800 net: Move flow control definitions to mii.h flags used within drivers for indicating tx and rx flow control are defined in 4 drivers (and probably more), move these constants to mii.h. The 3 SMSC drivers use the same constants (FLOW_CTRL_TX), but TG3 uses TG3_FLOW_CTRL_TX, so this patch also renames the constants within TG3. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit e245a3855eec42127b722ed9688a49ec3f3c9a27 Author: Matt Carlson Date: Fri Nov 21 17:23:26 2008 -0800 tg3: Update version to 3.96 This patch updates the version number to 3.96. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 321d32a052d6b5f71111ebad4fbebea5577f8974 Author: Matt Carlson Date: Fri Nov 21 17:22:19 2008 -0800 tg3: Add 57780 support This patch adds support for the 57780 ASIC revision. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 22435849a6dcde2ce10d1870aba461a54e347fe3 Author: Matt Carlson Date: Fri Nov 21 17:21:13 2008 -0800 tg3: Allow GPHY powerdown on 5761 The ENABLE_APE flag tells the driver whether or not the device has an Application Processing Engine (APE). The APE does not need the PHY to be powered unless it is running management firmware. For backwards compatibility, management firmware will still set the ENABLE_ASF bit. Consequently, there is no reason to consider the ENABLE_APE flag when deciding whether or not to power down the phy. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d5fe488a7b59e41b98b91137805159466b7b49c2 Author: Matt Carlson Date: Fri Nov 21 17:20:32 2008 -0800 tg3: Embrace pci_ioremap_bar() Per Dave Miller's suggestion, replace the remaining ioremap_nocache() call with pci_ioremap_bar(). Remove the two IORESOURCE_MEM checks as they are redundant. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit dfe00d7d890134f9cafda49e3e60e6ce27af91ed Author: Matt Carlson Date: Fri Nov 21 17:19:41 2008 -0800 tg3: Extract FW ver from alt NVRAM formats This patch extracts the bootcode firmware version from the alternate selfboot patch NVRAM format. This format is used on the 5784, 5761 and some newer devices. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6833c043f9fc03696fde623914c4a0277df2a0bc Author: Matt Carlson Date: Fri Nov 21 17:18:59 2008 -0800 tg3: Enable GPHY APD on select devices GPHY Autopowerdown (APD) is a way to save power when energy is not detected on the wire. At the moment, only the 5784 and 5761 are capable of enabling this mode. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5e7dfd0fb94abed04f59481d1ce0cc06a892048a Author: Matt Carlson Date: Fri Nov 21 17:18:16 2008 -0800 tg3: Prevent corruption at 10 / 100Mbps w CLKREQ This patch disables CLKREQ at 10Mbps and 100Mbps to workaround a TX BD corruption issue. This problem only affects the 5784 and 5761 (and 57780 AX) ASIC revisions. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 52f4490c3b6dcb1e8dec7ff9f1c35f09bd7c136f Author: Matt Carlson Date: Fri Nov 21 17:17:04 2008 -0800 tg3: Qualify use of tp->pcix_cap This patch makes sure the device is a PCIX device before attempting to use the pcix_cap device structure member. This is prep work for the following patch. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ad8292681a629cdb16bb19ee7d721b457c32a23a Author: Matt Carlson Date: Fri Nov 21 17:16:16 2008 -0800 tg3: Use NET_IP_ALIGN This patch replaces hardcoded 2's with the NET_IP_ALIGN constant or TG3_RAW_IP_ALIGN where appropriate. Some platforms can redefine the NET_IP_ALIGN definition to zero if unaligned DMA transfers cost more than the IP header alignment gains. This patch represents a performance improvement when using the 5701 on these platforms. The copy path can be avoided. TG3_RAW_IP_ALIGN is used in cases where we always want to align the IP header on dword boundaries. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 008298231abbeb91bc7be9e8b078607b816d1a4a Author: Stephen Hemminger Date: Thu Nov 20 20:14:53 2008 -0800 netdev: add more functions to netdevice ops This patch moves neigh_setup and hard_start_xmit into the network device ops structure. For bisection, fix all the previously converted drivers as well. Bonding driver took the biggest hit on this. Added a prefetch of the hard_start_xmit in the fast path to try and reduce any impact this would have. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 7c7d64b8c00bcf9519e5ec38368bc7afdc185c51 Author: Stephen Hemminger Date: Wed Nov 19 22:25:36 2008 -0800 tg3: convert to net_device_ops Convert this driver to network device ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit fb28ad35906af2f042c94e2f9c0f898ef9acfa37 Author: Kay Sievers Date: Mon Nov 10 13:55:14 2008 -0800 net: struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Marcel Holtmann Acked-by: Greg Kroah-Hartman Signed-off-by: Kay Sievers Signed-off-by: David S. Miller commit babcda74e9d96bb58fd9c6c5112dbdbff169e695 Author: David S. Miller Date: Mon Nov 3 21:11:17 2008 -0800 drivers/net: Kill now superfluous ->last_rx stores. The generic packet receive code takes care of setting netdev->last_rx when necessary, for the sake of the bonding ARP monitor. Drivers need not do it any more. Some cases had to be skipped over because the drivers were making use of the ->last_rx value themselves. Signed-off-by: David S. Miller commit fa228b3fcb724ce2281a61737e09a8afa4fed542 Author: Matt Carlson Date: Mon Nov 3 16:58:53 2008 -0800 tg3: Update version to 3.95 This patch updates the version to 3.95. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fcb389dfd842be54545cb436b3437f07da10115c Author: Matt Carlson Date: Mon Nov 3 16:55:44 2008 -0800 tg3: 5785 enhancements This patch refines support for the 5785 device. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9c61d6bc56bf0a5fb1ebfcf4c168cc5ce30e153b Author: Matt Carlson Date: Mon Nov 3 16:54:56 2008 -0800 tg3: Refine phylib support This patch refines the phylib support in the tg3 driver. The patch does the following things : * Rename tg3_mdio_config() to tg3_mdio_config_5785(). The 5785 will be the only device that will use it so the name might as well reflect that. * Fix a memory leak if mdiobus_register() fails. * Add code to deal with phy device detection failures. * Add code to correct the supported list of phy features based on the MAC <=> PHY interface. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3 Author: Matt Carlson Date: Mon Nov 3 16:54:15 2008 -0800 tg3: Allow WOL for phylib controlled Broadcom phys This patch allows WOL to be enabled for Broadcom phys under phylib control. The only exception is the AC131, which has a completely different register set. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 05ac4cb7dff4515447dce6e9a56c4de6b7e426d5 Author: Matt Carlson Date: Mon Nov 3 16:53:46 2008 -0800 tg3: Refine power management and WOL code Commit 12dac0756d357325b107fe6ec24921ec38661839 ("tg3: adapt tg3 to use reworked PCI PM code") introduced the new PCI PM API to the tg3 driver. The patch was understandably conservative, so this patch elaborates on that work. The patch starts by creating a single point in tg3_set_power_state() to decide whether or not to enable WOL. The rest of the code in tg3_set_power_state() was then pivoted to use the result of this decision. The patch then makes sure the device is allowed to wakeup before reporting whether or not WOL is currently enabled. The final hunks of the patch consolidate where the WOL capability and WOL enabled flags are set to a single location. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit df59c9403557397aafbe291533d113b752da7661 Author: Matt Carlson Date: Mon Nov 3 16:52:56 2008 -0800 tg3: Move phylib report to end of tg3_init_one Currently, phylib reports appear with a eth%d prefix. Move the line after register_netdev() and place it alongside the other informative messages. Update nearby informative messages accordingly. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b2b98d4acc58a6f36b731e666c6ebd901cd6a27e Author: Matt Carlson Date: Mon Nov 3 16:52:32 2008 -0800 tg3: Do not enable APE on bcm5700 With older versions of the NVRAM format, the driver may mistakenly determine that APE is enabled. Make sure this doesn't happen by restricting the ENABLE_APE check to devices known to have more recent NVRAM image formats. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bcb37f6cb57e565e7bd342272652c3a50cf88761 Author: Matt Carlson Date: Mon Nov 3 16:52:09 2008 -0800 tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag This patch reclaims the TG3_FLG3_5761_5784_AX_FIXES flag. It only used twice in non-fast paths. This patch also consolidates some other places where specific 5784 AX chip revisions can be generalized. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3f007891da0ad3d9192e9aa13ce4e3aaf20c33fa Author: Matt Carlson Date: Mon Nov 3 16:51:36 2008 -0800 tg3: Preserve LAA when device control is released This patch moves the __tg3_set_mac_addr() function earlier in the file listing, to avoid a function prototype, and calls the function to restore the LAA after a driver unload chip reset. With this code in place, the administrator can wake the machine using the LAA. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b2aee1545dc3c05c8d5cf116de1e92907e98009b Author: Matt Carlson Date: Mon Nov 3 16:51:11 2008 -0800 tg3: Preserve DASH connectivity when WOL enabled DASH firmware runs on the APE side of the chip, but it requires a few MAC to be programmed correctly. When WOL is enabled and management firmware is disabled, incoming packets are evaluated and discarded at the chip's rule processor. When management firmware is enabled, the hardware must be informed that there are agents further up the stack that still use the incoming frames. Normally management firmware will configure the MAC correctly on its own, but there can be cases where the setting could get clobbered by the driver. The first hunk of this patch preserves this setting. The second hunk of this patch wipes out the driver present signature of the APE memory space. By doing so, the DASH firmware can assume driver absent behavior. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 63532394af307795ea637a283bd1fd057f5dfcea Author: Matt Carlson Date: Mon Nov 3 16:49:57 2008 -0800 tg3: Use pci_ioremap_bar() This patch replaces the existing APE register mapping code with a call to pci_ioremap_bar(). The code that maps the main device register space did not undergo a similar change because the information derived from the pci_resource_start() and pci_resource_len() is still used to populate the (optional) mem_start and mem_end netdevice members. Replace hardcoded constants where appropriate. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c88e668b52c8cd8bc55b6734c7dfbb0cb005d445 Author: Matt Carlson Date: Mon Nov 3 16:49:18 2008 -0800 tg3: Add 5761S support This patch adds support for the 5761S chip variants. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e174961ca1a0b28f7abf0be47973ad57cb74e5f0 Author: Johannes Berg Date: Mon Oct 27 15:59:26 2008 -0700 net: convert print_mac to %pM This converts pretty much everything to print_mac. There were a few things that had conflicts which I have just dropped for now, no harm done. I've built an allyesconfig with this and looked at the files that weren't built very carefully, but it's a huge patch. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit 298cf9beb9679522de995e249eccbd82f7c51999 Author: Lennert Buytenhek Date: Wed Oct 8 16:29:57 2008 -0700 phylib: move to dynamic allocation of struct mii_bus This patch introduces mdiobus_alloc() and mdiobus_free(), and makes all mdio bus drivers use these functions to allocate their struct mii_bus'es dynamically. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller Acked-by: Andy Fleming commit 18ee49ddb0d242ed1d0e273038d5e4f6de7379d3 Author: Lennert Buytenhek Date: Wed Oct 1 15:41:33 2008 +0000 phylib: rename mii_bus::dev to mii_bus::parent In preparation of giving mii_bus objects a device tree presence of their own, rename struct mii_bus's ->dev argument to ->parent, since having a 'struct device *dev' that points to our parent device conflicts with introducing a 'struct device dev' representing our own device. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller Acked-by: Andy Fleming commit 638266f7e879e34de4a4635049c15f5a58505e75 Author: David S. Miller Date: Thu Sep 11 15:45:19 2008 -0700 tg3: Fix DMA mapping leak in tigon3_dma_hwbug_workaround(). Noticed by Michael Chan. Signed-off-by: David S. Miller commit 90079ce89aa65e17f36ac2b09110720c51d874f4 Author: David S. Miller Date: Thu Sep 11 04:52:51 2008 -0700 tg3: Use SKB DMA helper functions for TX. Signed-off-by: David S. Miller commit 23197916c447a1623d196e6547781180905f0bb2 Author: Matt Carlson Date: Fri Aug 15 14:11:19 2008 -0700 tg3: Update version to 3.94 This patch updates the version number to 3.94. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 816f8b86621000fc82e16ae5f172164de761d5eb Author: Stefan Buehler Date: Fri Aug 15 14:10:54 2008 -0700 tg3: fix 64 bit counter for ethtool stats Ethtool stats are 64-bits in length. net_device_stats members are unsigned long types. When gathering information for a get_ethtool_stats call, the driver will call a driver-private, inlined get_stat64() function, which returns an unsigned long value. This call will inadvertently mask off the upper 32-bits of a stat on 32-bit machines. This patch defines a new get_estat() inline function and modifies the ESTAT_ADD() macro to use it. Signed-off-by: Stefan Buehler Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4ba526ced990f4d61ee8d65fe8a6f0745e8e455c Author: Matt Carlson Date: Fri Aug 15 14:10:04 2008 -0700 tg3: Fix firmware event timeouts The git commit 7c5026aa9b81dd45df8d3f4e0be73e485976a8b6 ("tg3: Add link state reporting to UMP firmware") introduced code that waits for previous firmware events to be serviced before attempting to submit a new event. Unfortunately that patch contained a bug that cause the driver to wait 2.5 seconds, rather than 2.5 milliseconds as intended. This patch fixes that bug. This bug revealed that not all firmware versions service driver events though. Since we do not know which versions of the firmware do and don't service these events, the driver needs some way to minimize the effects of the delay. This patch solves the problem by recording a jiffies timestamp when it submits an event to the hardware. If the jiffies counter shows that 2.5 milliseconds have already passed, a wait is not needed and the driver can proceed to submit a new event. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bc7959b2cbb57393b625b423c73e6fd07610257f Author: Matt Carlson Date: Fri Aug 15 14:08:55 2008 -0700 tg3: Turn off ASF "driver alive" heartbeats for APE The ENABLE_ASF flag is set when DASH is enabled on the NIC, but DASH does not run on the RX CPU. Instead it runs on the APE. Consequently, the driver does not need to send "driver alive" updates to the RX CPU when the APE is present. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3bda12589646caa22b2ed4ef7cf82d17ea59d7a6 Author: Matt Carlson Date: Fri Aug 15 14:08:22 2008 -0700 tg3: Preserve register settings for DASH Broadcom's DASH (Desktop and mobile Architecture for System Hardware) implementation requires that the driver preserve particular register settings. If the driver does not preserve them, communication with the DASH firmware will be lost. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 731fd79c133dc04cabee17ecfa7661189a8df5c8 Author: Matt Carlson Date: Fri Aug 15 14:07:51 2008 -0700 tg3: Refine APE status check Recently, more status bits have been added to the APE status register. This patch refines the status register check so that the driver can send more events than it would have otherwise. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 77b483f132ba25edf4ef455dd87a91ab7bbf4170 Author: Matt Carlson Date: Fri Aug 15 14:07:24 2008 -0700 tg3: Add APE register access locking If the driver resets the chip while the APE is performing a register access, that register access will never complete and the APE will hang indefinitely. To prevent this race condition, the driver must acquire an APE mutex before resetting the chip. The APE will not attempt a register access until it acquires this lock. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2f751b67a8be698cec52f786910ef4f0beffe9a7 Author: Matt Carlson Date: Mon Aug 4 23:17:34 2008 -0700 tg3: Fix 'scheduling while atomic' errors This patch fixes the 'scheduling while atomic' errors introduced by commit 12dac0756d357325b107fe6ec24921ec38661839 ("tg3: adapt tg3 to use reworked PCI PM code"). The first hunk of the patch removes an unnecessary tg3_set_power_state() call. The chip will already be in the D0 state either due to a chip reset or through a previous call to tg3_set_power_state(). The second hunk of the patch moves the tg3_set_power_state() call outside the critical section guarded by tg3_full_lock() and tg3_full_unlock() functions. The power state of the device is and should be outside the lock's domain and all other tg3_set_power_state() calls support this. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 12dac0756d357325b107fe6ec24921ec38661839 Author: Rafael J. Wysocki Date: Wed Jul 30 16:37:33 2008 -0700 tg3: adapt tg3 to use reworked PCI PM code Adapt the tg3 driver to use the reworked PCI PM and make it use the exported PCI PM core functions instead of accessing the PCI PM registers directly by itself. Signed-off-by: Rafael J. Wysocki Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 65b53e4cc90e59936733b3b95b9451d2ca47528d Merge: 788c0a5 2e761e0 Author: David S. Miller Date: Tue Jun 10 02:22:26 2008 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/tg3.c drivers/net/wireless/rt2x00/rt2x00dev.c net/mac80211/ieee80211_i.h commit 1b84d9462a93ccfa99f725aad744ab4d1af8402b Author: Matt Carlson Date: Mon Jun 9 15:41:33 2008 -0700 tg3: Update version to 3.92.1 This patch increments the version to 3.92.1. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5f0c4a3cb6fda7c505f8c916b54ea90205feed68 Author: Matt Carlson Date: Mon Jun 9 15:41:12 2008 -0700 tg3: Fix 5761 WOL On 5761 non-e devices, two problems prevent the administrator from overriding the WOL settings in the device's NVRAM. The first problem is that GPIO 0 and GPIO 2 have been swapped. This change prevented the administrator from turning on WOL when it is disabled in NVRAM. The fix is to add a new path for the 5761 that swaps the two GPIOs in the code as well. The second problem is that GPIO 1 could not be toggled by the driver because the GPIO is shared with the debug UART GPIO. This will prevent the administrator from being able to turn WOL off if it was enabled in NVRAM. The fix is to always disable the debug UART after a GRC reset. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0ba11fb307a4f18c11df6f5f255158ce055a2a16 Author: Matt Carlson Date: Mon Jun 9 15:40:26 2008 -0700 tg3: Fix a flags typo This patch fixes a problem where the TG3_FLAG_10_100_ONLY flag was testing against the wrong flags variable. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2bd3ed0479c35f7c8dadecf72b725ca0c20ea015 Author: Matt Carlson Date: Mon Jun 9 15:39:55 2008 -0700 tg3: Fix 5714S / 5715S / 5780S link failures The git commit ef167e27039eeaea6d3cdd5c547b082e89840bdd entitled "Fix supporting flowctrl code" introduced a bug that prevents 5714S, 5715S and 5780S devices from falling back to a forced link mode. The problem is that the added flow control check will always fail if flow control is set to autoneg and either RX or TX (or both) flow control is enabled. The driver defaults to setting flow control to autoneg and advertises both RX and TX flow control. The fix is to remove the errant check. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a5b17df04c4ad8f25fc598fce37fccb4b387c94c Merge: b79eeeb c03571a Author: David S. Miller Date: Thu May 29 03:31:03 2008 -0700 Merge branch 'upstream-next-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 commit bb9122b829e960f4e242c04c2b38c12efb37757b Author: Matt Carlson Date: Sun May 25 23:51:01 2008 -0700 tg3: Update version to 3.93 This patch increments the version to 3.93. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit a9daf36746b1fb5c2db8d164ca70c30c63a0d7b2 Author: Matt Carlson Date: Sun May 25 23:49:44 2008 -0700 tg3: Add shmem options. This patch adds some options obtained through shared memory. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 57e6983cbde91b4569b4014b933f3a16e12b99fd Author: Matt Carlson Date: Sun May 25 23:48:31 2008 -0700 tg3: Add 5785 ASIC revision This patch added the 5785 device ID and ASIC revision to the code. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit b02fd9e3ac118037549baeb86fbe0718561db17f Author: Matt Carlson Date: Sun May 25 23:47:41 2008 -0700 tg3: Add libphy support. This patch introduces the libphy support. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 158d7abdae85e9ac43d99780c372d79c119f7626 Author: Matt Carlson Date: Thu May 29 01:37:54 2008 -0700 tg3: Add mdio bus registration This patch introduces code to register and unregister the tg3 mdio bus with the system. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit dd47700310ff929b439223105364c9ee3db81511 Author: Matt Carlson Date: Sun May 25 23:45:58 2008 -0700 tg3: Add TG3_FLG3_USE_PHYLIB This patch introduces the TG3_FLG3_USE_PHYLIB flag and applies it to some select places. This work makes later patches a little easier to read. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit f51f3562d1c7df6c5a4ffee2185d713e98e76aa0 Author: Matt Carlson Date: Sun May 25 23:45:08 2008 -0700 tg3: Code cleanup. This patch applies cleanups that would otherwise clutter later patches. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 95e2869adc13041baf3beecb97ab8e38c01525ae Author: Matt Carlson Date: Sun May 25 23:44:14 2008 -0700 tg3: Pure code movement. This patch moves some functions towards the top of the file to avoid unnecessary function prototypes. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 855e1111f3806905b410b745e696fec4f5dac724 Author: Stephen Hemminger Date: Wed Apr 16 16:37:28 2008 -0700 tg3: remove unneeded semicolons Remove extraneous semicolons after switch and conditional statements. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik commit 920e37f76b19b4a3d8a1a3144cd6ee24e0e7f5b4 Author: Matt Carlson Date: Fri May 2 16:49:50 2008 -0700 tg3: Update version to 3.92 This patch updates the version number to 3.92. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7c5026aa9b81dd45df8d3f4e0be73e485976a8b6 Author: Matt Carlson Date: Fri May 2 16:49:29 2008 -0700 tg3: Add link state reporting to UMP firmware All variants of the 5714, 5715, and 5780 offer a feature called the "Universal Management Port". This feature is implemented in firmware and is largely transparent to the driver, except... It turns out that the UMP firmware needs to know the current status of the link. Because the firmware cannot touch the PHY registers while the driver is in control of the device, it needs the driver to report link status changes through an additional handshaking mechanism. Without this handshake, it has been observed in the field that the UMP firmware will not operate correctly. This patch implements the new handshake with the UMP firmware. Since the handshake uses the same mechanism ASF heartbeats use, code was added to detect and wait for completion of a pending previous event. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 109115e1991824b88306b374b763d6857b292aeb Author: Matt Carlson Date: Fri May 2 16:48:59 2008 -0700 tg3: Fix ethtool loopback test for 5761 BX devices A CPMU related loopback test bug existed for AX revisions of the 5761. While that errata has been fixed, the CPMU still slows down the core clock too far to run the loopback test successfully. This patch disables the CPMU LINK_SPEED mode just like we do with the AX revisions of the 5761 and all revisions of the 5784. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fd1122a2593d0bbe19856e3943c859ebfe563583 Author: Matt Carlson Date: Fri May 2 16:48:36 2008 -0700 tg3: Fix 5761 NVRAM sizes The 5761 NVRAM sizes assigned to the nvram_size member are half as big as they should be. This patch corrects the NVRAM sizes and replaces the hardcoded constants with preprocessor constants for readability. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8ef214288622bf523a3b3096958292a1c63132ad Author: Matt Carlson Date: Fri May 2 16:47:53 2008 -0700 tg3: Use constant 500KHz MI clock on adapters with a CPMU The MI clock is not configured correctly on adapters with the CPMU present. The tg3 driver has code which statically sets the MI clock to be a fraction of the speed at which the core clock is running. However, the CPMU can change the adapter's core clock frequency based on operating conditions. Consequently, the MI will run slow when the core's clock has been slowed down. There is a new 500KHz constant frequency clock available on adapters with a CPMU. This patch removes the static core clock scaling and configures the MI clock to use this new 500KHz clock instead. Running the MI clock at slower speeds will not directly result in data corruption, but it does challenge the PHY read and write routine timeouts. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 801678c5a3b4c79236970bcca27c733f5559e0d1 Author: Hirofumi Nakagawa Date: Tue Apr 29 01:03:09 2008 -0700 Remove duplicated unlikely() in IS_ERR() Some drivers have duplicated unlikely() macros. IS_ERR() already has unlikely() in itself. This patch cleans up such pointless code. Signed-off-by: Hirofumi Nakagawa Acked-by: David S. Miller Acked-by: Jeff Garzik Cc: Paul Clements Cc: Richard Purdie Cc: Alessandro Zummo Cc: David Brownell Cc: James Bottomley Cc: Michael Halcrow Cc: Anton Altaparmakov Cc: Al Viro Cc: Carsten Otte Cc: Patrick McHardy Cc: Paul Mundt Cc: Jaroslav Kysela Cc: Takashi Iwai Acked-by: Mike Frysinger Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 78c6146f16d45f52c33ddb6b48c10fc6cfc53659 Author: Eric Dumazet Date: Thu Apr 24 23:33:06 2008 -0700 tg3: sparse cleanup Fix the following sparse warning : drivers/net/tg3.c:4025:3: warning: context imbalance in 'tg3_restart_hw' - unexpected unlock Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 41588ba1ae166eaba0a70abf2d7ff064ad9331d3 Author: Matt Carlson Date: Sat Apr 19 18:12:33 2008 -0700 tg3: 5701 DMA corruption fix Herbert Xu's commit fb93134dfc2a6e6fbedc7c270a31da03fce88db9, entitled "[TCP]: Fix size calculation in sk_stream_alloc_pskb", has triggered a bug in the 5701 where the 5701 DMA engine will corrupt outgoing packets. This problem only happens when the starting address of the packet matches a certain range of offsets and only when the 5701 is placed downstream of a particular Intel bridge. This patch detects the problematic bridge and if present, readjusts the starting address of the packet data to a dword aligned boundary. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2de58e30db3f7e83592e22fb459dd6695b648889 Author: Sergei Shtylyov Date: Sat Apr 12 18:30:58 2008 -0700 tg3: fix MMIO for PPC 44x platforms The driver stores the PCI resource addresses into 'unsigned long' variable before calling ioremap_nocache() on them. This warrants kernel oops when the registers are accessed on PPC 44x platforms which (being 32-bit) have PCI memory space mapped beyond 4 GB. The arch/ppc/ kernel has a fixup in ioremap() that creates an illusion that the PCI memory resource is mapped below 4 GB, but arch/powerpc/ code got rid of this trick, having instead CONFIG_RESOURCES_64BIT enabled. [ Bump driver version and release date -DaveM ] Signed-off-by: Sergei Shtylyov Signed-off-by: David S. Miller commit b2a5c19ca0315723cecb9489ff8b67c4f17367b4 Author: Matt Carlson Date: Thu Apr 3 21:44:44 2008 -0700 [TG3]: Add PHY workaround for 5784 The 5784 B step and newer chips require the PHY DSPs to be fine-tuned based on one-time programmable values stored in the chip. This is essential to achieve optimal PHY operations especially when using long cables. We also need to properly handle the 10Mbit RX bit in the CPMU_CTRL register during PHY reset. Update version to 3.89. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7582a33557cc6dc42b4c6918c6e7f8e465b72a70 Author: David S. Miller Date: Thu Mar 20 15:53:15 2008 -0700 [TG3]: Fix build warning on sparc32. Sparc MAC address support should be protected consistently with CONFIG_SPARC, but there was a stray CONFIG_SPARC64 case. Bump driver version and release date. Reported by Andrew Morton. Signed-off-by: David S. Miller commit 759afc31332aed66bde20743e7e2d1e47b08aaeb Author: Stephen Hemminger Date: Sat Feb 23 19:51:59 2008 -0800 tg3: ethtool phys_id default When asked to blink LEDs the tg3 driver behaves when using: ethtool -p ethX The default value for data is zero, and other drivers interpret this as blink forever (or at least a really long time). The tg3 driver interprets this as blink once. All drivers should have the same behaviour. Signed-off-by: Stephen Hemminger Acked-by: Michael Chan Signed-off-by: David S. Miller commit 79ea13ce07c951bb4d95471e7300baa0f1be9e78 Author: Al Viro Date: Thu Jan 24 02:06:46 2008 -0800 NULL noise in drivers/net Signed-off-by: Al Viro Signed-off-by: Jeff Garzik Signed-off-by: David S. Miller commit 255f97b3117cbe10b2493f7f12d66a81dfbcdf43 Author: Matt Carlson Date: Thu Dec 20 20:10:38 2007 -0800 [TG3]: Update version to 3.87 This patch updates the version number to 3.87. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ef167e27039eeaea6d3cdd5c547b082e89840bdd Author: Matt Carlson Date: Thu Dec 20 20:10:01 2007 -0800 [TG3]: Fix supporting flowctrl code This patch does three things. It modifies tg3_setup_flow_control() to use the administrator requested flow control settings if autonegotiation is turned off. It slightly modifies the tg3_setup_fiber_mii_phy() function to account for this new use case. And finally, it does the same for tg3_setup_copper_phy(). The copper modifications are more than a small multi-line change. The new code makes an attempt to avoid a link renegotiation if the link is active at half duplex and the only difference between the current advertised settings and requested advertised settings is the flow control advertisements. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5be73b471bbed9ca61ddfd952a2cb7701f94f034 Author: Matt Carlson Date: Thu Dec 20 20:09:29 2007 -0800 [TG3]: Correct sw autoneg flow control advertisements This patch modifies the software autoneg code to use the administrator specified flow control parameters. Since the autonegotiation code uses alternative flow control enumerations, the 1000-BaseX utility functions are used and code was added to convert the definitions to and from the alternate enumerations. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 82cd3d11f359763da445a7636ee683a922aaf025 Author: Matt Carlson Date: Thu Dec 20 20:09:00 2007 -0800 [TG3]: Correct 5704S flowctrl advertisements This patch modifies the 5704S hardware autoneg code to use the administrator specified flow control parameters. Since the 5704S uses device specific flow control enumerations, the 1000-BaseX utility functions are used and code was added to convert the definitions to and from the proprietary enumerations. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c98f6e3be1d1b9bc9299d84da4f0b1ea9a50f392 Author: Matt Carlson Date: Thu Dec 20 20:08:32 2007 -0800 [TG3]: Replace some magic 5704S constants This patch replaces magic values with preprocessor definitions for the sg_dig_ctrl and sg_dig_status registers. This is preparatory work for the next patch. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ba4d07a8483e6ec0de3194960f8aca862711454c Author: Matt Carlson Date: Thu Dec 20 20:08:00 2007 -0800 [TG3]: Add 1000T & 1000X flowctl adv helpers This patch adds two functions designed to convert abstract TX & RX flow control parameters to 1000-BaseT and 1000-BaseX autonegotiation advertisements. Code that uses standard definitions which statically advertises TX & RX flow control has been replaced with code that configures the advertisements based on administrator dictated preferences. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 95937268b7c4c334a3d98f7177c7d5a00b74b2e7 Author: Matt Carlson Date: Thu Dec 20 20:06:19 2007 -0800 [TG3]: Add 1000T & 1000X flowctrl resolvers This patch adds two new utility functions to resolve flow control. One function resolves flow control based on 1000-BaseT register definitions. The other resolves flow control based on 1000-Base X register definitions. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8d018621085b8d00511768c343d941676bd77ee9 Author: Matt Carlson Date: Thu Dec 20 20:05:44 2007 -0800 [TG3]: Separate requested and actual flow control parameters This patch removes the TX and RX flow control flags from tg3_flags and adds two new flow control variables, flowctrl and active_flowctrl. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d66453722873e1595b7934acbdcd5cdfa6982d6c Author: Joe Perches Date: Thu Dec 20 04:06:59 2007 -0800 [TG3]: Use print_mac Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit 286e310f94b9459f3fa975333781c969b1041522 Author: Al Viro Date: Mon Dec 17 23:00:31 2007 -0800 [TG3]: Endianness bugfix. tg3_nvram_write_block_unbuffered() is reading data from nvram into allocated buffer before overwriting a part of it with user-supplied data. Then it feeds the entire page back to nvram. It should be storing the words it had read as little-endian, not as host-endian. Note that tg3_set_eeprom() does exactly that for padding the same data to full words before it gets passed down to tg3_nvram_write_block() and then to tg3_nvram_write_block_unbuffered(). Moreover, when we get to sending the entire thing back to nvram, we go through it word-by-word, doing essentially writel(swab32(le32_to_cpu(word)), ...) so if we want them to reach the card in host-independent endianness, we'd better really have all that buffer filled with fixed-endian. For user-supplied part we obviously do have that (it's an array of octets memcpy'd in), ditto for padding of user-supplied part to word boundaries (taken care of in tg3_set_eeprom()). The rest of the buffer gets filled by tg3_nvram_write_block_unbuffered() and it would damn better be consistent with that (and with tg3_get_eeprom(), while we are at it - there we also convert the words read from nvram to little-endian before returning the buffer to user). The bug should get triggered on big-endian boxen when set_eeprom is done for less than entire page. Then the words that should've been unaffected at all will actually get byteswapped in place in nvram. Signed-off-by: Al Viro Signed-off-by: David S. Miller commit b9fc7dc514566e9788c7f064bb08f8b6e2fe6f72 Author: Al Viro Date: Mon Dec 17 22:59:57 2007 -0800 [TG3]: Endianness annotations. Fixed misannotations, introduced a new helper - tg3_nvram_read_le(). It gets __le32 * instead of u32 * and puts there the value converted to little-endian. A lot of callers of tg3_nvram_read() were doing that; converted them to tg3_nvram_read_le(). At that point the driver is practically endian-clean; the only remaining place is an actual bug, AFAICS; will be dealt with in the next patch. Signed-off-by: Al Viro Signed-off-by: David S. Miller commit 458c096ed787b2572303a7087d23bfab06b450be Author: Matt Carlson Date: Mon Nov 12 21:23:21 2007 -0800 [TG3]: Update version to 3.86 This patch updates the version number to 3.86 Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3bebab591413929c405925a8fdd98f5b0d660e39 Author: Matt Carlson Date: Mon Nov 12 21:22:40 2007 -0800 [TG3]: MII => TP This patch changes the PHY type reported through ethtool for copper devices from MII to TP. The latter is more accurate. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b5af7126ea7586eb8f030280c027611c42a6a9c7 Author: Matt Carlson Date: Mon Nov 12 21:22:02 2007 -0800 [TG3]: Add A1 revs This patch adds the A1 revision of 5784, 5764, and 5761, and applies all previous bugfixes. In places where the list of devices gets too long, the patch uses a new TG3_FLG3_5761_5784_AX_FIXES flag instead. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5f5c51e3d473d8ddc0c32156c2b27e2fe92b9b57 Author: Matt Carlson Date: Mon Nov 12 21:19:37 2007 -0800 [TG3]: Increase the PCI MRRS Previous devices hardcoded the PCI Maximum Read Request Size to 4K. To better comply with the PCI spec, the hardware now defaults the MRRS to 512 bytes. This will yield poor driver performance if left untouched. This patch increases the MRRS to 4K on driver initialization. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit aa6c91fe5913faa2cd2a62de993a3130799412b1 Author: Matt Carlson Date: Mon Nov 12 21:18:04 2007 -0800 [TG3]: Prescaler fix Internal hardware timers become inaccurate after link events. Clock frequency switches performed by the CPMU fail to adjust timer prescalers. The fix is to detect core clock frequency changes during link events and adjust the timer prescalers accordingly. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5f60891b80f1a0f0a0015b084f4838ae8b9637c7 Author: Matt Carlson Date: Mon Nov 12 21:17:07 2007 -0800 [TG3]: Limit 5784 / 5764 to MAC LED mode Most 5784 / 5764 LED modes do not work as expected because of a hardware bug. This patch forces the LED mode to be in MAC LED mode. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 662f38d242488cfdcda7b3684ac610d3e4d568a7 Author: Matt Carlson Date: Mon Nov 12 21:16:17 2007 -0800 [TG3]: Disable GPHY autopowerdown New CPMU devices contend with the GPHY for power management. The GPHY autopowerdown feature is enabled by default in the PHY and thus needs to be disabled after every PHY reset. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e875093c9659d2a9f3923aa9ee1b89ef40cf95b9 Author: Matt Carlson Date: Mon Nov 12 21:11:51 2007 -0800 [TG3]: CPMU adjustments for loopback tests This patch adds the LINK_SPEED mode to the list of CPMU modes that can cause the loopback tests to fail. These bugs are planned to be fixed in future revisions of the chip, so the patch qualifies the fixes as such. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a5767dec1980463aef5614b7ad8a800bb4f4c353 Author: Matt Carlson Date: Mon Nov 12 21:10:58 2007 -0800 [TG3]: Fix nvram selftest failures Newer devices contain bootcode in the chip's private ROM area. This bootcode is called selfboot. Selfboot can be patched in the device's NVRAM and the patches can have several formats. In one particular format, the checksum calculation needs to be slightly modified. This patch adjusts the NVRAM test code for that case, and add support for the missing formats. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9acb961e7d780291659bf950b3b718ff9e085620 Author: Matt Carlson Date: Mon Nov 12 21:10:06 2007 -0800 [TG3]: 5784 / 5764 DMA engine lockup fix 5784 and 5764 devices lock up when the link speed is 10Mbps, the CPMU link speed mode is enabled, and the MAC clock is running at 1.5Mhz. The fix is to run the MAC clock at faster speeds. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 84af67fdf07c4fce664dbca87a8d5e2802901bff Author: Matt Carlson Date: Mon Nov 12 21:08:59 2007 -0800 [TG3]: APE flag fix This patch corrects a bug where the ENABLE_APE flag was tested against the wrong flag variable. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ce057f01956bfcb3cb8588091000ae546be78e00 Author: Matt Carlson Date: Mon Nov 12 21:08:03 2007 -0800 [TG3]: 5784 / 5764 GPHY power down fix 5784 and 5764 devices fail to link / pass traffic after one load / unload cycle. This happens because of a hardware bug in the new CPMU. During normal operation, the MAC depends on the PHY clock being available. When the PHY is powered down, the clock the MAC depends on is disabled. The fix is to switch the MAC clock to an alternate source before powering down the PHY, and to restore the MAC clock to the PHY source upon device resume. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c88864df27590b80fca4a991e0c257d1757cec41 Author: Matt Carlson Date: Mon Nov 12 21:07:01 2007 -0800 [TG3]: Fix 5761 PXEboot crash When 5761 devices boot the machine using PXEboot, PXE leaves the device active when it terminates. The tg3 driver has code to detect this condition and resets the device during initialization. On 5761 devices, device resets involve sending a driver state update message to the APE on the 5761. However, during this initialization stage, communications to the APE registers have not yet been set up. The driver then dereferences a NULL pointer and crashes the machine. The fix is to move the APE register access setup earlier in the initialization code to cover this condition. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ba698ad4b7e466cbb4a8bde6b9da8080ab06808d Author: David Miller Date: Thu Oct 25 01:16:30 2007 -0700 PCI: Add quirk for devices which disable MSI when INTX_DISABLE is set. A reasonably common problem with some devices is that they will disable MSI generation when the INTX_DISABLE bit is set in the PCI_COMMAND register. Quirk this explicitly, guarding the pci_intx() calls in msi.c with this quirk indication. The first entries for this quirk are for 5714 and 5780 Tigon3 chips, and thus we can remove the workaround code from the tg3.c driver. Signed-off-by: David S. Miller Acked-by: Michael Chan Acked-by: Jeff Garzik Signed-off-by: Greg Kroah-Hartman commit 33b0c4fe6d0dd19fc7c9b801855f55c5260f2858 Author: Matt Carlson Date: Sun Oct 21 16:22:38 2007 -0700 [TG3]: Update version to 3.85 This patch updates the version number to 3.85. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8a6eac90e21633e054e17d21454a2c26824aeb18 Author: Matt Carlson Date: Sun Oct 21 16:17:55 2007 -0700 [TG3]: PCI command adjustment This patch changes the way the driver works with the PCI command register. It adjusts the access size from dwords to words. This patch is done both as a PCI configuration space cleanup and as preparatory work for PCI error recovery. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9c8a620e7f85fff050a54697da44bbd1a66e8e0b Author: Matt Carlson Date: Sun Oct 21 16:16:08 2007 -0700 [TG3]: Add management FW version to ethtool report This patch appends the management firmware version to the bootcode firmware string reported through ethtool. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6c7af27c8a2e8b85cb235a2409d3b2093b18f77d Author: Matt Carlson Date: Sun Oct 21 16:12:02 2007 -0700 [TG3]: Add 5723 support This patch adds support for upcoming 5723 devices. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a52cefc80fc92981592c688d1c8067442afe4cec Merge: fba956c 4acad72 Author: Linus Torvalds Date: Mon Oct 15 14:06:58 2007 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 * 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (42 commits) [IPV6]: Consolidate the ip6_pol_route_(input|output) pair [TCP]: Make snd_cwnd_cnt 32-bit [TCP]: Update the /proc/net/tcp documentation [NETNS]: Don't panic on creating the namespace's loopback [NEIGH]: Ensure that pneigh_lookup is protected with RTNL [INET]: kmalloc+memset -> kzalloc in frag_alloc_queue [ISDN]: Fix compile with CONFIG_ISDN_X25 disabled. [IPV6]: Replace sk_buff ** with sk_buff * in input handlers [SELINUX]: Update for netfilter ->hook() arg changes. [INET]: Consolidate the xxx_put [INET]: Small cleanup for xxx_put after evictor consolidation [INET]: Consolidate the xxx_evictor [INET]: Consolidate the xxx_frag_destroy [INET]: Consolidate xxx_the secret_rebuild [INET]: Consolidate the xxx_frag_kill [INET]: Collect common frag sysctl variables together [INET]: Collect frag queues management objects together [INET]: Move common fields from frag_queues in one place. [TG3]: Fix performance regression on 5705. [ISDN]: Remove local copy of device name to make sure renames work. ... commit e9edda697ed7697f1288d0656570e49c47e204ae Author: Alejandro Martinez Ruiz Date: Mon Oct 15 03:37:43 2007 +0200 netdev: convert non-obvious instances to use ARRAY_SIZE() This will convert remaining non-obvious or naive calculations of array sizes to use ARRAY_SIZE() macro. Signed-off-by: Alejandro Martinez Ruiz Signed-off-by: Jeff Garzik commit 114342f2d38439cb1a54f1f724fa38729b093c48 Author: Michael Chan Date: Mon Oct 15 02:12:26 2007 -0700 [TG3]: Fix performance regression on 5705. A performance regression was introduced by the following commit: commit ee6a99b539a50b4e9398938a0a6d37f8bf911550 Author: Michael Chan Date: Wed Jul 18 21:49:10 2007 -0700 [TG3]: Fix msi issue with kexec/kdump. In making that change, the PCI latency timer and cache line size registers were not restored after chip reset. On the 5705, the latency timer gets reset to 0 during chip reset and this causes very poor performance. Update version to 3.84. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4fd7ab5949edfdf99be0ceef206c9d0b7f186318 Author: Michael Chan Date: Fri Oct 12 01:39:50 2007 -0700 [TG3]: Refine napi poll loop. Need to read and store sblk->status_tag before checking for more work. The status tag is later written back to the hardware when enabling interrupts to acknowledge how much work has been processed. If the order is reversed, we can end up acknowledging work we haven't processed. When we detect tx error, it is more correct to return the rx work_done so far instead of 0. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9ce768ead83216d394175c0a0d72bc527648c7d0 Author: Matt Carlson Date: Thu Oct 11 19:49:11 2007 -0700 [TG3]: Fix APE induced regression This patch fixes a bug caused by the recent APE support added for 5761 devices. Signed-off-by: Matt Carlson Signed-off-by: David S. Miller commit 6f535763165331bb91277d7519b507fed22034e5 Author: David S. Miller Date: Thu Oct 11 18:08:29 2007 -0700 [NET]: Fix NAPI completion handling in some drivers. In order for the list handling in net_rx_action() to be correct, drivers must follow certain rules as stated by this comment in net_rx_action(): /* Drivers must not modify the NAPI state if they * consume the entire weight. In such cases this code * still "owns" the NAPI instance and therefore can * move the instance around on the list at-will. */ A few drivers do not do this because they mix the budget checks with reading hardware state, resulting in crashes like the one reported by takano@axe-inc.co.jp. BNX2 and TG3 are taken care of here, SKY2 fix is from Stephen Hemminger. Signed-off-by: David S. Miller commit 414c66e00e9fb4572e38bd14e6cc570eae8c5a61 Author: Matt Carlson Date: Wed Oct 10 18:03:56 2007 -0700 [TG3]: Update version to 3.83 Update to version 3.83. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0527ba358aa7594731e627842d493ae7f009dd57 Author: Matt Carlson Date: Wed Oct 10 18:03:30 2007 -0700 [TG3]: WOL defaults This patch enables WOL by default if out-of-box WOL is enabled in the NVRAM. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9936bcf68a7e4d33f080bba9ee03d156c75c91ee Author: Matt Carlson Date: Wed Oct 10 18:03:07 2007 -0700 [TG3]: Add 5761 support This patch adds rest of the miscellaneous code required to support the 5761. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0d3031d9e674cddd4c09731123ad252294cdf15f Author: Matt Carlson Date: Wed Oct 10 18:02:43 2007 -0700 [TG3]: Add 5761 APE support This patch adds support for the new APE block, present in 5761 chips. APE stands for Application Processing Engine. The primary function of the APE is to process manageability traffic, such as ASF. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6b91fa02796292c322b20572188c74c1ef5bb02b Author: Matt Carlson Date: Wed Oct 10 18:01:09 2007 -0700 [TG3]: Add new 5761 NVRAM decode routines This patch adds a new 5761-specific NVRAM strapping decode routine. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 405d8e5cbbe5aca20cc745046b70831bfc5e4a8f Author: Andy Gospodarek Date: Mon Oct 8 01:08:47 2007 -0700 [TG3]: Fix ethtool autonegotiate flags. I recently noticed that when calling: # ethtool -s eth0 autoneg on on a 5722 (though I'm sure it's not specific to that card) that subsequent checks of the cards status looked like this: # ethtool eth0 Settings for eth0: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: No <---- This seems odd?!? Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) Link detected: yes I noticed that the following commit: commit 3600d918d870456ea8e7bb9d47f327de5c20f3d6 Author: Michael Chan Date: Thu Dec 7 00:21:48 2006 -0800 [TG3]: Allow partial speed advertisement. Honor the advertisement bitmask from ethtool. We used to always advertise the full capability when autoneg was set to on. changed things around so that ethtool speed settings were strictly followed. Unfortunately ethtool doesn't seem to set ADVERTISED_Autoneg in the advertising field (and maybe it shouldn't have to). I'd vote that it should be fixed there, but it should also be added here just in case someone using ethtool ioctls in their own application gets what they want. Adding that flag in tg3_set_settings seemed like the most logical place since the driver works fine on boot. This is just an issue when re-enabling autonegotiation, so we should probably nip it there. Signed-off-by: Andy Gospodarek Acked-by: Michael Chan Signed-off-by: David S. Miller commit 182f6ed5188ccb46d1c54c3334943a54110d0118 Author: Michael Chan Date: Sun Oct 7 23:29:06 2007 -0700 [TG3]: Update version to 3.82. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d30cdd28fba556143a4bb0d1a6097ebcc2891477 Author: Matt Carlson Date: Sun Oct 7 23:28:35 2007 -0700 [TG3]: Add 5784 and 5764 support. This patch adds the support for 5784 and 5764 devices. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 795d01c523dd9f22acc70fe86ed30e605e00024d Author: Matt Carlson Date: Sun Oct 7 23:28:17 2007 -0700 [TG3]: ASIC decoding and basic CPMU support. Newer products change the way the ASIC revision is obtained. This patch implements how the driver will extract the revision number. This patch also adds preliminary CPMU support. CPMU stands for Central Power Management Unit. The CPMU's role is to put the chip into lower power states when the operating conditions allow it. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9974a356b204833b32173210ca25edfdc24dcdd5 Author: Matt Carlson Date: Sun Oct 7 23:27:28 2007 -0700 [TG3]: Walk PCI capability lists. Newer tg3 devices shuffle around the registers in PCI configuration space. This patch changes the way the driver accesses the PCI capabilities registers. Hardcoded register locations are replaced with offsets from pci_find_capability() return values. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b9f2c0440d806e01968c3ed4def930a43be248ad Author: Jeff Garzik Date: Wed Oct 3 18:07:32 2007 -0700 [netdrvr] Stop using legacy hooks ->self_test_count, ->get_stats_count These have been superceded by the new ->get_sset_count() hook. Signed-off-by: Jeff Garzik Signed-off-by: David S. Miller commit 88d3aafdae5c5e1d2dd9489a5c8a24e29d335f2e Author: Jeff Garzik Date: Sat Sep 15 14:41:06 2007 -0700 [ETHTOOL] Provide default behaviors for a few ethtool sub-ioctls For the operations get-tx-csum get-sg get-tso get-ufo the default ethtool_op_xxx behavior is fine for all drivers, so we permit op==NULL to imply the default behavior. This provides a more uniform behavior across all drivers, eliminating ethtool(8) "ioctl not supported" errors on older drivers that had not been updated for the latest sub-ioctls. The ethtool_op_xxx() functions are left exported, in case anyone wishes to call them directly from a driver-private implementation -- a not-uncommon case. Should an ethtool_op_xxx() helper remain unused for a while, except by net/core/ethtool.c, we can un-export it at a later date. [ Resolved conflicts with set/get value ethtool patch... -DaveM ] Signed-off-by: Jeff Garzik Signed-off-by: David S. Miller commit 10d024c1b2fd58af8362670d7d6e5ae52fc33353 Author: Ralf Baechle Date: Mon Sep 17 13:11:17 2007 -0700 [NET]: Nuke SET_MODULE_OWNER macro. It's been a useless no-op for long enough in 2.6 so I figured it's time to remove it. The number of people that could object because they're maintaining unified 2.4 and 2.6 drivers is probably rather small. [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ] Signed-off-by: Ralf Baechle Signed-off-by: Jeff Garzik Signed-off-by: David S. Miller commit ab0049b4a2f66074dff6af851b35bba888f53972 Author: Andy Gospodarek Date: Thu Sep 6 20:42:14 2007 +0100 [TG3]: remove sparse warnings Removed sparse warnings from tg3 driver. The new logic seems fine (I don't immediately see where we are running over values for any of the variables that need to be saved). This patch compiles fine and I'm currently using a tg3 with the patched driver to post this patch as a basic proof of concept. Signed-off-by: Andy Gospodarek Signed-off-by: David S. Miller commit bea3348eef27e6044b6161fd04c3152215f96411 Author: Stephen Hemminger Date: Wed Oct 3 16:41:36 2007 -0700 [NET]: Make NAPI polling independent of struct net_device objects. Several devices have multiple independant RX queues per net device, and some have a single interrupt doorbell for several queues. In either case, it's easier to support layouts like that if the structure representing the poll is independant from the net device itself. The signature of the ->poll() call back goes from: int foo_poll(struct net_device *dev, int *budget) to int foo_poll(struct napi_struct *napi, int budget) The caller is returned the number of RX packets processed (or the number of "NAPI credits" consumed if you want to get abstract). The callee no longer messes around bumping dev->quota, *budget, etc. because that is all handled in the caller upon return. The napi_struct is to be embedded in the device driver private data structures. Furthermore, it is the driver's responsibility to disable all NAPI instances in it's ->stop() device close handler. Since the napi_struct is privatized into the driver's private data structures, only the driver knows how to get at all of the napi_struct instances it may have per-device. With lots of help and suggestions from Rusty Russell, Roland Dreier, Michael Chan, Jeff Garzik, and Jamal Hadi Salim. Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra, Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan. [ Ported to current tree and all drivers converted. Integrated Stephen's follow-on kerneldoc additions, and restored poll_list handling to the old style to fix mutual exclusion issues. -DaveM ] Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2fbe43f6f631dd7ce19fb1499d6164a5bdb34568 Author: Michael Chan Date: Thu Sep 6 12:04:29 2007 +0100 [TG3]: Workaround MSI bug on 5714/5780. A hardware bug was revealed after a recent PCI MSI patch was made to always disable legacy INTX when enabling MSI. The 5714/5780 chips will not generate MSI when INTX is disabled, causing MSI failure messages to be reported, and another patch was made to workaround the problem by disabling MSI on ServerWorks HT1000 bridge chips commonly found with the 5714. We workaround this chip bug by enabling INTX after we enable MSI and after we resume from suspend. Update version to 3.81. This problem was discovered by David Miller. Signed-off-by: Michael Chan Acked-by: Andy Gospodarek Signed-off-by: David S. Miller commit 3e0c95fd648c0d3175b9ff2232597d0b02eb7d46 Author: Michael Chan Date: Fri Aug 3 20:56:54 2007 -0700 [TG3]: Fix suspend/resume problem. Joachim Deguara reported that tg3 devices would not resume properly if the device was shutdown before the system was suspended. In such scenario where the netif_running state is 0, tg3_suspend() would not save the PCI state and so the memory enable bit and bus master enable bit would be lost. We fix this by always saving and restoring the PCI state in tg3_suspend() and tg3_resume() regardless of netif_running() state. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 313674afa8fdced2fe79f50f38e1c387b63d8790 Author: Matthew Wilcox Date: Tue Jul 31 14:00:29 2007 -0700 [NET]: ethtool_perm_addr only has one implementation All drivers implement ethtool get_perm_addr the same way -- by calling the generic function. So we can inline the generic function into the caller and avoid going through the drivers. Signed-off-by: Matthew Wilcox Signed-off-by: David S. Miller commit ee6a99b539a50b4e9398938a0a6d37f8bf911550 Author: Michael Chan Date: Wed Jul 18 21:49:10 2007 -0700 [TG3]: Fix msi issue with kexec/kdump. Tina Yang discovered an MSI related problem when doing kdump. The problem is that the kexec kernel is booted without going through system reset, and as a result, MSI may already be enabled when tg3_init_one() is called. tg3_init_one() calls pci_save_state() which will save the stale MSI state. Later on in tg3_open(), we call pci_enable_msi() to reconfigure MSI on the chip before we reset the chip. After chip reset, we call pci_restore_state() which will put the stale MSI address/data back onto the chip. This is no longer a problem in the latest kernel because pci_restore_state() has been changed to restore MSI state from internal data structures which will guarantee restoring the proper MSI state. But I think we should still fix it. Our save and restore sequence can still cause very subtle problems down the road. The fix is to have our own functions save and restore precisely what we need. We also change it to save and restore state inside tg3_chip_reset() in a more straight forward way. Thanks to Tina for helping to test and debug the problem. [ Bump driver version and release date. -DaveM ] Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6460d948f3ebf7d5040328a60a0ab7221f69945b Author: Michael Chan Date: Sat Jul 14 19:07:52 2007 -0700 [NET]: Add ethtool support for NETIF_F_IPV6_CSUM devices. Add ethtool utility function to set or clear IPV6_CSUM feature flag. Modify tg3.c and bnx2.c to use this function when doing ethtool -K to change tx checksum. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 21ba0f88ae56da82a3a15fe54d729208b64c4f4b Merge: dc690d8 36e2359 Author: Linus Torvalds Date: Thu Jul 12 13:40:57 2007 -0700 Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (34 commits) PCI: Only build PCI syscalls on architectures that want them PCI: limit pci_get_bus_and_slot to domain 0 PCI: hotplug: acpiphp: avoid acpiphp "cannot get bridge info" PCI hotplug failure PCI: hotplug: acpiphp: remove hot plug parameter write to PCI host bridge PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3 PCI: hotplug: pciehp: wait for 1 second after power off slot PCI: pci_set_power_state(): check for PM capabilities earlier PCI: cpci_hotplug: Convert to use the kthread API PCI: add pci_try_set_mwi PCI: pcie: remove SPIN_LOCK_UNLOCKED PCI: ROUND_UP macro cleanup in drivers/pci PCI: remove pci_dac_dma_... APIs PCI: pci-x-pci-express-read-control-interfaces cleanups PCI: Fix typo in include/linux/pci.h PCI: pci_ids, remove double or more empty lines PCI: pci_ids, add atheros and 3com_2 vendors PCI: pci_ids, reorder some entries PCI: i386: traps, change VENDOR to DEVICE PCI: ATM: lanai, change VENDOR to DEVICE PCI: Change all drivers to use pci_device->revision ... commit 15028aad00ddf241581fbe74a02ec89cbb28d35d Author: Michael Chan Date: Wed Jul 11 19:49:22 2007 -0700 [TG3]: Update version to 3.78. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 70b65a2d628d2e66bbf044bb764be64949f3580c Author: Matt Carlson Date: Wed Jul 11 19:48:50 2007 -0700 [TG3]: Add missing NVRAM strapping. This patch adds a missing NVRAM strapping for 5755 devices. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9ef8ca99749784644602535691f8cf201ee2a225 Author: Matt Carlson Date: Wed Jul 11 19:48:29 2007 -0700 [TG3]: Enable auto MDI. This patch adds automatic MDI crossover support when autonegotiation is turned off. Automatic MDI crossover allows link to be established without the use of a crossover cable. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e8f3f6cad7e423253090887bc4afe7bc844162da Author: Matt Carlson Date: Wed Jul 11 19:47:55 2007 -0700 [TG3]: Fix the polarity bit. For most pre-5705 devices, multiple link interrupts were being generated for a single physical link change. The source of the interrupts was determined to be unnecessary toggling of the MAC link polarity bit. This patch changes the way the link polarity bit gets configured. Where possible, code that dynamically configures the bit in response to link changes has been replaced by code that configures the bit once during initialization time and then leaves the bit alone. For correctness, this patch also limits the use of the bit to those devices where it is defined, namely devices before the 5705. This patch also corrects the link polarity configurations for 5700 devices when paired against a bcm5411 phy. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 469665459d26da8d0b46c70d070da1e192e48e46 Author: Michael Chan Date: Wed Jul 11 19:47:19 2007 -0700 [TG3]: Fix irq_sync race condition. Gagan Arneja pointed out that tg3_reset_task() could potentially race with another thread calling tg3_full_lock() such as the ethtool_set_xxx() functions. This may trigger the BUG_ON() in tg3_irq_quiesce() or cause the irq_sync flag to be out- of-sync. I think the easiest way to fix this is to get the tp->lock first before setting the irq_sync flag. This is safe to do because the tp->lock is never grabbed by the irq handler. This change will guarantee that the irq_sync flag updates will be serialized. We also have to change one spot to call tg3_netif_start() (which clears the irq_sync flag) before releasing the tp->lock. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 44c10138fd4bbc4b6d6bff0873c24902f2a9da65 Author: Auke Kok Date: Fri Jun 8 15:46:36 2007 -0700 PCI: Change all drivers to use pci_device->revision Instead of all drivers reading pci config space to get the revision ID, they can now use the pci_device->revision member. This exposes some issues where drivers where reading a word or a dword for the revision number, and adding useless error-handling around the read. Some drivers even just read it for no purpose of all. In devices where the revision ID is being copied over and used in what appears to be the equivalent of hotpath, I have left the copy code and the cached copy as not to influence the driver's performance. Compile tested with make all{yes,mod}config on x86_64 and i386. Signed-off-by: Auke Kok Acked-by: Dave Jones Signed-off-by: Greg Kroah-Hartman commit d212f87b068c9d72065ef579d85b5ee6b8b59381 Author: Stephen Hemminger Date: Wed Jun 27 00:47:37 2007 -0700 [NET]: IPV6 checksum offloading in network devices The existing model for checksum offload does not correctly handle devices that can offload IPV4 and IPV6 only. The NETIF_F_HW_CSUM flag implies device can do any arbitrary protocol. This patch: * adds NETIF_F_IPV6_CSUM for those devices * fixes bnx2 and tg3 devices that need it * add NETIF_F_IPV6_CSUM to ipv6 output (incl GSO) * fixes assumptions about NETIF_F_ALL_CSUM in nat * adjusts bridge union of checksumming computation Signed-off-by: David S. Miller commit 007a880d627aee0e854e793099bb33d0c1130678 Author: Michael Chan Date: Thu May 31 14:49:51 2007 -0700 [TG3]: Fix link problem on Dell's onboard 5906. The bug is caused by code that always set (TG3_FLAG_USE_MI_INTERRUPT | TG3_FLAG_USE_LINKCHG_REG) on all Dell's onboard devices. With these 2 flags set, the link status is polled by tg3_timer() and will only work when the PHY is set up to interrupt the MAC on link changes. This breaks 5906 because the 5906 PHY does not support TG3_FLAG_USE_MI_INTERRUPT the same as other PHYs. For correctness, only Dell's onboard 5701 needs these 2 flags to be set. This change will fix the 5906 problem and will change other Dell devices except 5700 and 5701 to use the more efficient interrupt-driven link changes. Update version to 3.77. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 25805dcf9d83098cf5492117ad2669cd14cc9b24 Author: Stephen Hemminger Date: Fri Jun 1 09:44:01 2007 -0700 network drivers: eliminate unneeded kill_vid code Many drivers had code that did kill_vid, but they weren't doing vlan filtering. With new API the stub is unneeded unless device sets NETIF_F_HW_VLAN_FILTER. Bad habit: I couldn't resist fixing a couple of nearby style things in acenic, and forcedeth. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik commit 28e53bddf814485699a4142bc056fd37d4e11dd4 Author: Oleg Nesterov Date: Wed May 9 02:34:22 2007 -0700 unify flush_work/flush_work_keventd and rename it to cancel_work_sync flush_work(wq, work) doesn't need the first parameter, we can use cwq->wq (this was possible from the very beginnig, I missed this). So we can unify flush_work_keventd and flush_work. Also, rename flush_work() to cancel_work_sync() and fix all callers. Perhaps this is not the best name, but "flush_work" is really bad. (akpm: this is why the earlier patches bypassed maintainers) Signed-off-by: Oleg Nesterov Cc: Jeff Garzik Cc: "David S. Miller" Cc: Jens Axboe Cc: Tejun Heo Cc: Auke Kok , Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 2b3cb2e778811a1df99e37fd7c359837501ab103 Author: Andrew Morton Date: Wed May 9 02:33:57 2007 -0700 tg3: use flush_work_keventd() Convert tg3 over to flush_work_keventd(). Remove nasty now-unneeded deadlock avoidance logic. (akpm: bypassed maintainers, sorry. There are other patches which depend on this) Cc: "Maciej W. Rozycki" Cc: David Howells Cc: "David S. Miller" Cc: Michael Chan Cc: Jeff Garzik Cc: Oleg Nesterov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 823036ed3291e30f32a905c94db821cd75524b59 Author: Michael Chan Date: Mon May 7 00:26:30 2007 -0700 [TG3]: Update version and reldate. Update version to 3.76. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c04cb34725fdcf5fdb4135d8fdfaf6f318f10e99 Author: Michael Chan Date: Mon May 7 00:26:15 2007 -0700 [TG3]: Eliminate spurious interrupts. Spurious interrupts are often encountered especially on systems using the 8259 PIC mode. This is because the I/O write to deassert the interrupt is posted and won't get to the chip immediately. As a result, the IRQ may remain asserted after the IRQ handler exits, causing spurious interrupts. Flush the interrupt mailbox in non-MSI handlers to de-assert the IRQ immediately. This seems to be the most straight forward approach after discussion with Jeff Garzik and David Miller. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8ed5d97e5e0be0fb1aebad16f4c464613a0e472d Author: Matt Carlson Date: Mon May 7 00:25:49 2007 -0700 [TG3]: Add ASPM workaround. This patch adds workaround to fix performance problems caused by slow PCIE L1->L0 transitions on ICH8 platforms. Changed all magic numbers to constants as suggested by Jeff Garzik. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7544b0972c1fc1a0e6c54baa1f44c81019743daa Author: Michael Chan Date: Sat May 5 13:08:32 2007 -0700 [TG3]: Add TG3_FLAG_SUPPORT_MSI flag. And fix up the code to always allow MSI on 5714 A2. Call tg3_find_peer() earlier because we need that information before we can determine whether we can set TG3_FLAG_SUPPORT_MSI or not. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 98efd8a6be79550767f5a9be6f3db8e7e9b747da Author: Matt Carlson Date: Sat May 5 12:47:25 2007 -0700 [TG3]: Eliminate the TG3_FLAG_5701_REG_WRITE_BUG flag. This patch removes the use of the TG3_FLAG_5701_REG_WRITE_BUG flag. It's logic is only used to set a function pointer and thus the logic can be collapsed and the flag removed. [ Comment tidy by Christoph Hellwig. -DaveM ] Signed-off-by: Matt Carlson Signed-off-by: Michael Chan commit 5cf64b8a7399999439f0d6748babb1ccb6bcad7c Author: Michael Chan Date: Sat May 5 12:11:21 2007 -0700 [TG3]: Eliminate the TG3_FLAG_GOT_SERDES_FLOWCTL flag. This flag does not do anything useful. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 986e0aeb9ae09127b401c3baa66f15b7a31f354c Author: Michael Chan Date: Sat May 5 12:10:20 2007 -0700 [TG3]: Remove reset during MAC address changes. The reset was added a while back so that ASF could re-init whatever MAC address it wanted to use after the MAC address was changed. Instead of resetting, we can just keep MAC address 1 unchanged during MAC address changes if MAC address 1 is different from MAC address 0. This fixes 2 problems: 1. Bonding calls set_mac_address in contexts that cannot sleep. It no longer sleeps with the chip reset removed. 2. When ASF shares the same MAC address as the NIC, it needs to always do that even when the MAC address is changed. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a85feb8cfc53c08b6f0d770f930ca9cc6885f414 Author: Gary Zambrano Date: Sat May 5 11:52:19 2007 -0700 [TG3]: WoL fixes. Change TG3_FLAG_SERDES_WOL_CAP to TG3_FLAG_WOL_CAP to make it easier to manage WoL. This flag is now used consistently during ethtool WoL setup and power setting changes. Signed-off-by: Gary Zambrano Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit aaf84465fc994e9a840a8c0c6fa842b54cdb3426 Author: Gary Zambrano Date: Sat May 5 11:51:45 2007 -0700 [TG3]: Clear GPIO mask before storing. The GPIO settings may change during reset and so the stored values in tp->grc_local_ctrl should be cleared first. Signed-off-by: Gary Zambrano Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 989a9d239c5b9ae6053aed6e3819304930baf27d Author: Matt Carlson Date: Sat May 5 11:51:05 2007 -0700 [TG3]: Improve NVRAM sizing. This patch changes the NVRAM sizing procedure so that the driver can take advantage of devices with 1:1 NVRAM strapping configurations. This is useful in cases where the traditional NVRAM sizing method fails. In the event that the flash size cannot be determined, the largest known NVRAM size is used. The patch also removes support for 5755 NVRAM devices that are not supported by Broadcom and adds explicit sizing for this device. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c13e3713857d5ea572cd67f3d5749100b1963ad2 Author: Matt Carlson Date: Sat May 5 11:50:04 2007 -0700 [TG3]: Fix TSO bugs. 1. Remove the check for skb->len greater than MTU when doing TSO. When the destination has a smaller MSS than the source, a TSO packet may be smaller than the MTU and we still need to process it as a TSO packet. 2. On 5705A3 devices with TSO enabled, the DMA engine can hang due to a hardware bug. This patch avoids the hanging condition by reducing the DMA burst size. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0278ef8b484a71917bd4f03a763285cdaac10954 Merge: 15c5403 cd9ad58 Author: Linus Torvalds Date: Fri Apr 27 09:29:04 2007 -0700 Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: (67 commits) [SCSI] SUNESP: Complete driver rewrite to version 2.0 [SPARC64]: Convert PCI over to generic struct iommu/strbuf. [SPARC]: device_node name constification fallout [SPARC64]: Convert SBUS over to generic iommu/strbuf structs. [SPARC64]: Add generic iommu and strbuf structs to iommu.h [SPARC64]: Consolidate {sbus,pci}_iommu_arena. [SPARC]: Make device_node name and type const [SPARC64]: constify some paramaters of OF routines [TIGON3]: of_get_property() returns const. [SPARC64]: Fix PCI rework to adhere to of_get_property() const return. [SPARC64]: Document and fix calculation of pages_avail. [SPARC64]: Make sure pbm->prom_node is setup easly enough in psycho.c [SPARC64]: Use bootmem_bootmap_pages() in choose_bootmap_pfn(). [SPARC64]: Add proper header file extern for cmdline_memory_size. [SPARC64]: Kill sparc_ultra_dump_{i,d}tlb() [SPARC64]: Use DECLARE_BITMAP and BITS_TO_LONGS in mm/init.c [SPARC64]: Give move verbose show_mem() output just like i386. [SPARC64]: Mark show_mem() printk's with KERN_INFO. [SPARC64]: Kill kvaddr_to_phys() and friends. [SPARC64]: Privatize sun4u_get_pte() and fix name. ... commit 374d4cac6283469f101282ca83ee008368bd8350 Author: David S. Miller Date: Thu Mar 29 01:57:57 2007 -0700 [TIGON3]: of_get_property() returns const. Signed-off-by: David S. Miller commit 49b6e95ff6d05722bcf7a52b00454566ce0c44eb Author: David S. Miller Date: Thu Mar 29 01:38:42 2007 -0700 [TG3]: Use pci_device_to_OF_node() on sparc. And use CONFIG_SPARC instead of CONFIG_SPARC64 as the test. Signed-off-by: David S. Miller commit ccf0dec6fcadb4e1c877b9bafb031a6bdb7112b9 Author: Stephen Rothwell Date: Thu Mar 29 00:49:54 2007 -0700 [SPARC/64] constify of_get_property return: drivers The only unfortunate bit here is that the name field of struct map_info is not const, so for now we put a cast on the assignment of it. Signed-off-by: Stephen Rothwell Signed-off-by: David S. Miller commit d626f62b11e00c16e81e4308ab93d3f13551812a Author: Arnaldo Carvalho de Melo Date: Tue Mar 27 18:55:52 2007 -0300 [SK_BUFF]: Introduce skb_copy_from_linear_data{_offset} To clearly state the intent of copying from linear sk_buffs, _offset being a overly long variant but interesting for the sake of saving some bytes. Signed-off-by: Arnaldo Carvalho de Melo commit aa8223c7bb0b05183e1737881ed21827aa5b9e73 Author: Arnaldo Carvalho de Melo Date: Tue Apr 10 21:04:22 2007 -0700 [SK_BUFF]: Introduce tcp_hdr(), remove skb->h.th Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit ab6a5bb6b28a970104a34f0f6959b73cf61bdc72 Author: Arnaldo Carvalho de Melo Date: Sun Mar 18 17:43:48 2007 -0700 [TCP]: Introduce tcp_hdrlen() and tcp_optlen() The ip_hdrlen() buddy, created to reduce the number of skb->h.th-> uses and to avoid the longer, open coded equivalent. Ditched a no-op in bnx2 in the process. I wonder if we should have a BUG_ON(skb->h.th->doff < 5) in tcp_optlen()... Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit eddc9ec53be2ecdbf4efe0efd4a83052594f0ac0 Author: Arnaldo Carvalho de Melo Date: Fri Apr 20 22:47:35 2007 -0700 [SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit c9bdd4b5257406b0608385d19c40b5511decf4f6 Author: Arnaldo Carvalho de Melo Date: Mon Mar 12 20:09:15 2007 -0300 [IP]: Introduce ip_hdrlen() For the common sequence "skb->nh.iph->ihl * 4", removing a good number of open coded skb->nh.iph uses, now to go after the rest... Just out of curiosity, here are the idioms found to get the same result: skb->nh.iph->ihl << 2 skb->nh.iph->ihl<<2 skb->nh.iph->ihl * 4 skb->nh.iph->ihl*4 (skb->nh.iph)->ihl * sizeof(u32) Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit b8fa2f3a82069304acac1f9e957d491585f4f49a Author: Michael Chan Date: Fri Apr 6 17:35:37 2007 -0700 [TG3]: Fix crash during tg3_init_one(). The driver will crash when the chip has been initialized by EFI before tg3_init_one(). In this case, the driver will call tg3_chip_reset() before allocating consistent memory. The bug is fixed by checking for tp->hw_status before accessing it during tg3_chip_reset(). Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 20bd7dd4cabfd0d6b6b70b99e88df901480a9841 Author: Michael Chan Date: Sat Mar 24 20:58:51 2007 -0700 [TG3]: Update version and reldate. Update version to 3.75. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d18edcb212d7dc864a59e6aa9b6b9826299e0210 Author: Michael Chan Date: Sat Mar 24 20:57:11 2007 -0700 [TG3]: Exit irq handler during chip reset. On most tg3 chips, the memory enable bit in the PCI command register gets cleared during chip reset and must be restored before accessing PCI registers using memory cycles. The chip does not generate interrupt during chip reset, but the irq handler can still be called because of irq sharing or irqpoll. Reading a register in the irq handler can cause a master abort in this scenario and may result in a crash on some architectures. Use the TG3_FLAG_CHIP_RESETTING flag to tell the irq handler to exit without touching any registers. The checking of the flag is in the "slow" path of the irq handler and will not affect normal performance. The msi handler is not shared and therefore does not require checking the flag. Thanks to Bernhard Walle for reporting the problem. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1c46ae05d96f77f349ae60c799acb6ac6ddf07a8 Author: Michael Chan Date: Sat Mar 24 20:54:37 2007 -0700 [TG3]: Eliminate the unused TG3_FLAG_SPLIT_MODE flag. This flag to support multiple PCIX split completions was never used because of hardware bugs. This will make room for a new flag. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5c15bdec5c38f4ccf73ef2585fc80a6164de9554 Author: Dan Aloni Date: Fri Mar 2 20:44:51 2007 -0800 [VLAN]: Avoid a 4-order allocation. This patch splits the vlan_group struct into a multi-allocated struct. On x86_64, the size of the original struct is a little more than 32KB, causing a 4-order allocation, which is prune to problems caused by buddy-system external fragmentation conditions. I couldn't just use vmalloc() because vfree() cannot be called in the softirq context of the RCU callback. Signed-off-by: Dan Aloni Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit 7f62ad5d37f4e43c841e92c6f159c93dcf2d2cdd Author: Michael Chan Date: Tue Feb 20 23:25:40 2007 -0800 [TG3]: TSO workaround fixes. 1. Add race condition check after netif_stop_queue(). tg3_tx() runs without netif_tx_lock and can race with tg3_start_xmit_dma_bug() -> tg3_tso_bug(). 2. Firmware TSO in 5703/5704/5705 also have the same TSO limitation, i.e. they cannot handle TSO headers bigger than 80 bytes. Rename TG3_FL2_HW_TSO_1_BUG to TG3_FL2_TSO_BUG and set this flag on these chips as well. 3. Update version to 3.74. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 65610fbab35b0570df4a9d0e77e111f85606b312 Author: Michael Chan Date: Tue Feb 13 12:18:46 2007 -0800 [TG3]: Update copyright, version, and reldate. Update version to 3.73. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b0408751128edc126eb37798d51891d8d0a41dc6 Author: Michael Chan Date: Tue Feb 13 12:18:30 2007 -0800 [TG3]: Add some tx timeout debug messages. Print the most useful information during tx timeout to help debug. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 569a5df8597deeaa39867be73c7305fd82522f57 Author: Michael Chan Date: Tue Feb 13 12:18:15 2007 -0800 [TG3]: Use constant for PHY register 0x1e. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5129724aa5de3a71fc70e71ca49d542ca1a5aa1e Author: Michael Chan Date: Tue Feb 13 12:17:57 2007 -0800 [TG3]: Power down 5704 serdes transceiver when shutting down. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d7b0a8573c9ac8923bf6f205f4ce60dd2ac811d5 Author: Michael Chan Date: Tue Feb 13 12:17:38 2007 -0800 [TG3]: 5906 doesn't need to switch to slower clock. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d4011adaf8b5ea555357a40388ee9aa7ed2daf9f Author: Michael Chan Date: Tue Feb 13 12:17:25 2007 -0800 [TG3]: 5722/5756 don't need PHY jitter workaround. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 49afdeb65bb917e22cf9116bc31380befe9db890 Author: Michael Chan Date: Tue Feb 13 12:17:03 2007 -0800 [TG3]: Use lower DMA watermark for 5703. Set DMA read watermark to 4 on 5703 in PCIX mode. This is needed to prevent some tx timeouts. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 436f137975507b0baab0859a253c3c9332c22f62 Author: Michael Chan Date: Tue Feb 13 12:16:45 2007 -0800 [TG3]: Save MSI state before suspend. This fixes the following problem: http://bugzilla.kernel.org/show_bug.cgi?id=7969 The MSI state needs to be saved during suspend. PCI state saved during tg3_init_one() does not contain valid MSI state because MSI hasn't been enabled. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6b31a515e3401685cdab2eeb6692f1a0f53f72ca Author: Eric Dumazet Date: Tue Feb 6 13:29:21 2007 -0800 [TG3]: Avoid an expensive divide. During an oprofile session of linux-2.6.20 on a dual opteron system, I noticed an expensive divide was done in tg3_poll(). I am using gcc-4.1.1, so the following comment from drivers/net/tg3.c seems over-optimistic : /* Do not place this n-ring entries value into the tp struct itself, * we really want to expose these constants to GCC so that modulo et * al. operations are done with shifts and masks instead of with * hw multiply/modulo instructions. Another solution would be to * replace things like '% foo' with '& (foo - 1)'. */ #define TG3_RX_RCB_RING_SIZE(tp) \ ((tp->tg3_flags2 & TG3_FLG2_5705_PLUS) ? 512 : 1024) Assembly code before patch : (oprofile results included) 6434 0.0088 :ffffffff803684b9: mov 0x6f0(%r15),%eax 587 8.0e-04 :ffffffff803684c0: and $0x40000,%eax 2170 0.0030 :ffffffff803684c5: cmp $0x1,%eax :ffffffff803684c8: lea 0x1(%r13),%eax :ffffffff803684cc: sbb %ecx,%ecx 2051 0.0028 :ffffffff803684ce: xor %edx,%edx :ffffffff803684d0: and $0x200,%ecx 20 2.7e-05 :ffffffff803684d6: add $0x200,%ecx 1986 0.0027 :ffffffff803684dc: div %ecx 103427 0.1410 :ffffffff803684de: cmp %edx,0xffffffffffffff7c(%rbp) Assembly code after the suggested patch : ffffffff803684b9: mov 0x6f0(%r15),%eax ffffffff803684c0: and $0x40000,%eax ffffffff803684c5: cmp $0x1,%eax ffffffff803684c8: sbb %eax,%eax ffffffff803684ca: inc %r13d ffffffff803684cd: and $0x200,%eax ffffffff803684d2: add $0x1ff,%eax ffffffff803684d7: and %eax,%r13d ffffffff803684da: cmp %r13d,0xffffffffffffff7c(%rbp) Signed-off-by: Eric Dumazet Acked-by: Michael Chan Signed-off-by: David S. Miller commit 1d39ed565cfcc7c4fe586de621aef495c4f94ffb Author: Arjan van de Ven Date: Tue Dec 12 14:06:23 2006 +0100 remove NETIF_F_TSO ifdefery Remove the NETIF_F_TSO #ifdef-ery in drivers/net; this was for old-old-2.4 compat (even current 2.4 has NETIF_F_TSO) but it's time to get rid of it by now. Signed-off-by: Arjan van de Ven Signed-off-by: Jeff Garzik commit c1d2a1965a00693bddaddf75d57488a0d8e891af Author: Michael Chan Date: Mon Jan 8 19:57:20 2007 -0800 [TG3]: Add PHY workaround for 5755M. Some PHY trim values need to be fine-tuned on 5755M to be IEEE-compliant. Update version to 3.72. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 749494bad9ca170e404b8dcebe8422df0d79b3ac Author: Michael Chan Date: Sun Dec 17 17:08:30 2006 -0800 [TG3]: Update version and reldate. Update version to 3.71. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 60189ddff03ffce1f0442a7591b2abafdf47e6a3 Author: Michael Chan Date: Sun Dec 17 17:08:07 2006 -0800 [TG3]: Power down/up 5906 PHY correctly. The 5906 PHY requires a special register bit to power down and up the PHY. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c49a1561ee4b663d2819b5bea3e4684eae217b19 Author: Michael Chan Date: Sun Dec 17 17:07:29 2006 -0800 [TG3]: Fix race condition when calling register_netdev(). Hot-plug scripts can call tg3_open() as soon as register_netdev() is called in tg3_init_one(). We need to call pci_set_drvdata() before register_netdev(), and netif_carrier_off() needs to be moved to tg3_open() to avoid race conditions. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 24fcad6b3ca3bdbbb4614de3edc1ff16f594ba9a Author: Michael Chan Date: Sun Dec 17 17:06:46 2006 -0800 [TG3]: Assign tp->link_config.orig_* values. tp->link_config.orig_* values must be assigned during tg3_set_settings() because these values will be used to setup the link speed during tg3_open(). Without these assignments, the link speed settings will be all messed by if tg3_set_settings() is called when the device is down. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bd2b334378530f6dbe03f6325b8c885524e298a3 Author: Yan Burman Date: Thu Dec 14 15:25:00 2006 -0800 [TG3]: replace kmalloc+memset with kzalloc Replace kmalloc+memset with kzalloc Signed-off-by: Yan Burman Acked-by: Michael Chan Signed-off-by: David S. Miller commit cbb45d21fb2fcbcafc19ea859350f564252a0878 Author: Michael Chan Date: Thu Dec 7 00:24:09 2006 -0800 [TG3]: Identify Serdes devices more clearly. Change the message to more clearly identify Serdes devices. Update version to 3.70. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9d57f01c1331cb7bfd0a9d4f7723da5b9329394f Author: Michael Chan Date: Thu Dec 7 00:23:25 2006 -0800 [TG3]: Use msleep. Change some udelay() in some eeprom functions to msleep(). Eeprom related functions are always called from sleepable context. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9f88f29fc502192824aba092e90af1297a87eb82 Author: Michael Chan Date: Thu Dec 7 00:22:54 2006 -0800 [TG3]: Use netif_msg_*. Use netif_msg_* to turn on or off some messages. Based on Stephen Hemminger's initial patch. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3600d918d870456ea8e7bb9d47f327de5c20f3d6 Author: Michael Chan Date: Thu Dec 7 00:21:48 2006 -0800 [TG3]: Allow partial speed advertisement. Honor the advertisement bitmask from ethtool. We used to always advertise the full capability when autoneg was set to on. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9d26e213423923c9e033ccd373705118131827c9 Author: Michael Chan Date: Thu Dec 7 00:21:14 2006 -0800 [TG3]: Add TG3_FLG2_IS_NIC flag. Add Tg3_FLG2_IS_NIC flag to unambiguously determine whether the device is NIC or onboard. Previously, the EEPROM_WRITE_PROT flag was overloaded to also mean onboard. With the separation, we can support some devices that are onboard but do not use eeprom write protect. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 676917d488212303ce4a7d033815ce8799201010 Author: Michael Chan Date: Thu Dec 7 00:20:22 2006 -0800 [TG3]: Add 5787F device ID. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5d64ad34f468278ce66f9eb4d876dd221490e94c Author: Michael Chan Date: Thu Dec 7 00:19:40 2006 -0800 [TG3]: Fix Phy loopback. Phy loopback on most 10/100 devices need to be run in 1Gbps mode in GMII mode. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c4028958b6ecad064b1a6303a6a5906d4fe48d73 Author: David Howells Date: Wed Nov 22 14:57:56 2006 +0000 WorkStruct: make allyesconfig Fix up for make allyesconfig. Signed-Off-By: David Howells commit 12862086f24d7382b24379bbcbe0dadf12ca5945 Author: Ira W. Snyder Date: Tue Nov 21 17:44:31 2006 -0800 [TG3]: Add missing unlock in tg3_open() error path. Sparse noticed a locking imbalance in tg3_open(). This patch adds an unlock to one of the error paths, so that tg3_open() always exits without the lock held. Signed-off-by: Ira W. Snyder Signed-off-by: David S. Miller commit c7835a77c86422d276b0d1a4c70924d933014c13 Author: Michael Chan Date: Wed Nov 15 21:14:42 2006 -0800 [TG3]: Disable TSO on 5906 if CLKREQ is enabled. Due to hardware errata, TSO must be disabled if the PCI Express clock request is enabled on 5906. The chip may hang when transmitting TSO frames if CLKREQ is enabled. Update version to 3.69. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0ccead1869444891ae6b41f2c5fc8498521c908e Author: Gary Zambrano Date: Tue Nov 14 16:34:00 2006 -0800 [TG3]: Increase 5906 firmware poll time. Newer 5906 bootcode needs about 7ms to finish resetting so the poll firmware loop was changed to maximum 20ms. Signed-off-by: Gary Zambrano Signed-off-by: Michael Chan Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit af2c6a4aaa2253f1e29df8fb59a3d92174d30a33 Author: Michael Chan Date: Tue Nov 7 14:57:51 2006 -0800 [TG3]: Fix array overrun in tg3_read_partno(). Use proper upper limits for the loops and check for all error conditions. The problem was noticed by Adrian Bunk. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 36da4d869f23bc7d1a70a3185218cb626537845c Author: Michael Chan Date: Fri Nov 3 01:01:03 2006 -0800 [TG3]: Fix 2nd ifup failure on 5752M. This fixes a bug reported in: http://bugzilla.kernel.org/show_bug.cgi?id=7438 tg3_close() turns off the PHY if WoL and ASF are both disabled. On the next tg3_open(), some devices such as the 5752M will not be brought up correctly without a PHY reset early in the reset sequence. The PHY clock is needed for some internal MAC blocks to function correctly. This problem is fixed by always resetting the PHY early in tg3_reset_hw() when it is called from tg3_open() or tg3_resume(). tg3_setup_phy() can then be called later in the sequence without the reset_phy parameter set to 1, since the PHY reset is already done. Update version to 3.68. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6ba7511b7c8b71d5148f7516584d0b677acc384a Author: David S. Miller Date: Wed Oct 18 20:56:06 2006 -0700 [TG3]: Bump driver version and release date. Signed-off-by: David S. Miller commit bc3a9254a7925b6278f6d882746fe6a0bdf6f610 Author: Michael Chan Date: Wed Oct 18 20:55:18 2006 -0700 [TG3]: Add lower bound checks for tx ring size. The minimum tx ring size must be greater than MAX_SKB_FRAGS or 3 times that on some chips with TSO bugs. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 42952231c6a8623117ee3cc89c82d382dc69ca30 Author: Ranjit Manomohan Date: Wed Oct 18 20:54:26 2006 -0700 [TG3]: Fix set ring params tx ring size implementation Fixes the implementation of the ethtool set ring parameters for the tg3 transmit ring. The size of tx_pending is taken into account before doing a netif_wake_queue. This prevents the interface from locking up when smaller transmit ring sizes are used. Signed-off-by: Ranjit Manomohan Acked-by: Michael Chan Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 7d12e780e003f93433d49ce78cfedf4b4c52adc5 Author: David Howells Date: Thu Oct 5 14:55:46 2006 +0100 IRQ: Maintain regs pointer globally rather than passing to IRQ handlers Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit) commit 1533d382155ee888d9621391c108ffb7a68bb25d Author: Michael Chan Date: Wed Sep 27 16:10:35 2006 -0700 [TG3]: Update version and reldate. Update version to 3.66. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b16250e3d1c55820f08f0296624a423122ea9805 Author: Michael Chan Date: Wed Sep 27 16:10:14 2006 -0700 [TG3]: Add 5709 self-test support. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 715116a12610b67c1d301a9b845ce95f7247dad3 Author: Michael Chan Date: Wed Sep 27 16:09:25 2006 -0700 [TG3]: Add 5709 PHY support. Add support for the 5709 10/100 PHY. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b5d3772ccbe0bc5ac8ffbb5356b74ca698aee28c Author: Michael Chan Date: Wed Sep 27 16:06:21 2006 -0700 [TG3]: Add basic 5906 support. Add support for the new 5709 device. This is a new 10/100 Mbps chip. The mailbox access and firmware interface are quite different from all other tg3 chips. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7a6f4369449a471a6e5718a87c53ac75a46960ba Author: Michael Chan Date: Wed Sep 27 16:03:31 2006 -0700 [TG3]: Add tg3_poll_fw(). Put the firmware polling logic into a separate function. This makes the code cleaner. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 126a336822a6594662f5898f1ddf33e6d048fcc7 Author: Michael Chan Date: Wed Sep 27 16:03:07 2006 -0700 [TG3]: Add 5722 and 5756 support. Add IDs to support 5722 and 5756. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3f7045c1f28bedd44389b9392b54c6fdb83ee5c6 Author: Michael Chan Date: Wed Sep 27 16:02:29 2006 -0700 [TG3]: PHY fixes. Some PHY related fixes: 1. Fix Serdes WoL. 2. Fix loopback test on 10/100 only devices. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 130b8e4d0e4edadcecee9fdff2c32f33d77c4fe9 Author: Michael Chan Date: Wed Sep 27 16:00:40 2006 -0700 [TG3]: Improve ASF heartbeat. Change to a different ASF heartbeat message code to improve reliability. There were some reports of unintended resets on real time kernels where the timer may be slow and cause the heartbeat to be late. Netpoll will also have the same problem because the timer irq will be unavailable. Using the new heartbeat code, the ASF firmware will also check the ring condition before resetting the chip when the heartbeat is expiring. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3d3ebe741b2c06fe3df67739d09f6ef0e25ee41a Author: Michael Chan Date: Wed Sep 27 15:59:15 2006 -0700 [TG3]: Improve 5704S autoneg. Improve 5704S autoneg logic by using a serdes_counter field to keep track of the transient states. This eliminates a 200 msec busy loop in the code. Autoneg will take its course without the driver busy waiting for it to finish. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a319a2773a13bab56a0d0b3744ba8703324313b5 Merge: e18fa70 1837987 Author: Linus Torvalds Date: Sun Sep 24 10:15:13 2006 -0700 Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (217 commits) net/ieee80211: fix more crypto-related build breakage [PATCH] Spidernet: add ethtool -S (show statistics) [NET] GT96100: Delete bitrotting ethernet driver [PATCH] mv643xx_eth: restrict to 32-bit PPC_MULTIPLATFORM [PATCH] Cirrus Logic ep93xx ethernet driver r8169: the MMIO region of the 8167 stands behin BAR#1 e1000, ixgb: Remove pointless wrappers [PATCH] Remove powerpc specific parts of 3c509 driver [PATCH] s2io: Switch to pci_get_device [PATCH] gt96100: move to pci_get_device API [PATCH] ehea: bugfix for register access functions [PATCH] e1000 disable device on PCI error drivers/net/phy/fixed: #if 0 some incomplete code drivers/net: const-ify ethtool_ops declarations [PATCH] ethtool: allow const ethtool_ops [PATCH] sky2: big endian [PATCH] sky2: fiber support [PATCH] sky2: tx pause bug fix drivers/net: Trim trailing whitespace [PATCH] ehea: IBM eHEA Ethernet Device Driver ... Manually resolved conflicts in drivers/net/ixgb/ixgb_main.c and drivers/net/sky2.c related to CHECKSUM_HW/CHECKSUM_PARTIAL changes by commit 84fa7933a33f806bbbaae6775e87459b1ec584c0 that just happened to be next to unrelated changes in this update. commit 131852176c1f5b4350b4af811d1836db387d0c61 Author: Henrik Kretzschmar Date: Tue Aug 22 00:28:33 2006 -0700 [TG3]: Convert the pci_device_id table to PCI_DEVICE() Convert the pci_device_ids to PCI_DEVICE() macro. Saves 1.5k in the sourcefile. Signed-off-by: Henrik Kretzschmar Acked-by: Michael Chan Signed-off-by: David S. Miller commit 50da859d4e566fba90ebda87b843970d902c903e Author: Andreas Mohr Date: Mon Aug 14 23:54:30 2006 -0700 [TG3]: Constify firmware structs Constify largish areas of firmware data in Tigon3 ethernet driver. non-const: lsmod: tg3 101404 0 objdump -x: .rodata 000003e8 .data 00004a0c ls -l: -rw-r--r-- 1 root root 114404 2006-08-19 21:36 drivers/net/tg3.ko const: lsmod: tg3 101404 0 objdump -x: .rodata 000042c8 .data 00000b4c ls -l: -rw-r--r-- 1 root root 114532 2006-08-19 21:06 drivers/net/tg3.ko Signed-off-by: Andreas Mohr Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 84fa7933a33f806bbbaae6775e87459b1ec584c0 Author: Patrick McHardy Date: Tue Aug 29 16:44:56 2006 -0700 [NET]: Replace CHECKSUM_HW by CHECKSUM_PARTIAL/CHECKSUM_COMPLETE Replace CHECKSUM_HW by CHECKSUM_PARTIAL (for outgoing packets, whose checksum still needs to be completed) and CHECKSUM_COMPLETE (for incoming packets, device supplied full checksum). Patch originally from Herbert Xu, updated by myself for 2.6.18-rc3. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit 7282d491ecaee9883233a0e27283c4c79486279a Author: Jeff Garzik Date: Wed Sep 13 14:30:00 2006 -0400 drivers/net: const-ify ethtool_ops declarations Signed-off-by: Jeff Garzik commit 6aa20a2235535605db6d6d2bd850298b2fe7f31e Author: Jeff Garzik Date: Wed Sep 13 13:24:59 2006 -0400 drivers/net: Trim trailing whitespace Signed-off-by: Jeff Garzik commit 299176206b266f204be859adf9e66efd06628ab2 Author: Jeff Garzik Date: Sat Aug 19 17:48:59 2006 -0400 drivers/net: Remove deprecated use of pci_module_init() From: Michal Piotrowski Signed-off-by: Michal Piotrowski Signed-off-by: Jeff Garzik commit 1b2a720506ccf7c30baaeda5d990c29b31e21726 Author: Michael Chan Date: Mon Aug 7 21:46:02 2006 -0700 [TG3]: Fix tx race condition Fix a subtle race condition between tg3_start_xmit() and tg3_tx() discovered by Herbert Xu : CPU0 CPU1 tg3_start_xmit() if (tx_ring_full) { tx_lock tg3_tx() if (!netif_queue_stopped) netif_stop_queue() if (!tx_ring_full) update_tx_ring netif_wake_queue() tx_unlock } Even though tx_ring is updated before the if statement in tg3_tx() in program order, it can be re-ordered by the CPU as shown above. This scenario can cause the tx queue to be stopped forever if tg3_tx() has just freed up the entire tx_ring. The possibility of this happening should be very rare though. The following changes are made: 1. Add memory barrier to fix the above race condition. 2. Eliminate the private tx_lock altogether and rely solely on netif_tx_lock. This eliminates one spinlock in tg3_start_xmit() when the ring is full. 3. Because of 2, use netif_tx_lock in tg3_tx() before calling netif_wake_queue(). 4. Change TX_BUFFS_AVAIL to an inline function with a memory barrier. Herbert and David suggested using the memory barrier instead of volatile. 5. Check for the full wake queue condition before getting netif_tx_lock in tg3_tx(). This reduces the number of unnecessary spinlocks when the tx ring is full in a steady-state condition. 6. Update version to 3.65. Signed-off-by: Michael Chan Acked-by: Herbert Xu Signed-off-by: David S. Miller commit d14cc9a342a8004b0ecfe66f1f12120962b61d8c Author: Christoph Hellwig Date: Mon Aug 7 16:11:48 2006 -0700 [TG3]: skb->dev assignment is done by netdev_alloc_skb All caller of netdev_alloc_skb need to assign skb->dev shortly afterwards. Move it into common code. Signed-off-by: Christoph Hellwig Signed-off-by: David S. Miller commit a20e9c6291f27cac4a9ab450d124794c012f87d4 Author: David S. Miller Date: Mon Jul 31 22:38:16 2006 -0700 [TG3]: Convert to netdev_alloc_skb Signed-off-by: David S. Miller commit b6e77a5346d8a739227ed73c2269966a4fd652b4 Author: Michael Chan Date: Tue Jul 25 16:39:12 2006 -0700 [TG3]: Update version and reldate Update version to 3.63. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 32d8c5724b7b05c7d8f7386c49432104cc222e32 Author: Michael Chan Date: Tue Jul 25 16:38:29 2006 -0700 [TG3]: Handle tg3_init_rings() failures Handle dev_alloc_skb() failures when initializing the RX rings. Without proper handling, the driver will crash when using a partial ring. Thanks to Stephane Doyon for reporting the bug and providing the initial patch. Howie Xu also reported the same issue. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b9ec6c1b917e2e43a058a78198d54aeca3d71c6f Author: Michael Chan Date: Tue Jul 25 16:37:27 2006 -0700 [TG3]: Add tg3_restart_hw() Add tg3_restart_hw() to handle failures when re-initializing the device. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c165b0040502ef0d2b5751eef3cd96ea8210ae4c Author: John W. Linville Date: Sat Jul 8 13:28:53 2006 -0700 [TG3]: add amd8131 to "write reorder" chipsets Add the AMD 8131 bridge to the list of chipsets that reorder writes. Signed-off-by: John W. Linville Acked-by: Michael Chan Signed-off-by: David S. Miller commit b0026624f1aa3e38a887cb483de61f104d600b97 Author: Michael Chan Date: Mon Jul 3 19:42:14 2006 -0700 [TG3]: Add ipv6 TSO feature Enable ipv6 TSO feature on chips that support it. Update version to 3.61. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1fb9df5d3069064c037c81c0ab8bf783ffa5e373 Author: Thomas Gleixner Date: Sat Jul 1 19:29:39 2006 -0700 [PATCH] irq-flags: drivers/net: Use the new IRQF_ constants Signed-off-by: Thomas Gleixner Cc: Ingo Molnar Cc: "David S. Miller" Cc: Benjamin Herrenschmidt Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit e37a72de84d27ee8bc0e7dbb5c2f1774ed306dbb Merge: 93fdf10 f83ef8c Author: Linus Torvalds Date: Fri Jun 30 15:40:17 2006 -0700 Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [IPV6]: Added GSO support for TCPv6 [NET]: Generalise TSO-specific bits from skb_setup_caps [IPV6]: Added GSO support for TCPv6 [IPV6]: Remove redundant length check on input [NETFILTER]: SCTP conntrack: fix crash triggered by packet without chunks [TG3]: Update version and reldate [TG3]: Add TSO workaround using GSO [TG3]: Turn on hw fix for ASF problems [TG3]: Add rx BD workaround [TG3]: Add tg3_netif_stop() in vlan functions [TCP]: Reset gso_segs if packet is dodgy commit 2c6059bca8cf5e7f722d909f2e5edda0491ac604 Author: Michael Chan Date: Thu Jun 29 20:16:28 2006 -0700 [TG3]: Update version and reldate Update version to 3.61. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 52c0fd834ea0e7c6ef8616ce0a1f85bac4233ed7 Author: Michael Chan Date: Thu Jun 29 20:15:54 2006 -0700 [TG3]: Add TSO workaround using GSO Use GSO to workaround a rare TSO bug on some chips. This hardware bug may be triggered when the TSO header size is greater than 80 bytes. When this condition is detected in a TSO packet, the driver will use GSO to segment the packet to workaround the hardware bug. Thanks to Juergen Kreileder for reporting the problem and collecting traces to help debug the problem. And thanks to Herbert Xu for providing the GSO mechanism that happens to be the perfect workaround for this problem. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1661394e78b3b2cc868cd0e89c1066974302aaca Author: Michael Chan Date: Thu Jun 29 20:15:13 2006 -0700 [TG3]: Turn on hw fix for ASF problems Clear a bit to enable a hardware fix for some ASF related problem. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f92905deb9bc89834dac247ca1a0d905ebcf629b Author: Michael Chan Date: Thu Jun 29 20:14:29 2006 -0700 [TG3]: Add rx BD workaround Add workaround to limit the burst size of rx BDs being DMA'ed to the chip. This works around hardware errata on a number of 5750, 5752, and 5755 chips. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 29315e8770c20cbfe607ad962d87867115a44555 Author: Michael Chan Date: Thu Jun 29 20:12:30 2006 -0700 [TG3]: Add tg3_netif_stop() in vlan functions Add tg3_netif_stop() when changing the vlgrp (vlan group) pointer. It is necessary to quiesce the device before changing that pointer. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6ab3d5624e172c553004ecc862bfeac16d9d68b7 Author: Jörn Engel Date: Fri Jun 30 19:25:36 2006 +0200 Remove obsolete #include Signed-off-by: Jörn Engel Signed-off-by: Adrian Bunk commit de8d28b16f5614aeb12bb69c8f9a38578b8d3ada Author: David S. Miller Date: Thu Jun 22 16:18:54 2006 -0700 [SPARC64]: Convert sparc64 PCI layer to in-kernel device tree. One thing this change pointed out was that we really should pull the "get 'local-mac-address' property" logic into a helper function all the network drivers can call. Signed-off-by: David S. Miller commit 7967168cefdbc63bf332d6b1548eca7cd65ebbcc Author: Herbert Xu Date: Thu Jun 22 02:40:14 2006 -0700 [NET]: Merge TSO/UFO fields in sk_buff Having separate fields in sk_buff for TSO/UFO (tso_size/ufo_size) is not going to scale if we add any more segmentation methods (e.g., DCCP). So let's merge them. They were used to tell the protocol of a packet. This function has been subsumed by the new gso_type field. This is essentially a set of netdev feature bits (shifted by 16 bits) that are required to process a specific skb. As such it's easy to tell whether a given device can process a GSO skb: you just have to and the gso_type field and the netdev's features field. I've made gso_type a conjunction. The idea is that you have a base type (e.g., SKB_GSO_TCPV4) that can be modified further to support new features. For example, if we add a hardware TSO type that supports ECN, they would declare NETIF_F_TSO | NETIF_F_TSO_ECN. All TSO packets with CWR set would have a gso_type of SKB_GSO_TCPV4 | SKB_GSO_TCPV4_ECN while all other TSO packets would be SKB_GSO_TCPV4. This means that only the CWR packets need to be emulated in software. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 00b7050426da8e7e58c889c5c80a19920d2d41b3 Author: Michael Chan Date: Sat Jun 17 21:58:45 2006 -0700 [TG3]: Convert to non-LLTX Herbert Xu pointed out that it is unsafe to call netif_tx_disable() from LLTX drivers because it uses dev->xmit_lock to synchronize whereas LLTX drivers use private locks. Convert tg3 to non-LLTX to fix this issue. tg3 is a lockless driver where hard_start_xmit and tx completion handling can run concurrently under normal conditions. A tx_lock is only needed to prevent netif_stop_queue and netif_wake_queue race condtions when the queue is full. So whether we use LLTX or non-LLTX, it makes practically no difference. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c71302d61f844f766a44e1b04258086cc41f624e Author: Michael Chan Date: Sat Jun 17 21:55:55 2006 -0700 [TG3]: Remove unnecessary tx_lock Remove tx_lock where it is unnecessary. tg3 runs lockless and so it requires interrupts to be disabled and sync'ed, netif_queue and NAPI poll to be stopped before the device can be reconfigured. After stopping everything, it is no longer necessary to get the tx_lock. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9cb3528cdbffc513eb9fb8faa45d41e397355830 Author: Michael Chan Date: Sat Jun 17 21:28:28 2006 -0700 [TG3]: update version and reldate Update version to 3.60. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit df3e6548186f0baa727cd6d3a492891854bd31f2 Author: Michael Chan Date: Fri May 26 17:48:07 2006 -0700 [TG3]: Add recovery logic when MMIOs are re-ordered Add recovery logic when we suspect that the system is re-ordering MMIOs. Re-ordered MMIOs to the send mailbox can cause bogus tx completions and hit BUG_ON() in the tx completion path. tg3 already has logic to handle re-ordered MMIOs by flushing the MMIOs that must be strictly ordered (such as the send mailbox). Determining when to enable the flush is currently a manual process of adding known chipsets to a list. The new code replaces the BUG_ON() in the tx completion path with the call to tg3_tx_recover(). It will set the TG3_FLAG_MBOX_WRITE_REORDER flag and reset the chip later in the workqueue to recover and start flushing MMIOs to the mailbox. A message to report the problem will be printed. We will then decide whether or not to add the host bridge to the list of chipsets that do re-ordering. We may add some additional code later to print the host bridge's ID so that the user can report it more easily. The assumption that re-ordering can only happen on x86 systems is also removed. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 30b6c28d2aca4669f2e609ad5d77ea2a6cf0dd3a Author: Michael Chan Date: Fri May 26 17:44:45 2006 -0700 [TG3]: Add 5786 PCI ID Add PCI ID for BCM5786 which is a variant of 5787. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f49639e643e69ff233b14966b8d48541d2e17517 Author: David S. Miller Date: Fri Jun 9 11:58:36 2006 -0700 [TG3]: Handle Sun onboard tg3 chips more correctly. Get rid of all the SUN_570X logic and instead: 1) Make sure MEMARB_ENABLE is set when we probe the SRAM for config information. If that is off we will get timeouts. 2) Always try to sync with the firmware, if there is no firmware running do not treat it as an error and instead just report it the first time we notice this condition. 3) If there is no valid SRAM signature, assume the device is onboard by setting TG3_FLAG_EEPROM_WRITE_PROT. Update driver version and release date. With help from Michael Chan and Fabio Massimo Di Nitto. Signed-off-by: David S. Miller commit 463d305bc51b8f5d0750a17ec0c9caf5181ec6d4 Author: Michael Chan Date: Mon May 22 16:36:27 2006 -0700 [TG3]: Add some missing rx error counters Add some missing rx error counters for 5705 and newer chips. Update version to 3.58. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ef34814426862c41c061520d4ac833be5914b5ba Author: Karsten Keil Date: Fri May 12 12:49:08 2006 -0700 [TG3]: ethtool always report port is TP. Even with fiber cards ethtool reports that the connected port is TP, the patch fix this. Signed-off-by: Karsten Keil Acked-by: Michael Chan Signed-off-by: David S. Miller commit a50bb7b9af9a7c39b2aba15678eb686ae428718c Author: Jesper Juhl Date: Tue May 9 23:14:35 2006 -0700 [TG3]: Fix possible NULL deref in tg3_run_loopback(). tg3_run_loopback doesn't check that dev_alloc_skb() returns anything useful. Even if dev_alloc_skb() fails to return an skb to us we'll happily go on and assume it did, so we risk dereferencing a NULL pointer. Much better to fail gracefully by returning -ENOMEM than crashing here. Signed-off-by: Jesper Juhl Signed-off-by: David S. Miller commit b276764091cf241cf0b31e8cb76c67dcf9a9c1d8 Author: Michael Chan Date: Sat Apr 29 19:01:06 2006 -0700 [TG3]: Update version and reldate Update version to 3.57. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f6d9a2565bc754043f43b8f51b19f77ee0269411 Author: Michael Chan Date: Sat Apr 29 19:00:24 2006 -0700 [TG3]: Fix bug in nvram write Fix bug in nvram write function. If the starting nvram address offset happens to be the last dword of the page, the NVRAM_CMD_LAST bit will not get set in the existing code. This patch fixes the bug by changing the "else if" to "if" so that the last dword condition always gets checked. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8e7a22e3eb49042c048f24bab40cf5cf8915487d Author: Gary Zambrano Date: Sat Apr 29 18:59:13 2006 -0700 [TG3]: Add reset_phy parameter to chip reset functions Add a reset_phy parameter to tg3_reset_hw() and tg3_init_hw(). With the full chip reset during MAC address change, the automatic PHY reset during chip reset will cause a link down and bonding will not work properly as a result. With this reset_phy parameter, we can do a chip reset without link down when changing MAC address or MTU. Signed-off-by: Gary Zambrano Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 58712ef9f2cbaaeac5b32ac11810a4bbd0eeacc5 Author: Michael Chan Date: Sat Apr 29 18:58:01 2006 -0700 [TG3]: Reset chip when changing MAC address Do the full chip reset when changing MAC address if ASF is enabled. ASF sometimes uses a different MAC address than the driver. Without the reset, the ASF MAC address may be overwritten when the driver's MAC address is changed. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c424cb249dae10fb7f118f89091f1329b62b92f4 Author: Michael Chan Date: Sat Apr 29 18:56:34 2006 -0700 [TG3]: Add phy workaround Add some PHY workaround code to reduce jitter on some PHYs. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c8e1e82b6a97ad44517517aa58b7b794ead0bf33 Author: Michael Chan Date: Sat Apr 29 18:55:17 2006 -0700 [TG3]: Call netif_carrier_off() during phy reset Add netif_carrier_off() call during tg3_phy_reset(). This is needed to properly track the netif_carrier state in cases where we do a PHY reset with interrupts disabled. The SerDes code will not run properly if the netif_carrier state is wrong. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bbadf503d7c7e6efe0a4cd731f8855ba08276215 Author: Michael Chan Date: Thu Apr 6 21:46:34 2006 -0700 [TG3]: Speed up SRAM access (2nd version) Speed up SRAM read and write functions if possible by using MMIO instead of config. cycles. With this change, the post reset signature done at the end of D3 power change must now be moved before the D3 power change. IBM reported a problem on powerpc blades during ethtool self test that was caused by the memory test taking excessively long. Config. cycles are very slow on powerpc and the memory test can take more than 10 seconds to complete using config. cycles. David Miller informed me that an earlier version of the patch caused problems on sparc64 systems with built-in tg3 chips. This version fixes the problem by excluding all SUN built-in tg3 chips from doing MMIO SRAM access. TG3_FLAG_EEPROM_WRITE_PROT is also set unconditionally when TG3_FLG2_SUN_570X is set. This should be sane as all SUN chips are built-in and do not require Vaux switching. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d2d746f83b74022a50d28f7f0f496842c9cde330 Author: Michael Chan Date: Thu Apr 6 21:45:39 2006 -0700 [TG3]: Kill some less useful flags Kill the TG3_FLAG_NO_{TX|RX}_PSEUDO_CSUM flags because they are not very useful. This will free up some bits for new flags. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ad96b485b4224785bcca478cfba02d06c46ee575 Author: Adrian Bunk Date: Wed Apr 5 22:21:04 2006 -0700 [TG3]: Fix a memory leak. This patch fixes a memory leak (buf wasn't freed) spotted by the Coverity checker. Signed-off-by: Adrian Bunk Signed-off-by: David S. Miller commit 63589ed0785ffc715777a54ccb96cdfaea9edbc0 Merge: 24c7cd0 a580290 Author: Linus Torvalds Date: Sun Apr 2 12:58:45 2006 -0700 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial * git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (48 commits) Documentation: fix minor kernel-doc warnings BUG_ON() Conversion in drivers/net/ BUG_ON() Conversion in drivers/s390/net/lcs.c BUG_ON() Conversion in mm/slab.c BUG_ON() Conversion in mm/highmem.c BUG_ON() Conversion in kernel/signal.c BUG_ON() Conversion in kernel/signal.c BUG_ON() Conversion in kernel/ptrace.c BUG_ON() Conversion in ipc/shm.c BUG_ON() Conversion in fs/freevxfs/ BUG_ON() Conversion in fs/udf/ BUG_ON() Conversion in fs/sysv/ BUG_ON() Conversion in fs/inode.c BUG_ON() Conversion in fs/fcntl.c BUG_ON() Conversion in fs/dquot.c BUG_ON() Conversion in md/raid10.c BUG_ON() Conversion in md/raid6main.c BUG_ON() Conversion in md/raid5.c Fix minor documentation typo BFP->BPF in Documentation/networking/tuntap.txt ... commit 5d9428de1a9785f10a4339f80b717be665ba51c7 Author: Eric Sesterhenn Date: Sun Apr 2 13:52:48 2006 +0200 BUG_ON() Conversion in drivers/net/ this changes if() BUG(); constructs to BUG_ON() which is cleaner, contains unlikely() and can better optimized away. Signed-off-by: Eric Sesterhenn Signed-off-by: Adrian Bunk commit 5c516c10198a8258c0c40f200a5a01a3fa0a0de4 Author: David S. Miller Date: Sat Apr 1 00:33:31 2006 -0800 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit 758a613936223699f99081fc75eff7cf67b208f6 Author: David S. Miller Date: Sat Apr 1 00:32:56 2006 -0800 [TG3]: Revert "Speed up SRAM access" Undo commit 100c4673307f5806788791b9b886877c806afd96 MMIOs timeout more quickly that PCI config cycles and some of these SRAM accesses can take a very long time, triggering the MMIO limits on some sparc64 PCI controllers and thus resulting in bus timeouts and bus errors. Signed-off-by: David S. Miller commit e3a05978f18a38ae13bb3f1184abf3c999e06da9 Author: Michael Chan Date: Mon Mar 27 23:21:07 2006 -0800 [TG3]: Update version and reldate Update version to 3.55. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f475f163f128a0d9c92dfa90bcb5953fd8f9766f Author: Michael Chan Date: Mon Mar 27 23:20:14 2006 -0800 [TG3]: Skip timer code during full lock Skip the main timer code if interrupts are disabled in the full lock state. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 100c4673307f5806788791b9b886877c806afd96 Author: Michael Chan Date: Mon Mar 27 23:19:00 2006 -0800 [TG3]: Speed up SRAM access Speed up SRAM read and write functions if possible by using MMIO instead of config. cycles. With this change, the post reset signature done at the end of D3 power change must now be moved before the D3 power change. IBM reported a problem on powerpc blades during ethtool self test that was caused by the memory test taking excessively long. Config. cycles are very slow on powerpc and the memory test can take more than 10 seconds to complete using config. cycles. As a result, NETDEV WATCHDOG can be triggered during self test and the chip can end up in a funny state. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ff18ff023495a4f1ce7c65e7c376c4720eccf4da Author: Michael Chan Date: Mon Mar 27 23:17:27 2006 -0800 [TG3]: Fix PHY loopback on 5700 Fix PHY loopback failure on some 5700 devices. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6728a8e2e180b96ac7940dd4d766c52f8e177717 Author: Michael Chan Date: Mon Mar 27 23:16:49 2006 -0800 [TG3]: Fix bug in 40-bit DMA workaround code Need to check the TG3_FLAG_40BIT_DMA_BUG flag in the workaround code path instead of device flags. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 008652b337364ee994a0cd71d88a0fe9f00fc7ca Author: Michael Chan Date: Mon Mar 27 23:14:53 2006 -0800 [TG3]: Fix probe failure due to invalid MAC address Some older bootcode in some devices may report 0 MAC address in SRAM when booting up from low power state. This patch fixes the problem by checking for a valid MAC address in SRAM and falling back to NVRAM if necessary. Thanks to walt for reporting the problem and helping to debug it. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 95381c893dd71a534ab56f09b12a4e2118aa0f32 Author: David S. Miller Date: Thu Mar 23 01:29:06 2006 -0800 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit d3c7b886978bef42f5ea487dec376c482d3cd7e3 Author: Michael Chan Date: Thu Mar 23 01:28:25 2006 -0800 [TG3]: Add 5755 nvram support Add 5755 nvram support. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit af36e6b6d7f4ad7a5ccfd14dfa71ec941255f93d Author: Michael Chan Date: Thu Mar 23 01:28:06 2006 -0800 [TG3]: Add 5755 support Add support for new chip 5755 which is very similar to 5787. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 056755f4d73d49b4adcbb8ecdaf75138cf166bd3 Author: David S. Miller Date: Wed Mar 22 01:07:53 2006 -0800 [TG3]: Bump driver version and reldate. Signed-off-by: David S. Miller commit 15c3b696101992c4d69962325f0e91647164427f Author: Michael Chan Date: Wed Mar 22 01:06:52 2006 -0800 [TG3]: Skip phy power down on some devices Some PHYs should not be powered down in tg3_set_power_state() because of bugs or other hardware limitations. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit caf636c760b33c72ebf018ff03c1b0d79ea6656a Author: Michael Chan Date: Wed Mar 22 01:05:31 2006 -0800 [TG3]: Fix SRAM access during tg3_init_one() 5700 and 5701 will not return correct SRAM data when the chip is in D3hot power state. tg3_get_eeprom_hw_cfg() must first put the device in D0 before reading SRAM. Thanks to Thomas Chenault at Dell for noticing this problem. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 30ca3e376e82cc44488b1d377adfb10b5818548e Author: David S. Miller Date: Mon Mar 20 23:02:36 2006 -0800 [TG3]: Don't mark tg3_test_registers() as returning const. Signed-off-by: David S. Miller commit 81789ef5c9a435fbf94224987efe6fbb97ffab09 Author: Adrian Bunk Date: Mon Mar 20 23:00:14 2006 -0800 [TG3]: make drivers/net/tg3.c:tg3_request_irq() static This patch makes the needlessly global function tg3_request_irq() static. Signed-off-by: Adrian Bunk Signed-off-by: David S. Miller commit 59f1741e541bf4f6139599389610a70de49c3ad2 Author: Jeff Mahoney Date: Mon Mar 20 22:39:21 2006 -0800 [TG3]: netif_carrier_off runs too early; could still be queued when init fails Move the netif_carrier_off() call from tg3_init_one()-> tg3_init_link_config() to tg3_open() as is the convention for most other network drivers. I was getting a panic after a tg3 device failed to initialize due to DMA failure. The oops pointed to the link watch queue with spinlock debugging enabled. Without spinlock debugging, the Oops didn't occur. I suspect that the link event was getting queued but not executed until after the DMA test had failed and the device was freed. The link event was then operating on freed memory, which could contain anything. With this patch applied, the Oops no longer occurs. [ Based upon feedback from Michael Chan, we move netif_carrier_off() to the end of tg3_init_one() instead of moving it to tg3_open() -DaveM ] Signed-off-by: Jeff Mahoney Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit e9e678006ee865b0f7e53069b0e519141a710a6e Author: Michael Chan Date: Mon Mar 20 22:29:52 2006 -0800 [TG3]: update version and reldate Update version to 3.52. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c4e6575c78b83928c470d81b271909084a2efd37 Author: Michael Chan Date: Mon Mar 20 22:29:32 2006 -0800 [TG3]: Add firmware version info Add fw_version information to ethtool -i. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1820180b0e59cc48019414018b180518059f50d3 Author: Michael Chan Date: Mon Mar 20 22:29:15 2006 -0800 [TG3]: nvram cleanup Some nvram related cleanup: 1. Add a tg3_nvram_read_swab() since swabing the data is frequently done. 2. Add a function to convert nvram address to physical address instead of doing it in 2 separate places. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 79f4d13a15774c2d442b619bad95a4c612eed4f3 Author: Michael Chan Date: Mon Mar 20 22:28:57 2006 -0800 [TG3]: Fixup memory test for 5787 Ethtool memory test on 5787 requires a new memory table. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fcfa0a32c767219c1bdad621ef4a3aff1904cbbd Author: Michael Chan Date: Mon Mar 20 22:28:41 2006 -0800 [TG3]: Add new one-shot MSI handler Support one-shot MSI on 5787. This one-shot MSI idea is credited to David Miller. In this mode, MSI disables itself automatically after it is generated, saving the driver a register access to disable it for NAPI. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9c27dbdf64cba05d0cacc343118a7fd01d4b82f7 Author: Michael Chan Date: Mon Mar 20 22:28:27 2006 -0800 [TG3]: Add ipv6 checksum support Support ipv6 tx csum on 5787 by setting NETIF_F_HW_CSUM. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5a6f3074c2ea5a7b4ff5b18f0e1fd9b1257e1a29 Author: Michael Chan Date: Mon Mar 20 22:28:05 2006 -0800 [TG3]: Add new hard_start_xmit Support 5787 hardware TSO using a new flag TG3_FLG2_HW_TSO_2. Since the TSO interface is slightly different and these chips have finally fixed the 4GB DMA problem and do not have the 40-bit DMA problem, a new hard_start_xmit is used for these chips. All previous chips will use the old hard_start_xmit that is now renamed tg3_start_xmit_dma_bug(). Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1b27777a9b9b2b6d1c06000b7a31262d198b4238 Author: Michael Chan Date: Mon Mar 20 22:27:48 2006 -0800 [TG3]: Add 5787 nvram support Support additional nvrams and new nvram format for 5787 and 5754. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d9ab5ad12b0d865bdb1b750d81192d34465541e9 Author: Michael Chan Date: Mon Mar 20 22:27:35 2006 -0800 [TG3]: Add 5787 and 5754 basic support Add basic support for 2 new chips 5787 and 5754. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4f81c32b028aecd818634b1ef36aae3b2b3e66ce Author: Michael Chan Date: Mon Mar 20 21:33:42 2006 -0800 [TG3]: Fix tg3_get_ringparam() Fix-up tg3_get_ringparam() to return the correct parameters. Set the jumbo rx ring parameter only if it is supported by the chip and currently in use. Add missing value for tx_max_pending, noticed by Rick Jones. Update version to 3.51. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e75f7c900944aa90831f6d343ca40090a68b56dd Author: Michael Chan Date: Mon Mar 20 21:33:26 2006 -0800 [TG3]: Add some missing netif_running() checks Add missing netif_running() checks in tg3's dev->set_multicast_list() and dev->set_mac_address(). If not netif_running(), these 2 calls can simply return 0 after storing the new settings if required. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2e2e4f5c996d577383c5cb584b153b39f4961155 Author: Michael Chan Date: Mon Mar 20 17:48:18 2006 -0800 [TG3]: Update version and reldate Update version to 3.50. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bc1c756741b065cfebf850e4164c0e2aae9d527f Author: Michael Chan Date: Mon Mar 20 17:48:03 2006 -0800 [TG3]: Support shutdown WoL. Support WoL during shutdown by calling tg3_set_power_state(tp, PCI_D3hot) during tg3_close(). Change the power state parameter to pci_power_t type and use constants defined in pci.h. Certain ethtool operations cannot be performed after tg3_close() because the device will go to low power state. Add return -EAGAIN in such cases where appropriate. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4e3a7aaa28db952392814f889dfbd25672266d29 Author: Michael Chan Date: Mon Mar 20 17:47:44 2006 -0800 [TG3]: Enable TSO by default Enable TSO by default on newer chips that support TSO in hardware. Leave TSO off by default on older chips that do firmware TSO because performance is slightly lower. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d4d2c558fd3e1f5e386b153f194aa8f0be496c77 Author: Michael Chan Date: Mon Mar 20 17:47:20 2006 -0800 [TG3]: Add support for 5714S and 5715S Add support for 5714S and 5715S. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c4a1745aa09fc110afdefea0e5d025043e348bae Merge: 88dcb91 ac0eb3e Author: Linus Torvalds Date: Mon Mar 20 11:57:50 2006 -0800 Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: (230 commits) [SPARC64]: Update defconfig. [SPARC64]: Fix 2 bugs in huge page support. [SPARC64]: CONFIG_BLK_DEV_RAM fix [SPARC64]: Optimized TSB table initialization. [SPARC64]: Allow CONFIG_MEMORY_HOTPLUG to build. [SPARC64]: Use SLAB caches for TSB tables. [SPARC64]: Don't kill the page allocator when growing a TSB. [SPARC64]: Randomize mm->mmap_base when PF_RANDOMIZE is set. [SPARC64]: Increase top of 32-bit process stack. [SPARC64]: Top-down address space allocation for 32-bit tasks. [SPARC64] bbc_i2c: Fix cpu check and add missing module license. [SPARC64]: Fix and re-enable dynamic TSB sizing. [SUNSU]: Fix missing spinlock initialization. [TG3]: Do not try to access NIC_SRAM_DATA_SIG on Sun parts. [SPARC64]: First cut at VIS simulator for Niagara. [SPARC64]: Fix system type in /proc/cpuinfo and remove bogus OBP check. [SPARC64]: Add SMT scheduling support for Niagara. [SPARC64]: Fix 32-bit truncation which broke sparsemem. [SPARC64]: Move over to sparsemem. [SPARC64]: Fix new context version SMP handling. ... commit d378aca6ec708bfb24df5c47801b1f2399efc481 Merge: abc71c4 7705a87 Author: Jeff Garzik Date: Mon Mar 20 04:38:03 2006 -0500 Merge branch 'master' commit 72b845e04e99298e5179b31e8de16afed52a2627 Author: David S. Miller Date: Tue Mar 14 14:11:48 2006 -0800 [TG3]: Do not try to access NIC_SRAM_DATA_SIG on Sun parts. Sun does't put an SEEPROM behind the tigon3 chip, among other things, so accesses to these areas just give bus timeouts. Signed-off-by: David S. Miller commit 4a29cc2e503b33a1e96db4c3f9a94165f153f259 Author: Michael Chan Date: Sun Mar 19 13:21:12 2006 -0800 [TG3]: 40-bit DMA workaround part 2 The 40-bit DMA workaround recently implemented for 5714, 5715, and 5780 needs to be expanded because there may be other tg3 devices behind the EPB Express to PCIX bridge in the 5780 class device. For example, some 4-port card or mother board designs have 5704 behind the 5714. All devices behind the EPB require the 40-bit DMA workaround. Thanks to Chris Elmquist again for reporting the problem and testing the patch. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit abc71c46dc0a12ab7fddc18cfe4f4aa26808c79b Merge: 30dcbf2 232a347 Author: Jeff Garzik Date: Thu Mar 16 19:27:08 2006 -0500 Merge branch 'upstream-fixes' commit 0ade309be739eceedc4812798da09d698a59867d Author: Adrian Bunk Date: Sat Mar 11 18:49:38 2006 -0800 [TG3] tg3_bus_string(): remove dead code The Coverity checker spotted this dead code (note that (clock_ctrl == 7) is already handled above). Signed-off-by: Adrian Bunk Signed-off-by: David S. Miller commit 749dfc70554f2c9e6624ac843d66571265ed9338 Merge: 74f5ec2 0992a5d Author: Jeff Garzik Date: Sat Mar 11 13:35:31 2006 -0500 Merge branch 'upstream-fixes' commit 72f2afb8a6858edd9335cd158eb21053a0c2c39a Author: Michael Chan Date: Mon Mar 6 19:28:35 2006 -0800 [TG3]: Add DMA address workaround Add DMA workaround for chips that do not support full 64-bit DMA addresses. 5714, 5715, and 5780 chips only support DMA addresses less than 40 bits. On 64-bit systems with IOMMU, set the dma_mask to 40-bit so that pci_map_xxx() calls will map the DMA address below 40 bits if necessary. On 64-bit systems without IOMMU, set the dma_mask to 64-bit and check for DMA addresses exceeding the limit in tg3_start_xmit(). 5788 only supports 32-bit DMA so need to set the mask appropriately also. Thanks to Chris Elmquist at SGI for reporting and helping to debug the problem on 5714. Thanks to David Miller for explaining the HIGHMEM and DMA stuff. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f71e130966ba429dbd24be08ddbcdf263df9a5ad Author: Arjan van de Ven Date: Fri Mar 3 21:33:57 2006 -0500 Massive net driver const-ification. commit 051d3cbd96909b2fe6b5038e7bbe77f41356db05 Author: David S. Miller Date: Mon Feb 27 12:51:27 2006 -0800 [TG3]: Fix Sun tg3 variant detection. Some Sun parts don't have PCI_VENDOR_ID_SUN in the subsystem vendor ID. So add another fallback test, which is the name of the OBP firmware device tree node. If it's a Sun part we'll get "network", else it will be named "ethernet". Signed-off-by: David S. Miller commit 6e2be3ea4fab4d1c02e369719311e8d7ae6cc7c1 Author: David S. Miller Date: Thu Feb 2 17:29:59 2006 -0800 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 7faa006f94fda56a587242b2a22fa19abf840222 Author: Michael Chan Date: Thu Feb 2 17:29:28 2006 -0800 [TG3]: Flush tg3_reset_task() Make sure tg3_reset_task() is flushed in the close and suspend paths as noted by Jeff Garzik. In the close path, calling flush_scheduled_work() may cause deadlock if linkwatch_event() is on the workqueue. linkwatch_event() will try to get the rtnl_lock() which is already held by tg3_close(). So instead, we set a flag in tg3_reset_task() and tg3_close() polls the flag until it is cleared. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ec41c7dfd525468decb9da9281dbc9ed82d98c98 Author: Michael Chan Date: Tue Jan 17 02:40:55 2006 -0800 [TG3]: Refine nvram locking Add nvram lock count so that calls to tg3_nvram_lock()/unlock() can be nested. Add error checking to all callers of tg3_nvram_lock() where appropriate. To prevent nvram lock failures after halting the firmware, it is also necessary to release firmware's nvram lock in tg3_halt_cpu(). Update version to 3.48. Based on David Miller's initial patch. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fd30333d0fab9e870af89e112454996c188655e9 Author: Alexey Dobriyan Date: Tue Jan 3 14:19:25 2006 -0800 [TG3]: fixup tot_len calculation Turning struct iphdr::tot_len into __be16 added sparse warning. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 14c850212ed8f8cbb5972ad6b8812e08a0bc901c Author: Arnaldo Carvalho de Melo Date: Tue Dec 27 02:43:12 2005 -0200 [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h To help in reducing the number of include dependencies, several files were touched as they were getting needed headers indirectly for stuff they use. Thanks also to Alan Menegotto for pointing out that net/dccp/proto.c had linux/dccp.h include twice. Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit a8b554e75b0c14d5e12a11eaea604e536f49da29 Author: David S. Miller Date: Wed Dec 28 13:05:41 2005 -0800 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit 091465d7514893a55dcf63e420698b21159c39a7 Author: Chris Elmquist Date: Tue Dec 20 13:25:19 2005 -0800 [TG3]: ethtool -d hangs PCIe systems Resubmitting after recommendation to use GET_REG32_1() instead of GET_REG32_LOOP(..., 1). Retested. Problem remains fixed. Prevent tg3_get_regs() from reading reserved and undocumented registers at RX_CPU_BASE and TX_CPU_BASE offsets which caused hostile behavior on PCIe platforms. Acked-by: Michael Chan Signed-off-by: David S. Miller commit 38690194bc897dd60a61a71b15e861e13b5d8bdd Author: Michael Chan Date: Mon Dec 19 16:27:28 2005 -0800 [TG3]: Fix ethtool memory test Skip the memory 0xb50 to 0x1000 during "ethtool -t" memory test. Overwriting memory in this region can cause ASF problems. Update version and release date. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b401e9e2ec44a5fc1d8053546276bff584b7118e Author: Michael Chan Date: Mon Dec 19 16:27:04 2005 -0800 [TG3]: Add tw32_wait_f() for some sensitive registers The tw32_f() function (register write with immediate read flush) can hang when used on some registers to switch clock frequencies and power. A new tw32_wait_f() is added for such registers with the delay before the read and after the read. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit dc56b7d46dd2b303a844166ef931270b882bf08c Author: Michael Chan Date: Mon Dec 19 16:26:28 2005 -0800 [TG3]: Some low power fixes Add some missing workarounds in tg3_set_power_state(): 1. Workaround to prevent overdrawing current on 5714. 2. Do not power down 5700's PHY because of hw limitation. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8c2dc7e1e7213c55f1b97eba09de6c0cee9ad12f Author: Michael Chan Date: Mon Dec 19 16:26:02 2005 -0800 [TG3]: Fix peer device handling Locate the pdev_peer for dual port 5714 NIC devices in addition to 5704 devices. The name is also changed to tg3_find_peer() from tg3_find_5704_peer(). It is also necessary to call netdev_priv() to get to the peer's private tg3 structure. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6921d201f77e14848df2eaa597e26525f468abea Author: Michael Chan Date: Tue Dec 13 21:15:53 2005 -0800 [TG3]: Fix low power state Fix the following bugs in tg3_set_power_state(): 1. Both WOL and ASF flags require switching to aux power. 2. Add a missing handshake with firmware to enable WOL. 3. Turn off the PHY if both WOL and ASF are disabled. 4. Add nvram arbitration before halting the firmware. 5. Fix tg3_setup_copper_phy() to switch to 100Mbps when changing to low power state. Update revision and date. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 16fe9d74f14ed74af778c5db7f9129e29916f4a7 Author: Michael Chan Date: Tue Dec 13 21:09:54 2005 -0800 [TG3]: Fix 5704 single-port mode If the dual-port 5704 is configured as a single-port device with only one PCI function, it would trigger a BUG() condition in tg3_find_5704_peer(). This fixes the problem by returning its own pdev if the peer cannot be found. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6a9eba15f51c56da637e45ea1316eaa2a848986a Author: Michael Chan Date: Tue Dec 13 21:08:58 2005 -0800 [TG3]: Fix suspend and resume Fix tg3_suspend() and tg3_resume() by clearing and setting the TG3_FLAG_INIT_COMPLETE flag when appropriate. tg3_set_power_state() looks at TG3_FLAG_INIT_COMPLETE on the peer device to determine when to appropriately switch to aux power. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 381291b7d3e17ac966498312dc571dcca1b93efc Author: Michael Chan Date: Tue Dec 13 21:08:21 2005 -0800 [TG3]: Fix nvram arbitration bugs. The nvram arbitration rules were not strictly followed in a few places and this could lead to reading corrupted values from the nvram. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1f064a87c80c86bd3878e6633de61e8b71aa6788 Author: Stephen Hemminger Date: Tue Dec 6 17:36:44 2005 -0800 [TG3]: remove warning on race [ Move assosciated code comment to the correct spot, and update driver version and release date -DaveM ] Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit f9a5f7d3f3319aac02a7a36a2fea10bd33c3d16a Author: Tobias Klauser Date: Sat Oct 29 15:09:26 2005 +0200 [PATCH] drivers/net/tg3: Use the DMA_{32,64}BIT_MASK constants This one from my DMA_{32,64}BIT_MASK series did not seem to make it through to upstream. Use the DMA_{32,64}BIT_MASK constants from dma-mapping.h when calling pci_set_dma_mask() or pci_set_consistent_dma_mask() This patch includes dma-mapping.h explicitly because it caused errors on some architectures otherwise. See http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for details Signed-off-by: Tobias Klauser Signed-off-by: Jeff Garzik commit b4558ea93d66a43f7990d26f145fd4c54a01c9bf Author: Jesper Juhl Date: Fri Oct 28 16:53:13 2005 -0400 drivers/net: Remove pointless checks for NULL prior to calling kfree() commit 37ff238d68683d42e7363eee3303773906c336d9 Author: Michael Chan Date: Wed Oct 26 15:49:51 2005 -0700 [PATCH] tg3: update version and minor fixes Update version and reldate and add more sanity checking to tg3_set_settings(). Signed-off-by: Gary Zambrano Signed-off-by: Michael Chan Signed-off-by: Jeff Garzik commit 28fbef78a420acdea20570d31f3bdcbfa0cac0d2 Author: Michael Chan Date: Wed Oct 26 15:48:35 2005 -0700 [PATCH] tg3: fix ASF heartbeat Change the ASF heart beat to 5 seconds for faster detection of system crash. The driver sends the heartbeat every 2 seconds and the ASF firmware will timeout and reset the device if no heartbeat is received after 5 seconds. The old scheme of 2 minutes is ineffective. tg3_write_mem_fast() is added to speed up the IO to send the heartbeat. When no workaround is needed, it will use direct MMIO to memory space to write to memory. Signed-off-by: Michael Chan Signed-off-by: Jeff Garzik commit a4e2b347848bf626b822599329933887dc90e50f Author: Michael Chan Date: Wed Oct 26 15:46:52 2005 -0700 [PATCH] tg3: add 5714/5715 support Add complete support for 5714/5715. These chips are very similar to 5780 so the changes are very trivial. A TG3_FLG2_5780_CLASS flag is added to identify these chips. Signed-off-by: Michael Chan Signed-off-by: Jeff Garzik commit ed39f731ab2e77e58122232f6e27333331d7793d Author: David S. Miller Date: Mon Oct 3 16:25:23 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 399de50bbbb2501a6db43daaa8a2dafbc9bcfe0c Author: Michael Chan Date: Mon Oct 3 14:02:39 2005 -0700 [TG3]: Refine AMD K8 write-reorder chipset test. Test for VIA K8T800 north bridge instead of AMD K8 HyperTransport bridge based on new information from Andi Kleen. The AMD HyperTransport interface is not responsible for PCI transactions and so the re-ordering is more likely done by the VIA north bridge. This code is subject to change if we get more information from AMD or VIA. PCI Express devices are excluded from doing the read flush since all chipsets in the write_reorder list are PCI chipsets. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c8a6c2963982c68475f409aeee21aa80b923cb9c Author: David S. Miller Date: Tue Sep 27 12:13:38 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit f9804ddbeec2ea709255830a8822bfb4e7584f6a Author: Michael Chan Date: Tue Sep 27 12:13:10 2005 -0700 [TG3]: misc. fixes Fix interrupt test handler by adding check for IRQ assertion in PCI_STATE register in addition to the status block updated bit. Add test for valid ethernet address in tg3_set_mac_addr(). Add tg3_bus_string() to setup the PCI bus speed/width string for all PCI/PCIX/PCI Express devices. This is used to print the bus type during init_one(). Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c94e39418ab6eccf863581f4e0d847da0080b2d3 Author: Michael Chan Date: Tue Sep 27 12:12:42 2005 -0700 [TG3]: 5780 PHY fixes Fix 5780 PHY related problems: 1. MAC_RX_MODE reset must be done before setting up the MAC_MODE register on 5705_PLUS chips or the chip will stop receiving after a while. The MAC_RX_MODE reset is needed to prevent intermittently losing the first receive packet on serdes chips. 2. Skip MAC loopback test on 5780 because of hardware errata. Normal traffic including PHY loopback is not affected by the errata. 3. PHY loopback fails intermittently on 5708S and this is fixed by putting the PHY in loopback mode first before programming the MAC mode register. A MAC_RX_MODE reset is also added. 4. Return -EINVAL in tg3_nway_reset() if device is in TBI mode. Allow nway_reset if 5780S is in parallel detect mode. 5. Add missing PHY IDs in KNOWN_PHY_ID() macro. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c58ec93245a1fb7354f9e331960380827b9f41db Author: Michael Chan Date: Sat Sep 17 00:46:27 2005 -0700 [TG3]: Fix 4GB boundary tx handling Fix and simplify the workaround code for the 4GB boundary tx buffer hardware bug. 1. Need to unmap the original SKB's dma addresses if a new SKB cannot be allocated. 2. Need to pass the base flag to tigon3_4gb_hwbug_workaround() or TSO won't work properly. 3. The guilty entry and length parameters for tigon3_4gb_hwbug_workaround() are removed as they are not necessary. 4. Remove assumption that only one fragment can hit the 4GB boundary. Another fragment can hit 8GB for example. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 22abe310bc4b0c684fd3716af6b6116ff1011707 Author: Peter Hagervall Date: Fri Sep 16 17:01:03 2005 -0700 [TG3]: Sparse fixes for tg3 Change 0 to NULL where appropriate. Signed-off-by: Peter Hagervall Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit 1cbf07478bbf3e350a2025bc5ea23fedaa95855a Author: David S. Miller Date: Fri Sep 16 16:59:20 2005 -0700 [TG3]: Add AMD K8 to list of write-reorder chipsets. Thanks to Andy Stewart for the report and testing debug patches from Michael Chan. Signed-off-by: David S. Miller commit 2ff436977ed3eeca2d39ae40bbfdb1ce58da8453 Author: John W. Linville Date: Mon Sep 12 14:44:20 2005 -0700 [TG3]: Add support for ETHTOOL_GPERMADDR. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 4f63b877726135b19ae73108acf9e0ebb4323dda Author: John W. Linville Date: Mon Sep 12 14:43:18 2005 -0700 [TG3]: Do not count non-error frames dropped by the hardware as rx_errors. Instead, count them as part of rx_missed_errors. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 74da1edf264c5982b465041a5706caff25d7e1ed Author: David S. Miller Date: Mon Sep 5 17:56:11 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 38f3843ed6bdbcff9465386c3539523466880320 Author: Michael Chan Date: Mon Sep 5 17:53:32 2005 -0700 [TG3]: Use status tag to check for new events Use the status tag to determine if there are new events in tg3_interrupt_tagged(). We discussed about this a while ago with Grant Grundler and DaveM. This scheme makes it unnecessary to clear the updated bit in the status block when using tagged mode, and only a simple comparison is needed to determine if there are new events. The tp->lock around netif_rx_complete() and tg3_restart_ints() is also removed. It is unnecessary with DaveM's new locking scheme. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 61487480dd79acc5e82b08cd29cbcbd3301645fa Author: Michael Chan Date: Mon Sep 5 17:53:19 2005 -0700 [TG3]: Remove status block access in tg3_msi() and add prefetches Remove unnecessary status block accesses in tg3_msi(). Since MSI is not shared, it is unnecessary to read the status block to determine if there are any new events in the MSI handler. It is also unnecessary to clear the updated bit in the status block. Since the poll list is per-cpu, tg3_poll() will be scheduled to run on the same CPU that received the MSI. Prefetches for the status block and the next rx descriptors are added in tg3_msi() to improve their access times when tg3_poll() runs. In the non-MSI irq handlers, we need to check the status block because interrupts may be shared. Only prefetches for the next rx descriptors are added. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9f40dead25957434937f2b1872e9f4b43605f0ad Author: Michael Chan Date: Mon Sep 5 17:53:06 2005 -0700 [TG3]: Add PHY loopback test Improve ethtool loopback self test by adding PHY loopback to the existing MAC loopback test. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4009a93d8e85f685b02794aee28e3272be862e2b Author: Michael Chan Date: Mon Sep 5 17:52:54 2005 -0700 [TG3]: Add ethtool -p support Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4c98748763ce25c5394a7edd686d92c70b4fac38 Author: Michael Chan Date: Mon Sep 5 17:52:38 2005 -0700 [TG3]: Minor 5780 and 5752 fixes Minor SerDes bug fixes for 5780S and nvram bug fixes for 5780 and 5752. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 75c80c382fbd08acf06fbef9d54c9844e806a8b4 Author: David S. Miller Date: Thu Sep 1 17:42:23 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 51b9146869ab9492da785c5c9321d85f01655ab6 Author: Michael Chan Date: Thu Sep 1 17:41:28 2005 -0700 [TG3]: Minimize locking in TX path. This is similar to Eric Dumazet's tx_lock patch for tg3 but takes it one step further to eliminate the tx_lock in the tx_completion path when the tx queue is not stopped. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 087fe256f0aef8d16b19a30c6fb10b899bf1a701 Author: Michael Chan Date: Tue Aug 9 20:17:41 2005 -0700 [TG3]: Fix bug in setting a tg3_flag Found a bug while reviewing the patches the second time. The TG3_FLAG_TXD_MBOX_HWBUG flag is set after the register access methods have been determined. This patch fixes it by moving it up before the various access methods are assigned. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 15f5a585c6b8dac31ed0a55693aacf51934f0f5d Author: Michael Chan Date: Tue Aug 9 20:17:28 2005 -0700 [TG3]: Eliminate one register write in tg3_restart_ints() The register write to register 0x68 to restart interrupts is unnecessary as the interrupt wasn't masked in that register by the irq handler. This will save one register write in the fast path. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6892914fb7980d844f2bac859f4095df9ebd18da Author: Michael Chan Date: Tue Aug 9 20:17:14 2005 -0700 [TG3]: Add indirect register method for 5703 behind ICH This patch adds the new workaround for 5703 A1/A2 if it is behind certain ICH bridges. The workaround disables memory and uses config. cycles only to access all registers. The 5702/03 chips can mistakenly decode the special cycles from the ICH chipsets as memory write cycles, causing corruption of register and memory space. Only certain ICH bridges will drive special cycles with non-zero data during the address phase which can fall within the 5703's address range. This is not an ICH bug as the PCI spec allows non-zero address during special cycles. However, only these ICH bridges are known to drive non-zero addresses during special cycles. The indirect_lock is also changed to spin_lock_irqsave from spin_lock_bh because it is used in irq handler when using the indirect method to disable interrupts. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 09ee929cccfd0b56ea3724b3c6299fbbe813df43 Author: Michael Chan Date: Tue Aug 9 20:17:00 2005 -0700 [TG3]: Add mailbox read method This patch adds the mailbox read method and also adds an inline function tw32_mailbox_f() for mailbox writes that require read flush. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1ee582d8e49a1c9dd43b2599f1cd26507182a8d4 Author: Michael Chan Date: Tue Aug 9 20:16:46 2005 -0700 [TG3]: Add various register methods This patch adds various dedicated register read/write methods for the existing workarounds, including PCIX target workaround, write with read flush, etc. The chips that require these workarounds will use these dedicated access functions. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2009493065e01b1fe27c1b98ffbcfab98e185f72 Author: Michael Chan Date: Tue Aug 9 20:16:32 2005 -0700 [TG3]: Add basic register access function pointers This patch adds the basic function pointers to do register accesses in the fast path. This was suggested by David Miller. The idea is that various register access methods for different hardware errata can easily be implemented with these function pointers and performance will not be degraded on chips that use normal register access methods. The various register read write macros (e.g. tw32, tr32, tw32_mailbox) are redefined to call the function pointers. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d4ef16088913002255eab9958fff4e98b3b507d6 Author: Michael Chan Date: Thu Aug 25 15:31:41 2005 -0700 [TG3]: Fix ethtool loopback test lockup The tg3_abort_hw() call in tg3_test_loopback() is causing lockups on some devices. tg3_abort_hw() disables the memory arbiter, causing tg3_reset_hw() to hang when it tries to write the pre-reset signature. tg3_abort_hw() should only be called after the pre-reset signature has been written. This is all done in tg3_reset_hw() so the tg3_abort_hw() call is unnecessary and can be removed. [ Also bump driver version and release date. -DaveM ] Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 034ea6388a51f571b45ef1f0fa4ed4298691768e Author: David S. Miller Date: Fri Aug 19 12:57:31 2005 -0700 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit da6b2d01d6bd2e79fd4f7a08acd37dc4e8fcdce8 Author: Michael Chan Date: Fri Aug 19 12:54:29 2005 -0700 [TG3]: Fix SerDes detection A problem was reported by Grant Grundler on an HP rx8620 using IOX Core LAN partno(A7109-6) 5701 copper NIC. The tg3 driver mistakenly detects this NIC as having a SerDes PHY and link does not come up as a result. The problem was caused by an incorrectly programmed eeprom that set the NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit in the NIC_SRAM_DATA_CFG location. This patch will override the NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit if a valid PHY ID is read from the MII registers on older 570x chips where the MII interface is not used on SerDes chips. On newer chips such as the 5780 that use MII for both copper and SerDes, SerDes detection must rely on the eeprom. This patch will make the SerDes detection identical to versions 3.25 and older. Signed-off-by: Michael Chan Acked-by: Grant Grundler Signed-off-by: David S. Miller commit 7d3f4c97723c4ec4e5d85e6e70084b02e6be8788 Author: David S. Miller Date: Sat Aug 6 06:35:48 2005 -0700 [TG3]: Save initial PCI state before registering the netdevice. Else on SMP systems it is possible for hotplug to execute, invoke tg3_open(), and end up loading the uninitialized PCI register save area into the card. Signed-off-by: David S. Miller commit fc87670b6cd63abc6fc4e3a115741984750d1fbc Author: David S. Miller Date: Mon Jul 25 12:45:32 2005 -0700 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit 747e8f8bff56955374521fa4d488e702d4b0c04f Author: Michael Chan Date: Mon Jul 25 12:33:22 2005 -0700 [TG3]: add 5780 fiber support Add 5780S support by adding a new tg3_setup_fiber_mii_phy() function and a timer function for parallel link detection. 5780S uses standard MII registers for 1000BaseX and runs in GMII mode as opposed to TBI mode on older serdes chips. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ef7f5ec0deb2bcdc005f30f6f75f79c65c577cf5 Author: Michael Chan Date: Mon Jul 25 12:32:25 2005 -0700 [TG3]: disallow jumbo TSO on 5780 Disallow jumbo TSO on 5780 due to hardware restrictions. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fdfec1726b14b4b2121adcfcbba98d4cc1a61751 Author: Michael Chan Date: Mon Jul 25 12:31:48 2005 -0700 [TG3]: consolidate all DMA water mark settings Consolidate all DMA watermark settings for standard and jumbo frames on all chips in tg3_init_bufmgr_config() and add new settings for 5780. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7e72aad48c3790636bfa006f3b0027852ccad47e Author: Michael Chan Date: Mon Jul 25 12:31:17 2005 -0700 [TG3]: add variable buffer size for standard ring Add a new rx_pkt_buf_sz to the tg3 structure to support variable buffer sizes on the standard ring. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0f893dc6ec890058d926224c8aa254d8621e0ea3 Author: Michael Chan Date: Mon Jul 25 12:30:38 2005 -0700 [TG3]: add 5780 basic jumbo frame support Add basic jumbo frames support for 5780. This chip supports jumbo frames on the standard receive ring without the jumbo ring. The TG3_FLAG_JUMBO_ENABLE is changed to TG3_FLAG_JUMBO_RING_ENABLE to indicate using the jumbo ring on 5704 and older chips. A new TG3_FLG2_JUMBO_CAPABLE flag is added to indicate jumbo frames support with or without the jumbo ring. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4cf78e4fb678807e3f8265c9e9031a84f5c601f0 Author: Michael Chan Date: Mon Jul 25 12:29:19 2005 -0700 [TG3]: add 5780 basic support Add 5780 PCI IDs, chip IDs, and other basic support. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 93e266f600f4048fe7a2e8803abb9f8baff84aa7 Author: David S. Miller Date: Tue Jul 5 14:43:19 2005 -0700 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit d244c892c8e23d6baba88af88f78f7201a224d39 Author: Michael Chan Date: Tue Jul 5 14:42:33 2005 -0700 [TG3]: support for ethtool -C Add support for ethtool -C with verification of user parameters. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5f70eaa0d5768775a7492f3e3841fcca94bb0d13 Author: David S. Miller Date: Fri Jun 24 20:21:01 2005 -0700 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit bbe832c09233738c100145fd535b6b8fc97640f6 Author: Michael Chan Date: Fri Jun 24 20:20:04 2005 -0700 [TG3]: Refinements to new locking strategy. 1. Move tp->irq_sync = 0 to before the interrupt mailbox IO in tg3_enable_ints() so that the interrupt handler will always see irq_sync == 0 when interrupts are enabled. 2. Remove the tg3_enable_ints() call in tg3_reset_hw(). Interrupts are always enabled explicitly or through tg3_netif_start(). This is to prevent interrupts being enabled while poll is disabled. 3. Update trans_start with jiffies in tg3_netif_stop() to prevent false NETDEV WATCHDOG. 4. Pass in the proper irq_sync parameter to tg3_full_lock() depending on netif_running() in some of the ethtool set calls. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit f47c11eeccc8820010992eb32dbe7370a08f8bd3 Author: David S. Miller Date: Fri Jun 24 20:18:35 2005 -0700 [TG3]: Eliminate all hw IRQ handler spinlocks. Move all driver spinlocks to be taken at sw IRQ context only. This fixes the skb_copy() we were doing with hw IRQs disabled (which is illegal and triggers a BUG() with HIGHMEM enabled). It also simplifies the locking all over the driver tremendously. We accomplish this feat by creating a special sequence to synchronize with the hw IRQ handler using a binary state and synchronize_irq(). This idea is from Herbert Xu. Thanks to Michael Chan for helping to track down all of the race conditions in initial versions of this code. Signed-off-by: David S. Miller commit cd024c8baf9756759c57f0a19be639da8d3d4f8c Author: David S. Miller Date: Fri Jun 24 20:17:10 2005 -0700 [TG3]: Fix missing memory barriers and SD_STATUS_UPDATED bit clearing. There must be a rmb() between reading the status block tag and calling tg3_has_work(). This was missing in tg3_mis() and tg3_interrupt_tagged(). tg3_poll() got it right. Also, SD_STATUS_UPDATED must be cleared in the status block right before we call tg3_has_work(). Only tg3_poll() got this wrong. Based upon patches and commentary from Grant Grundler and Michael Chan. Signed-off-by: David S. Miller commit ed7fce6c13bdd802817e1988d67047d432e7e30b Author: David S. Miller Date: Wed Jun 8 14:15:52 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 6d1cfbab4de64f2d0c5b0f81177ade0d75b69288 Author: Michael Chan Date: Wed Jun 8 14:13:14 2005 -0700 [TG3]: Fix 5700/5701 DMA corruption on Apple G4. Fix 5700/5701 DMA write corruption on Apple G4 by detecting the Apple UniNorth PCI 1.5 chipset and adjusting the DMA write boundary to 16. DMA test fails to detect the problem with this chipset. Thanks to Manuel Perez Ayala for reporting the problem and helping to debug it. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 15def7bfb6902aa2b2bc67059f26d696fb27c235 Author: David S. Miller Date: Mon Jun 6 15:22:56 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 9ba27794197a18168b99ccecfb7b799f18b64426 Author: Michael Chan Date: Mon Jun 6 15:16:20 2005 -0700 [TG3] Fix link failure in 5701 On some 5701 devices with older bootcode, the LED configuration bits in SRAM may be invalid with value zero. The fix is to check for invalid bits (0) and default to PHY 1 mode. Incorrect LED mode will lead to error in programming the PHY. Thanks to Grant Grundler for debugging the problem. >From Grant: | In May, 2004, tg3 v3.4 changed how MAC_LED_CTRL (0x40c) was getting | programmed and how to determine what to program into LED_CTRL. The new | code trusted NIC_SRAM_DATA_CFG (0x00000b58) to indicate what to write | to LED_CTRL and MII EXT_CTRL registers. On "IOX Core Lan", SRAM was | saying MODE_MAC (0x0) and that doesn't work. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 49cabf49abd7676d026a61baabf5aae9337a82be Author: Michael Chan Date: Mon Jun 6 15:15:17 2005 -0700 [TG3]: Add TSO firmware license Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1b62815193f6c20c60958e5347751155833e3d35 Author: Michael Chan Date: Sun May 29 14:59:49 2005 -0700 [TG3]: Fix bug in tg3_load_firmware_cpu Add tg3_nvram_lock() and tg3_nvram_unlock() calls around tg3_halt_cpu(). It is possible that the bootcode may be loading code from nvram during this call and stopping the cpu without getting the lock may cause uncompleted nvram data to be left in the nvram data register. Subsequent calls to read/write nvram data will fail. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d4bc3927d284784b3f0bff05b4eed2242cc3e226 Author: Michael Chan Date: Sun May 29 14:59:20 2005 -0700 [TG3]: Add interrupt test This test uses the previously added tg3_test_interrupt() to perform the test. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c76949a6826fc11efcd6bb1abdca1ae02761071d Author: Michael Chan Date: Sun May 29 14:58:59 2005 -0700 [TG3]: Add loopback test The test will loopback one packet in MAC loopback mode and verify the packet data. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7942e1dbd7252b480ed238096dca617189d293df Author: Michael Chan Date: Sun May 29 14:58:36 2005 -0700 [TG3]: Add memory test Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit a71116d1f3b85a69fe3a3acec9223fefb4b1fc66 Author: Michael Chan Date: Sun May 29 14:58:11 2005 -0700 [TG3]: Add register test Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 944d980ecaabe44616a9e2d50101ce774f517bb6 Author: Michael Chan Date: Sun May 29 14:57:48 2005 -0700 [TG3]: Add parameter to tg3_halt Add a reset kind parameter to tg3_halt() so that the RESET_KIND_SUSPEND parameter can be passed to tg3_halt() before doing offline tests. All other calls to tg3_halt() will use the RESET_KIND_SHUTDOWN parameter. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ca43007a92662621e5819912fc31c346e3a2eed8 Author: Michael Chan Date: Sun May 29 14:57:23 2005 -0700 [TG3]: Add link test Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 566f86adb336637d03900f53b886d879aa5f5d56 Author: Michael Chan Date: Sun May 29 14:56:58 2005 -0700 [TG3]: Add nvram test Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4cafd3f533475c976879d85773735c004f09f576 Author: Michael Chan Date: Sun May 29 14:56:34 2005 -0700 [TG3]: Add basic selftest infrastructure Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d1faeaeb95a05275cf0c5b51b88f2fa833434625 Author: David S. Miller Date: Mon May 23 14:00:44 2005 -0700 [TG3]: Update driver version. Signed-off-by: David S. Miller commit ded7340d9d9142807a1ef94ab9c51d13ab76a1c9 Author: David S. Miller Date: Mon May 23 13:59:47 2005 -0700 [TG3]: Increase TEST_BUFFER_SIZE to 8K. This makes the DMA bug workaround test more likely to find the problem on some systems. Signed-off-by: David S. Miller commit 413f5431a5a27e44c6610de640e507e1e3c885f4 Author: David S. Miller Date: Mon May 23 13:13:15 2005 -0700 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit d8659255c599ba497bcfb8b4abc187d9e0951d99 Author: Xose Vazquez Perez Date: Mon May 23 12:54:51 2005 -0700 [TG3]: Add 5752M device ID. Add 0x1601 as 5752M, it's a 5752 but for mobile PCs. Stolen from Broadcom bcm5700-8.1.55 driver. Someone forgot to add it to tg3 ;-) Signed-off-by: David S. Miller commit f7383c22246cfccbe912541dd83103009ed2b537 Author: David S. Miller Date: Wed May 18 22:50:53 2005 -0700 [TG3]: In tg3_poll(), resample status_tag after doing work. Signed-off-by: David S. Miller commit 59e6b4343299373bc10dd131ab5142f53ddd838a Author: David S. Miller Date: Wed May 18 22:50:10 2005 -0700 [TG3]: Refine DMA boundary setting. Extract DMA boundary bit selection into a seperate function, tg3_calc_dma_bndry(). Call this from tg3_test_dma(). Make DMA test more reliable by using no DMA boundry setting during the test. If the test passes, then use the setting we selected before the test. Signed-off-by: David S. Miller Signed-off-by: Michael Chan commit 15f9850d3c2d46f5851a424d2990a18b5bb5ebfd Author: David S. Miller Date: Wed May 18 22:49:26 2005 -0700 [TG3]: Set minimal hw interrupt mitigation. Even though we do software interrupt mitigation via NAPI, it still helps to have some minimal hw assisted mitigation. This helps, particularly, on systems where register I/O overhead is much greater than the CPU horsepower. For example, it helps on NUMA systems. In such cases the PIO overhead to disable interrupts for NAPI accounts for the majority of the packet processing cost. The CPU is fast enough such that only a single packet is processed by each NAPI poll call. Thanks to Michael Chan for reviewing this patch. Signed-off-by: David S. Miller commit fac9b83ea79aa3112ed245d9a4fc2a5c3ec2b7ec Author: David S. Miller Date: Wed May 18 22:46:34 2005 -0700 [TG3]: Add tagged status support. When supported, use the TAGGED interrupt processing support the chip provides. In this mode, instead of a "on/off" binary semaphore, an incrementing tag scheme is used to ACK interrupts. All MSI supporting chips support TAGGED mode, so the tg3_msi() interrupt handler uses it unconditionally. This invariant is verified when MSI support is tested. Since we can invoke tg3_poll() multiple times per interrupt under high packet load, we fetch a new copy of the tag value in the status block right before we actually do the work. Also, because the tagged status tells the chip exactly which work we have processed, we can make two optimizations: 1) tg3_restart_ints() need not check tg3_has_work() 2) the tg3_timer() need not poke the chip 10 times per second to keep from losing interrupt events Based upon valuable feedback from Michael Chan Signed-off-by: David S. Miller commit b6d31e80f0d6a722bf85b3a7090df473fc545980 Author: David S. Miller Date: Thu May 5 14:46:21 2005 -0700 [TG3]: Update driver version and reldate. Signed-off-by: David S. Miller commit e6de8ad1fae8385eca4bf288e7a6ea2664ce0458 Author: Michael Chan Date: Thu May 5 14:42:41 2005 -0700 [TG3]: Ignore tg3_stop_block() errors. tg3_stop_block() errors can be safely ignored since tg3_chip_reset() always follows tg3_stop_block() calls. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b3b7d6be54f919556148946adb4ece91820ad210 Author: David S. Miller Date: Thu May 5 14:40:20 2005 -0700 [TG3]: Elide tg3_stop_block messages when such events are normal. Signed-off-by: David S. Miller commit f4d0ee983ec01e59a77e157ab702246f397b2a2b Author: David S. Miller Date: Thu Apr 28 11:33:20 2005 -0700 [TG3]: Set SA_SAMPLE_RANDOM in request_irq() calls. Signed-off-by: David S. Miller commit 04237dddd14375fce1df4bfb1be92a35aa1c247f Author: Michael Chan Date: Mon Apr 25 15:17:17 2005 -0700 [TG3]: Fix tg3_restart_ints() tg3_restart_ints() is called to re-enable interrupts after tg3_poll() has finished all the work. It calls tg3_cond_int() to force an interrupt if the status block updated bit is set. The updated bit will be set if there is a new status block update sometime during tg3_poll() and it can be very often. The worst part is that even if all the work has been processed, the updated bit remains set and an interrupt will be forced unnecessarily. The fix is to call tg3_has_work() instead to determine if new work is posted before forcing an interrupt. The way to force an interrupt is also changed to use "coalesce_now" instead of "SETINT". The former is generally a safer way to force the interrupt. Also deleted the first parameter to tg3_has_work() which is unused. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 52f6d697dc0f2c039e8413e780b0f45ddf8161fc Author: Michael Chan Date: Mon Apr 25 15:14:32 2005 -0700 [TG3]: Refresh hw index in tg3_rx() This patch refreshes the hw rx producer in tg3_rx() so that additional work posted by the hardware can be processed. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 483ba50bd41d14d5325d6cd9935de86a982d08a2 Author: Michael Chan Date: Mon Apr 25 15:14:03 2005 -0700 [TG3]: Fix bug in tg3_rx() This patch fixes a bug that causes tg3_has_work() to always return 1. rx work is determined by comparing tp->rx_rcb_ptr with the current hw producer index. The hw producer index is modulo the ring size, but tp- >rx_rcb_ptr is a free running counter that goes up beyond the ring size. After the ring wraps around once, tg3_has_work() will always return 1. The fix is to always do modulo arithmetic on tp->rx_rcb_ptr. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ac6910e189471e6b46ecea59e7620b083329ad4f Author: David S. Miller Date: Sun Apr 24 20:06:16 2005 -0700 [TG3]: Update driver version and release date. Signed-off-by: David S. Miller commit 7938109fff944e0117976a39946d99d2b0b0250d Author: Michael Chan Date: Thu Apr 21 17:13:59 2005 -0700 [TG3]: Add msi test Add MSI test for chips that support MSI. If MSI test fails, it will switch back to INTx mode and will print a message asking the user to report the failure. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 88b06bc26b87cf0490b0e3faea7fefc7549dd75d Author: Michael Chan Date: Thu Apr 21 17:13:25 2005 -0700 [TG3]: Add msi support Add MSI support for 5751 C0 and 5752. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 1c8594b48b00a98d12477355e944e165a5f64cd5 Author: Michael Chan Date: Thu Apr 21 17:12:46 2005 -0700 [TG3]: Fix bug in tg3_set_eeprom() Fix a bug in tg3_set_eeprom() when the length is less than 4 and the offset is not 4-byte aligned. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit e6af301be3c129adbc8a7c8ffb76e62533ad9575 Author: Michael Chan Date: Thu Apr 21 17:12:05 2005 -0700 [TG3]: Add nvram lock-out support for 5752 TPM Add support for the NVRAM lock-out feature for TPM in 5752. If lock-out is enabled, certain NVRAM registers cannot be written to. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 361b4ac29bc651c7612d4bf21434ae6fe06b78e4 Author: Michael Chan Date: Thu Apr 21 17:11:21 2005 -0700 [TG3]: Add nvram detection for 5752 Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3e7d83bc96d59013792e5546e7832668d3adbce7 Author: Michael Chan Date: Thu Apr 21 17:10:36 2005 -0700 [TG3]: Add GPIO3 for 5752 Add bit definitions for the new GPIO3 in 5752. GPIO3 must be driven as output when it is unused. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ff645bec523819fa4d28d7e0de7d998e3edb0c57 Author: Michael Chan Date: Thu Apr 21 17:09:53 2005 -0700 [TG3]: Workaround 5752 A0 chip ID The 5752 A0 chip ID is wrong in hardware. The simplest way to workaround it is to change it to the correct value in tp->pci_chip_rev_id. This way, it is easier to check for the ASIC_REV_5752 in the rest of the driver. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 8c6bda1a89c148f3a28edc09a76dac9bff57d8ee Author: Michael Chan Date: Thu Apr 21 17:09:08 2005 -0700 [TG3]: Fix tg3_set_power_state() Fix tg3_set_power_state to drive GPIOs properly based on the TG3_FLAG_EEPROM_WRITE_PROTECT flag. Some delays are also added after D0 and D3 power state changes. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 314fba348e1f64a30b53d3cff5d96872424e8498 Author: Michael Chan Date: Thu Apr 21 17:07:04 2005 -0700 [TG3]: Setup proper GPIO settings Setup proper GPIO settings in tp->grc_local_ctrl before calling tg3_set_power() state in tg3_get_invariants() and after chip reset. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7d0c41ef89dad9008edf1c3c0022721ebad39999 Author: Michael Chan Date: Thu Apr 21 17:06:20 2005 -0700 [TG3]: Split tg3_phy_probe into 2 functions Split the 1st half of tg3_phy_probe() into tg3_get_eeprom_hw_cfg() so that the TG3_FLAG_EEPROM_WRITE_PROT can be determined before calling tg3_set_power_state() in tg3_get_invariants(). This will allow tg3_set_power_state() to drive the GPIOs correctly based on the config. information in eeprom. On the 5752, there are no pull-up resistors on the GPIO pins and it is necessary to drive the unused GPIOs as output. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 85e94cedc44d1c2c1663b5b18f703ca5e7316e59 Author: Michael Chan Date: Thu Apr 21 17:05:28 2005 -0700 [TG3]: Minor 5752 fixes Some minor 5752 fixes mostly for correctness and add 5752 PHY ID. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 053d78000be4906fac6446ad517ca3897dc6cd84 Author: John W. Linville Date: Thu Apr 21 17:03:52 2005 -0700 [TG3]: add support for bcm5752 rev a1 Replace existing ASIC_REV_5752 definition with ASIC_REV_5752_A0, and add definition for ASIC_REV_5752_A1. Then, add ASIC_REV_5752_A1 to check for setting TG3_FLG2_5750_PLUS in tg3_get_invariants. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 1b440c568e28186956ef765c69ab124401088663 Author: John W. Linville Date: Thu Apr 21 17:03:18 2005 -0700 [TG3]: check TG3_FLG2_5750_PLUS flag to set TG3_FLG2_5705_PLUS flag Use check of TG3_FLG2_5750_PLUS in tg3_get_invariants to set TG3_FLG2_5705_PLUS flag. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit bb7064dc09ff90015ddc7d818dd8fefb8ca5b936 Author: John W. Linville Date: Thu Apr 21 17:02:41 2005 -0700 [TG3]: use TG3_FLG2_57{05,50}_PLUS flags in tg3_get_invariants Rewrite checks in tg3_get_invariants to use TG3_FLG2_5705_PLUS and TG3_FLG2_5750_PLUS flags. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 863925f59e5425e4af6996b9c50857c766940176 Author: John W. Linville Date: Thu Apr 21 17:02:04 2005 -0700 [TG3]: more use of TG3_FLG2_5705_PLUS flag Rewrite of a couple of troublesome multi-way if statements to use TG3_FLG2_5705_PLUS flag. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit cbf46853c8db75f98bd005dc545aca0703063d4b Author: John W. Linville Date: Thu Apr 21 17:01:29 2005 -0700 [TG3]: use new TG3_FLG2_5750_PLUS flag Replace a number of two-way if statements checking for 5750, and/or 5752 to reference the newly-defined TG3_FLG2_5750_PLUS flag instead. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 6708e5cc103ba045fca035b4d8df236ca31fb8bc Author: John W. Linville Date: Thu Apr 21 17:00:52 2005 -0700 [TG3]: define TG3_FLG2_5750_PLUS flag Define TG3_FLG2_5750_PLUS flag and set it in tg3_get_invariants for ASIC_REV_5750 or ASIC_REV_5752. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit fcf026936c613fc6ca4685677a461100d87eec81 Author: John W. Linville Date: Thu Apr 21 17:00:02 2005 -0700 [TG3]: use TG3_FLG2_5705_PLUS instead of multi-way if's Replace a number of three-way if statements checking for 5705, 5750, and 5752 to reference the equivalent TG3_FLG2_5705_PLUS flag instead. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 6e9017a7d9b949aea638eeba67d34affaa145f14 Author: John W. Linville Date: Thu Apr 21 16:58:56 2005 -0700 [TG3]: add bcm5752 entry to pci_ids.h Add proper entry for bcm5752 PCI ID to pci_ids.h, and use it in tg3. I did this separately in case patches like this (i.e. new PCI IDs) need to come from more "official" sources. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit af2bcd97b570f39da94103f80f67433dab515049 Author: John W. Linville Date: Thu Apr 21 16:57:50 2005 -0700 [TG3]: add bcm5752 to tg3_pci_tbl Add hard-coded definition of bcm5752 PCI ID to tg3_pci_tbl. Next patch will change entry to use pci_ids.h-based definition. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 2052da946096590035438626afbc7f329d2549d8 Author: John W. Linville Date: Thu Apr 21 16:56:08 2005 -0700 [TG3]: add basic bcm5752 support Add ASIC_REV_5752 definition. Track-down all references to ASIC_REV_5750 and mirror them with references to the newly defined ASIC_REV_5752. Signed-off-by: John W. Linville Signed-off-by: David S. Miller commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Author: Linus Torvalds Date: Sat Apr 16 15:20:36 2005 -0700 Linux-2.6.12-rc2 Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!