Re: [git patches] net driver fixes (50% rebased)
From: Jeff Garzik [EMAIL PROTECTED] Date: Sun, 24 Feb 2008 00:20:41 -0500 This is a 50% resend, rebased on top of net-2.6. Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem to receive the following updates: Pulled and pushed back out, thanks Jeff. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
David Miller wrote: Jeff, I really don't want to pull that tree in. Please trust me as your upstream to handle merging issues, as needed. I trust you... Otherwise I wouldn't have volunteered to move my upstream from Linus to you :) My main issues/motivations were: * quite simply, just force of habit: I'm used to basing off of a recent Linus tree, to guarantee buildboot testing against the latest. * worry about testing against a too-old tree, where non-networking fixes may have a relevant impact on my to-be-pushed netdrvr fixes. But in this case it's fair to say there are no such issues, and it was mainly just out of habit. So (as you saw in last email)... rebased and resend. Jeff -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: Jeff Garzik [EMAIL PROTECTED] Date: Sun, 24 Feb 2008 00:48:54 -0500 I trust you... Otherwise I wouldn't have volunteered to move my upstream from Linus to you :) ... So (as you saw in last email)... rebased and resend. Thanks :) -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Note: this is based off of Linus's latest commit (5d9c4a7de64d398604a978d267a6987f1f4025b7), since all my previous submissions are now upstream (thanks!). Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem to receive the following updates: MAINTAINERS| 11 +- drivers/net/cs89x0.c | 12 +- drivers/net/ehea/ehea.h| 34 +- drivers/net/ehea/ehea_main.c | 281 +--- drivers/net/fs_enet/fs_enet-main.c |7 +- drivers/net/gianfar.c | 14 +- drivers/net/igb/igb_main.c | 15 +-- drivers/net/pcmcia/pcnet_cs.c | 10 +- drivers/net/phy/mdio_bus.c |4 +- drivers/net/sis190.c | 15 ++- drivers/net/tlan.c | 64 drivers/net/tulip/uli526x.c| 12 ++- drivers/net/virtio_net.c |2 +- drivers/s390/net/claw.c| 39 +++--- 14 files changed, 399 insertions(+), 121 deletions(-) Adrian Bunk (1): net/phy/mdio_bus.c: fix a check-after-use Andy Gospodarek (1): igb: fix legacy mode irq issue Becky Bruce (1): gianfar: don't pass NULL dev ptr to DMA ops Bill Hayes (1): igb: Fix panic with NICs with 1000BASE-SX PHY Christian Borntraeger (1): virtio_net: Fix oops on early interrupts - introduced by virtio reset code Francois Romieu (1): sis190: read the mac address from the eeprom first Grant Grundler (2): update TULIP MAINTAINERS uli526x partially recognizing interface Harvey Harrison (1): tlan: add static to function definitions Julia Lawall (1): claw: make use of DIV_ROUND_UP Komuro (1): pcnet_cs: if AX88190-based card, printk use axnet_cs instead message. Leonardo Potenza (1): drivers/net/cs89x0.c: compilation warning fix Scott Wood (1): fs_enet: Don't call phy_mii_ioctl() in atomic context. Thomas Klein (1): ehea: add kdump support diff --git a/MAINTAINERS b/MAINTAINERS index 082d1ee..53b6e60 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3887,10 +3887,13 @@ M: [EMAIL PROTECTED] L: [EMAIL PROTECTED] S: Maintained -TULIP NETWORK DRIVER -L: [EMAIL PROTECTED] -W: http://sourceforge.net/projects/tulip/ -S: Orphan +TULIP NETWORK DRIVERS +P: Grant Grundler +M: [EMAIL PROTECTED] +P: Kyle McMartin +M: [EMAIL PROTECTED] +L: netdev@vger.kernel.org +S: Maintained TUN/TAP driver P: Maxim Krasnyansky diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index 5717509..348371f 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c @@ -172,30 +172,30 @@ static char version[] __initdata = them to system IRQ numbers. This mapping is card specific and is set to the configuration of the Cirrus Eval board for this chip. */ #ifdef CONFIG_ARCH_CLPS7500 -static unsigned int netcard_portlist[] __initdata = +static unsigned int netcard_portlist[] __used __initdata = { 0x80090303, 0x300, 0x320, 0x340, 0x360, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0}; static unsigned int cs8900_irq_map[] = {12,0,0,0}; #elif defined(CONFIG_SH_HICOSH4) -static unsigned int netcard_portlist[] __initdata = +static unsigned int netcard_portlist[] __used __initdata = { 0x0300, 0}; static unsigned int cs8900_irq_map[] = {1,0,0,0}; #elif defined(CONFIG_MACH_IXDP2351) -static unsigned int netcard_portlist[] __initdata = {IXDP2351_VIRT_CS8900_BASE, 0}; +static unsigned int netcard_portlist[] __used __initdata = {IXDP2351_VIRT_CS8900_BASE, 0}; static unsigned int cs8900_irq_map[] = {IRQ_IXDP2351_CS8900, 0, 0, 0}; #include asm/irq.h #elif defined(CONFIG_ARCH_IXDP2X01) #include asm/irq.h -static unsigned int netcard_portlist[] __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0}; +static unsigned int netcard_portlist[] __used __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0}; static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0}; #elif defined(CONFIG_ARCH_PNX010X) #include asm/irq.h #include asm/arch/gpio.h #define CIRRUS_DEFAULT_BASEIO_ADDRESS(EXT_STATIC2_s0_BASE + 0x20) /* = Physical address 0x4820 */ #define CIRRUS_DEFAULT_IRQ VH_INTC_INT_NUM_CASCADED_INTERRUPT_1 /* Event inputs bank 1 - ID 35/bit 3 */ -static unsigned int netcard_portlist[] __initdata = {CIRRUS_DEFAULT_BASE, 0}; +static unsigned int netcard_portlist[] __used __initdata = {CIRRUS_DEFAULT_BASE, 0}; static unsigned int cs8900_irq_map[] = {CIRRUS_DEFAULT_IRQ, 0, 0, 0}; #else -static unsigned int netcard_portlist[] __initdata = +static unsigned int netcard_portlist[] __used __initdata = { 0x300, 0x320, 0x340, 0x360, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0}; static unsigned int cs8900_irq_map[] = {10,11,12,5}; #endif diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index 88fb53e..7c4ead3 100644 --- a/drivers/net/ehea/ehea.h +++
Re: [git patches] net driver fixes
From: Jeff Garzik [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 11:55:57 -0500 Note: this is based off of Linus's latest commit (5d9c4a7de64d398604a978d267a6987f1f4025b7), since all my previous submissions are now upstream (thanks!). The whole point of my not rebasing net-2.6 is so that you can always use it as a base. With what you've giving me now I either have to: 1) Pull in Linus's tree to net-2.6, then pull from you. 2) Pull in directly from you to get it all. The whole point of my not touching or rebasing net-2.6 is so that everyonce can simply use it as a base and just keep working relative to it. If you have some need for upstream stuff outside networking (f.e. some ACPI bug prevents interrupts from working or there is some build failure), you can clone Linus's tree and pull net-2.6 and your driver bits into there for building and testing. Thanks for your consideration, I'm trying to show you mine by giving everyone a relatively stable tree in which all networking development can occur. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: J. Bruce Fields [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 16:23:02 -0500 On Wed, Feb 20, 2008 at 01:15:30PM -0800, David Miller wrote: From: Jeff Garzik [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 11:55:57 -0500 Note: this is based off of Linus's latest commit (5d9c4a7de64d398604a978d267a6987f1f4025b7), since all my previous submissions are now upstream (thanks!). The whole point of my not rebasing net-2.6 is so that you can always use it as a base. With what you've giving me now I either have to: 1) Pull in Linus's tree to net-2.6, then pull from you. 2) Pull in directly from you to get it all. Why are either of those a problem? Because it forces me to pull Linus's upstream into net-2.6, I don't have any choice in the matter. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Wed, Feb 20, 2008 at 01:15:30PM -0800, David Miller wrote: From: Jeff Garzik [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 11:55:57 -0500 Note: this is based off of Linus's latest commit (5d9c4a7de64d398604a978d267a6987f1f4025b7), since all my previous submissions are now upstream (thanks!). The whole point of my not rebasing net-2.6 is so that you can always use it as a base. With what you've giving me now I either have to: 1) Pull in Linus's tree to net-2.6, then pull from you. 2) Pull in directly from you to get it all. Why are either of those a problem? --b. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Wed, Feb 20, 2008 at 01:42:57PM -0800, David Miller wrote: From: J. Bruce Fields [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 16:23:02 -0500 On Wed, Feb 20, 2008 at 01:15:30PM -0800, David Miller wrote: From: Jeff Garzik [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 11:55:57 -0500 Note: this is based off of Linus's latest commit (5d9c4a7de64d398604a978d267a6987f1f4025b7), since all my previous submissions are now upstream (thanks!). The whole point of my not rebasing net-2.6 is so that you can always use it as a base. With what you've giving me now I either have to: 1) Pull in Linus's tree to net-2.6, then pull from you. 2) Pull in directly from you to get it all. Why are either of those a problem? Because it forces me to pull Linus's upstream into net-2.6, I don't have any choice in the matter. Right. I'm wondering what the problems are that you see with that. The advantages include earlier warning of merge problems, and avoidance of duplicate commits--if Jeff's done work that depends on patches that already upstream, then he either does that work against upstream, or includes backported patches in the branch he asks you to pull, and you end up with both the original and the backported patch. Which isn't the end of the world, but the resulting history seems messier than necessary. Or I guess you could both wait to do this merge until you're ready to pull in Linus's latest? For non-git-using testers there may be an advantage to always keeping a tree based on the latest tagged release, as it may simplify providing them with patches in some cases. But if the goal is to provide a basis for other maintainer's work, I'd've thought the best policy would be just to track the tip of every relevant branch (which includes Linus's in this case). --b. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: J. Bruce Fields [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 17:25:30 -0500 The advantages include earlier warning of merge problems, and avoidance of duplicate commits--if Jeff's done work that depends on patches that already upstream, then he either does that work against upstream, or includes backported patches in the branch he asks you to pull, and you end up with both the original and the backported patch. Which isn't the end of the world, but the resulting history seems messier than necessary. Or I guess you could both wait to do this merge until you're ready to pull in Linus's latest? I do a test pull and build of net-2.6 into Linus's current tree before I send Linus a pull request. If any non-trivial merges are necessary, which hasn't happened yet at all, I would then do a merge into my net-2.6 tree and resolve the conflicts. There is no reason for someone downstream of net-2.6 to do this. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
David Miller [EMAIL PROTECTED] : [...] Because it forces me to pull Linus's upstream into net-2.6, I don't have any choice in the matter. Jeff's choice is a bit surprizing. That being said, it would had been nice to fast-forward net-2.6 from a442585952f137bd4cdb1f2f3166e4157d383b82 to Linus's upstream before applying the content of 12aa343add3eced38a44bdb612b35fdf634d918c in order to keep the drift with Linus's branch to a minimum during the bugfix cycle. -- Ueimor -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: Francois Romieu [EMAIL PROTECTED] Date: Wed, 20 Feb 2008 23:40:53 +0100 David Miller [EMAIL PROTECTED] : [...] Because it forces me to pull Linus's upstream into net-2.6, I don't have any choice in the matter. Jeff's choice is a bit surprizing. That being said, it would had been nice to fast-forward net-2.6 from a442585952f137bd4cdb1f2f3166e4157d383b82 to Linus's upstream before applying the content of 12aa343add3eced38a44bdb612b35fdf634d918c in order to keep the drift with Linus's branch to a minimum during the bugfix cycle. Keep in mind there are also pending fixes in my net-2.6 tree which Linus hasn't pulled in yet as well. I watch Linus's tree closely, and I'll see any potential merge issue long before it matters, and I always double check before pushing stuff out to him. My job as tree master is to deal with all the merge hassles, should they occur. But up until now everything networking has gone through my tree and everything is fine. The net-2.6 tree isn't even a week old. I planned to pull Linus's tree in right before I leave for a short trip tomorrow afternoon. I'm really not being allowed to make that choice by how these changes are being merged to me. Heck, Jeff even thanked me for making my net-2.6 tree stable and not rebasing, so his method of merging this stuff is doubly surprising for me. Jeff, I really don't want to pull that tree in. Please trust me as your upstream to handle merging issues, as needed. Thanks! -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Process note: 'upstream-davem' continues the git history that began the previous push. This sometimes happens when I continue to commit locally, working in parallel while waiting for changes to hit Linus upstream. As current net-2.6.git appears to have the same commit ids that I submitted in the previous push, this should be no problem at all, just wanted you to know. Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem to receive the following updates: drivers/net/e1000/e1000_ethtool.c |2 +- drivers/net/e1000/e1000_main.c|8 drivers/net/e1000e/netdev.c | 34 ++--- drivers/net/gianfar.c |4 +- drivers/net/gianfar_mii.c |4 +- drivers/net/hamradio/mkiss.c |5 +-- drivers/net/igb/igb_ethtool.c |2 +- drivers/net/igb/igb_main.c| 28 -- drivers/net/ixgb/ixgb_ethtool.c |2 +- drivers/net/ixgbe/ixgbe_main.c| 41 + drivers/net/pcmcia/smc91c92_cs.c | 12 +- drivers/net/tsi108_eth.c | 72 +--- 12 files changed, 114 insertions(+), 100 deletions(-) Al Viro (1): gianfar iomem misannotations Alex Bounine (5): Tsi108_eth: add missing linking to driver data Tsi108_eth: fix detection of 1000Mb mode Tsi108_eth: remove not needed code Tsi108_eth: fix link recovery after disconnect Tsi108_eth: Add ethtool support Auke Kok (7): e1000: warn if this driver is used for e1000e devices e1000e: Fix logic reversal keeping link active ixgbe: warn when device is in a x4 or lower width slot ixgbe: Disallow device reset during ethtool test ixgbe: remove accidentally added #ifdef e1000e: Fix CRC stripping in hardware context bug ixgbe: Correctly obtain protocol information on transmit Chuck Ebbert (1): Fix station address detection in smc David Graham (2): igb: PCIe devices do not need to unset MANC_ARP_ENA e1000e: PCIe devices do not need to unset MANC_ARP_ENA Jarek Poplawski (1): mkiss: ax_bump() locking fix Julia Lawall (1): replace code with FIELD_SIZEOF diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index d876787..85e66f4 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c @@ -50,7 +50,7 @@ struct e1000_stats { int stat_offset; }; -#define E1000_STAT(m) sizeof(((struct e1000_adapter *)0)-m), \ +#define E1000_STAT(m) FIELD_SIZEOF(struct e1000_adapter, m), \ offsetof(struct e1000_adapter, m) static const struct e1000_stats e1000_gstrings_stats[] = { { rx_packets, E1000_STAT(stats.gprc) }, diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index d4ee8ec..0991648 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -1195,6 +1195,14 @@ e1000_probe(struct pci_dev *pdev, printk(%s\n, print_mac(mac, netdev-dev_addr)); + if (adapter-hw.bus_type == e1000_bus_type_pci_express) { + DPRINTK(PROBE, WARNING, This device (id %04x:%04x) will no + longer be supported by this driver in the future.\n, + pdev-vendor, pdev-device); + DPRINTK(PROBE, WARNING, please use the \e1000e\ + driver instead.\n); + } + /* reset the hardware with the new settings */ e1000_reset(adapter); diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index f58f017..3031d6d 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c @@ -1055,23 +1055,6 @@ static void e1000_release_hw_control(struct e1000_adapter *adapter) } } -static void e1000_release_manageability(struct e1000_adapter *adapter) -{ - if (adapter-flags FLAG_MNG_PT_ENABLED) { - struct e1000_hw *hw = adapter-hw; - - u32 manc = er32(MANC); - - /* re-enable hardware interception of ARP */ - manc |= E1000_MANC_ARP_EN; - manc = ~E1000_MANC_EN_MNG2HOST; - - /* don't explicitly have to mess with MANC2H since -* MANC has an enable disable that gates MANC2H */ - ew32(MANC, manc); - } -} - /** * @e1000_alloc_ring - allocate memory for a ring structure **/ @@ -1561,9 +1544,6 @@ static void e1000_init_manageability(struct e1000_adapter *adapter) manc = er32(MANC); - /* disable hardware interception of ARP */ - manc = ~(E1000_MANC_ARP_EN); - /* enable receiving management packets to the host. this will probably * generate destination unreachable messages from the host OS, but * the packets will be handled on SMBUS */ @@ -1690,6 +1670,9 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter) else
Re: [git patches] net driver fixes
From: Jeff Garzik [EMAIL PROTECTED] Date: Fri, 15 Feb 2008 11:03:14 -0500 Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem Pulled and pushed out. As I mentioned to John Linville just now, I'm going to try and keep net-2.6 running as long as I can without rebasing. So you can just keep piling patches into your upstream-davem branch without fear of my turning your world upside down with a rebase :-) -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
David Miller wrote: From: Jeff Garzik [EMAIL PROTECTED] Date: Fri, 15 Feb 2008 11:03:14 -0500 Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem Pulled and pushed out. As I mentioned to John Linville just now, I'm going to try and keep net-2.6 running as long as I can without rebasing. So you can just keep piling patches into your upstream-davem branch without fear of my turning your world upside down with a rebase :-) Thanks, it's appreciated! Jeff -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
First pass through the queue that built up over the weekend (plus a few others that just missed 2.6.24 release), with a focus specifically on fixes. Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem to receive the following updates: MAINTAINERS |2 - drivers/net/Kconfig |9 ++-- drivers/net/arm/at91_ether.c|2 +- drivers/net/bfin_mac.c | 107 +-- drivers/net/bfin_mac.h | 31 ++-- drivers/net/bonding/bond_main.c | 106 -- drivers/net/bonding/bonding.h |4 +- drivers/net/cxgb3/mc5.c |2 +- drivers/net/cxgb3/sge.c |2 +- drivers/net/cxgb3/t3_hw.c | 22 drivers/net/forcedeth.c | 61 ++ drivers/net/natsemi.c | 18 +-- drivers/net/pci-skeleton.c | 49 +- drivers/net/phy/Kconfig |5 ++ drivers/net/phy/Makefile|1 + drivers/net/phy/mdio_bus.c |2 +- drivers/net/phy/phy.c | 68 + drivers/net/phy/phy_device.c| 11 ++-- drivers/net/phy/realtek.c | 80 + drivers/net/sis190.c|2 +- drivers/net/sky2.c | 14 +++-- include/linux/phy.h |5 +- 22 files changed, 355 insertions(+), 248 deletions(-) create mode 100644 drivers/net/phy/realtek.c Aidan Williams (1): EMAC driver: bf537 MAC multicast hash filtering patch Alexey Demin (1): EMAC driver: fix bug - invalidate data cache of new_skb-data range when cache is WB Andy Gospodarek (1): bonding: fix race that causes invalid statistics Ayaz Abdulla (6): forcedeth: reset register fix forcedeth: checksum fix forcedeth: updated copyright section forcedeth: tx pause fix forcedeth: multicast fix forcedeth: mac address mcp77/79 Bryan Wu (3): EMAC driver: shorten the mdelay value to solve netperf performance issue EMAC driver: define MDC_CLK=2.5MHz and caculate mdc_div according to SCLK. EMAC driver: Fix bug: The clock divisor is set to all ones at reset. Jay Vosburgh (6): bonding: fix parameter parsing bonding: fix set_multicast_list locking bonding: fix NULL pointer deref in startup processing bonding: do not acquire rtnl in ARP monitor bonding: update version bonding: update MAINTAINERS Jeff Garzik (1): [netdrvr] sis190: build fix Jike Song (1): pci-skeleton: Misc fixes to build neatly Kim Phillips (1): phylib: Add Realtek 821x eth PHY support Mark Brown (1): natsemi: Update locking documentation Michael Hennerich (1): EMAC driver: ADSP-BF52x arch/mach support Mike Frysinger (1): EMAC driver: use simpler comment headers and strip out information that is maintained in the scm's log Nate Case (1): PHYLIB: Locking fixes for PHY I/O potentially sleeping Roel Kluin (1): drivers/net/arm/at91_ether.c: logical/bitand typo in function reset_phy() Roland Dreier (1): cxgb3: Remove incorrect __devinit annotations Stephen Hemminger (2): sky2: restore multicast addresses after recovery sky2: fix Wake On Lan interaction with BIOS Vitja Makarov (1): EMAC driver: add power down mode diff --git a/MAINTAINERS b/MAINTAINERS index 10011d9..77ad82a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -939,8 +939,6 @@ M: [EMAIL PROTECTED] S: Maintained BONDING DRIVER -P: Chad Tindel -M: [EMAIL PROTECTED] P: Jay Vosburgh M: [EMAIL PROTECTED] L: [EMAIL PROTECTED] diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 5a2d1dd..ca2552b 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -814,8 +814,8 @@ config ULTRA32 will be called smc-ultra32. config BFIN_MAC - tristate Blackfin 536/537 on-chip mac support - depends on NET_ETHERNET (BF537 || BF536) (!BF537_PORT_H) + tristate Blackfin 527/536/537 on-chip mac support + depends on NET_ETHERNET (BF527 || BF537 || BF536) (!BF537_PORT_H) select CRC32 select MII select PHYLIB @@ -828,7 +828,7 @@ config BFIN_MAC config BFIN_MAC_USE_L1 bool Use L1 memory for rx/tx packets - depends on BFIN_MAC BF537 + depends on BFIN_MAC (BF527 || BF537) default y help To get maximum network performance, you should use L1 memory as rx/tx buffers. @@ -855,7 +855,8 @@ config BFIN_RX_DESC_NUM config BFIN_MAC_RMII bool RMII PHY Interface (EXPERIMENTAL) depends on BFIN_MAC EXPERIMENTAL - default n + default y if BFIN527_EZKIT + default n if BFIN537_STAMP help Use Reduced PHY MII Interface diff --git a/drivers/net/arm/at91_ether.c b/drivers/net/arm/at91_ether.c index 25b114a..0ae0d83
Re: [git patches] net driver fixes
Jeff Garzik (1): [netdrvr] sis190: build fix But you did it wrong... sis190.c b/drivers/net/sis190.c index b570402..2e9e88b 100644 --- a/drivers/net/sis190.c +++ b/drivers/net/sis190.c @@ -326,7 +326,7 @@ static const struct { { SiS 191 PCI Gigabit Ethernet adapter }, }; -static struct pci_device_id sis190_pci_tbl[] __devinitdata = { +static struct pci_device_id sis190_pci_tbl[] = { { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0190), 0, 0, 0 }, { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0191), 0, 0, 1 }, { 0, }, The __devinitdata is OK, it is the following _devinitdata that had to be _devinitconst. Sam -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Sam Ravnborg wrote: Jeff Garzik (1): [netdrvr] sis190: build fix But you did it wrong... sis190.c b/drivers/net/sis190.c index b570402..2e9e88b 100644 --- a/drivers/net/sis190.c +++ b/drivers/net/sis190.c @@ -326,7 +326,7 @@ static const struct { { SiS 191 PCI Gigabit Ethernet adapter }, }; -static struct pci_device_id sis190_pci_tbl[] __devinitdata = { +static struct pci_device_id sis190_pci_tbl[] = { { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0190), 0, 0, 0 }, { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0191), 0, 0, 1 }, { 0, }, The __devinitdata is OK, it is the following _devinitdata that had to be _devinitconst. Cool. Either way is fine with me. I just wanted to get a build fix upstream ASAP, one I was sure would work. Jeff -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Sam Ravnborg [EMAIL PROTECTED] : [...] -static struct pci_device_id sis190_pci_tbl[] __devinitdata = { +static struct pci_device_id sis190_pci_tbl[] = { { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0190), 0, 0, 0 }, { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0191), 0, 0, 1 }, { 0, }, The __devinitdata is OK, it is the following _devinitdata that had to be _devinitconst. Strangely enough, removing the devinitdata from the sis190_pci_tbl silents the error message here. Do you have an explanation ? -- Ueimor -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Wed, Jan 30, 2008 at 11:47:11PM +0100, Francois Romieu wrote: Sam Ravnborg [EMAIL PROTECTED] : [...] -static struct pci_device_id sis190_pci_tbl[] __devinitdata = { +static struct pci_device_id sis190_pci_tbl[] = { { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0190), 0, 0, 0 }, { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x0191), 0, 0, 1 }, { 0, }, The __devinitdata is OK, it is the following _devinitdata that had to be _devinitconst. Strangely enough, removing the devinitdata from the sis190_pci_tbl silents the error message here. Do you have an explanation ? gcc compalins if you add const and non-const data to the same section which is the case in this driver. The bug are exposed now where __devinitdata are no longer an empty define. Sam -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Francois noted that these warranted promotion from net-2.6.25.git to current 2.6.24-rc. NOTE: These changesets were cherry-picked from net-2.6.25, without any modifications. Any future rebase or merge should hopefully notice this automatically. Please pull from 'upstream-davem' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem to receive the following updates: drivers/net/sis190.c | 21 ++--- 1 files changed, 10 insertions(+), 11 deletions(-) Francois Romieu (4): sis190: add cmos ram access code for the SiS19x/968 chipset pair sis190: remove duplicate INIT_WORK sis190: mdio operation failure is not correctly detected sis190: scheduling while atomic error diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c index 7eab072..b570402 100644 --- a/drivers/net/sis190.c +++ b/drivers/net/sis190.c @@ -372,7 +372,7 @@ static void __mdio_cmd(void __iomem *ioaddr, u32 ctl) msleep(1); } - if (i 999) + if (i 99) printk(KERN_ERR PFX PHY command failed !\n); } @@ -847,10 +847,8 @@ static void sis190_soft_reset(void __iomem *ioaddr) { SIS_W32(IntrControl, 0x8000); SIS_PCI_COMMIT(); - msleep(1); SIS_W32(IntrControl, 0x0); sis190_asic_down(ioaddr); - msleep(1); } static void sis190_hw_start(struct net_device *dev) @@ -1041,8 +1039,6 @@ static int sis190_open(struct net_device *dev) if (rc 0) goto err_free_rx_1; - INIT_WORK(tp-phy_task, sis190_phy_task); - sis190_request_timer(dev); rc = request_irq(dev-irq, sis190_interrupt, IRQF_SHARED, dev-name, dev); @@ -1549,28 +1545,31 @@ static int __devinit sis190_get_mac_addr_from_eeprom(struct pci_dev *pdev, } /** - * sis190_get_mac_addr_from_apc - Get MAC address for SiS965 model + * sis190_get_mac_addr_from_apc - Get MAC address for SiS96x model * @pdev: PCI device * @dev: network device to get address for * - * SiS965 model, use APC CMOS RAM to store MAC address. + * SiS96x model, use APC CMOS RAM to store MAC address. * APC CMOS RAM is accessed through ISA bridge. * MAC address is read into @net_dev-dev_addr. */ static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev, struct net_device *dev) { + static const u16 __devinitdata ids[] = { 0x0965, 0x0966, 0x0968 }; struct sis190_private *tp = netdev_priv(dev); struct pci_dev *isa_bridge; u8 reg, tmp8; - int i; + unsigned int i; net_probe(tp, KERN_INFO %s: Read MAC address from APC.\n, pci_name(pdev)); - isa_bridge = pci_get_device(PCI_VENDOR_ID_SI, 0x0965, NULL); - if (!isa_bridge) - isa_bridge = pci_get_device(PCI_VENDOR_ID_SI, 0x0966, NULL); + for (i = 0; i ARRAY_SIZE(ids); i++) { + isa_bridge = pci_get_device(PCI_VENDOR_ID_SI, ids[i], NULL); + if (isa_bridge) + break; + } if (!isa_bridge) { net_probe(tp, KERN_INFO %s: Can not find ISA bridge.\n, -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: Jeff Garzik [EMAIL PROTECTED] Date: Wed, 23 Jan 2008 05:05:18 -0500 master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-davem Pulled into net-2.6, thanks Jeff. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: MAINTAINERS | 10 ++- drivers/net/3c509.c |4 + drivers/net/Kconfig | 20 +++--- drivers/net/fs_enet/fs_enet-main.c | 11 ++- drivers/net/loopback.c |2 +- drivers/net/netxen/netxen_nic.h | 69 + drivers/net/netxen/netxen_nic_init.c| 20 ++--- drivers/net/netxen/netxen_nic_main.c| 70 ++--- drivers/net/netxen/netxen_nic_niu.c |8 +- drivers/net/r8169.c |2 +- drivers/net/sky2.c | 48 +++- drivers/net/sky2.h |4 +- drivers/net/tulip/de4x5.c | 127 +++ drivers/net/tulip/tulip_core.c |3 +- drivers/net/tulip/xircom_cb.c | 54 ++--- drivers/net/usb/asix.c |6 +- drivers/net/wireless/rt2x00/rt2500usb.c |2 +- drivers/net/wireless/rt2x00/rt2x00pci.c | 20 - drivers/net/wireless/rt2x00/rt2x00usb.c | 17 - drivers/net/wireless/rt2x00/rt61pci.c | 12 +++ 20 files changed, 238 insertions(+), 271 deletions(-) Al Viro (3): xircom_cb endianness fixes de4x5 fixes endianness noise in tulip_core Anton Vorontsov (1): fs_enet: check for phydev existence in the ethtool handlers Dhananjay Phadke (1): netxen: fix byte-swapping in tx and rx Emil Medve (1): Fixed a small typo in the loopback driver Francois Romieu (1): r8169: fix missing loop variable increment Ivo van Doorn (2): rt2x00: Corectly initialize rt2500usb MAC rt2x00: Put 802.11 data on 4 byte boundary Jens Osterkamp (1): spidernet MAINTAINERship update Krzysztof Helt (1): 3c509: PnP resource management fix Mattias Nissler (1): rt2x00: Allow rt61 to catch up after a missing tx report Russ Dill (1): [usb netdev] asix: fix regression Stephen Hemminger (3): ip1000: menu location change sky2: large memory workaround. sky2: remove check for PCI wakeup setting from BIOS [EMAIL PROTECTED] (4): netxen: update MAINTAINERS netxen: update driver version netxen: stop second phy correctly netxen: optimize tx handling diff --git a/MAINTAINERS b/MAINTAINERS index b4f611c..92aa0a7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2739,8 +2739,8 @@ T:git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git S: Maintained NETXEN (1/10) GbE SUPPORT -P: Amit S. Kale -M: [EMAIL PROTECTED] +P: Dhananjay Phadke +M: [EMAIL PROTECTED] L: netdev@vger.kernel.org W: http://www.netxen.com S: Supported @@ -3611,8 +3611,10 @@ L: [EMAIL PROTECTED] ? S: Supported SPIDERNET NETWORK DRIVER for CELL -P: Linas Vepstas -M: [EMAIL PROTECTED] +P: Ishizaki Kou +M: [EMAIL PROTECTED] +P: Jens Osterkamp +M: [EMAIL PROTECTED] L: netdev@vger.kernel.org S: Supported diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c index edda6e1..8fafac9 100644 --- a/drivers/net/3c509.c +++ b/drivers/net/3c509.c @@ -385,6 +385,7 @@ static int __init el3_probe(int card_idx) #if defined(__ISAPNP__) static int pnp_cards; struct pnp_dev *idev = NULL; + int pnp_found = 0; if (nopnp == 1) goto no_pnp; @@ -430,6 +431,7 @@ __again: pnp_cards++; netdev_boot_setup_check(dev); + pnp_found = 1; goto found; } } @@ -560,6 +562,8 @@ no_pnp: lp = netdev_priv(dev); #if defined(__ISAPNP__) lp-dev = idev-dev; + if (pnp_found) + lp-type = EL3_PNP; #endif err = el3_common_init(dev); diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index d9107e5..114771a 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -166,16 +166,6 @@ config NET_SB1000 If you don't have this card, of course say N. -config IP1000 - tristate IP1000 Gigabit Ethernet support - depends on PCI EXPERIMENTAL - select MII - ---help--- - This driver supports IP1000 gigabit Ethernet cards. - - To compile this driver as a module, choose M here: the module - will be called ipg. This is recommended. - source drivers/net/arcnet/Kconfig source drivers/net/phy/Kconfig @@ -1992,6 +1982,16 @@ config E1000E To compile this driver as a module, choose M here. The module will be called e1000e. +config IP1000 + tristate IP1000 Gigabit Ethernet support + depends on PCI EXPERIMENTAL + select MII + ---help--- + This driver supports IP1000 gigabit Ethernet cards. + + To compile this driver as a
Re: [git patches] net driver fixes
Well, it's 2.6.24-rc7 already - any news? I put this into my net-2.6 tree last night since Jeff asked me to look over critical networking driver stuff for a little while. Thanks, they are upstream now and it did fix tulip in my PPC - network is stable again. -- Meelis Roos ([EMAIL PROTECTED]) -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
JG A couple [minorly] notable wireless bug fixes, and plenty of viro fixes JG for obscure issues :) What about the tulip NAPI fix from Stephen Hemminger? Without this, my tulip is hosed easily. The thread where I reported it was Badness at net/core/dev.c:2199, around Dec 16. That's going up in the first post-Xmas batch. Well, it's 2.6.24-rc7 already - any news? -- Meelis Roos ([EMAIL PROTECTED]) -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: Meelis Roos [EMAIL PROTECTED] Date: Mon, 7 Jan 2008 14:44:03 +0200 (EET) JG A couple [minorly] notable wireless bug fixes, and plenty of viro fixes JG for obscure issues :) What about the tulip NAPI fix from Stephen Hemminger? Without this, my tulip is hosed easily. The thread where I reported it was Badness at net/core/dev.c:2199, around Dec 16. That's going up in the first post-Xmas batch. Well, it's 2.6.24-rc7 already - any news? I put this into my net-2.6 tree last night since Jeff asked me to look over critical networking driver stuff for a little while. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Sun, Dec 23, 2007 at 12:33:14AM -0500, Jeff Garzik wrote: A couple [minorly] notable wireless bug fixes, and plenty of viro fixes for obscure issues :) Heh... FWIW, forcedeth patch (sent your way about two weeks ago) also belongs in the same set. If you need a resend - tell... There's another pile in drivers/net/wireless, but that's for linville to forward when he gets around to it. Pure annotation patches belong to past-2.6.24 merge. I also have starfire and epic100 fixes, but that'll have to wait until I get around to putting the cards into sparc box (mcast breakage for starfire and full-driver one for epic100; since nobody had cared for the latter since 2.3.late, well...) I think I'll have an ipg fix for you tomorrow, but I want to RTFM first to make sure that it makes sense. And there are several interesting issues in atl1, netxen and cxgb3, but those will have to wait for when I get around to asking maintainers just what the hell did they mean those to do. FWIW, drivers/net is fairly noise-free wrt sparse endianness warnings in my tree; the main exceptions are prism54 (oid_mgt.c and the nightmares it pulls) and skfp (AIX-shared vendor driver; 'nuff said, IMO). BTW, if you still have any documentation for xircom_cb from your fighting tulip-related stuff, it would be welcome - there are some oddities with rx ring handling (assuming that we care about that driver at all and it's not on the way out, that is). -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Al Viro wrote: On Sun, Dec 23, 2007 at 12:33:14AM -0500, Jeff Garzik wrote: A couple [minorly] notable wireless bug fixes, and plenty of viro fixes for obscure issues :) Heh... FWIW, forcedeth patch (sent your way about two weeks ago) also belongs in the same set. If you need a resend - tell... I applied it to #upstream (2.6.25) since forcedeth is not on any big-endian platforms AFAIK. Is it .24 material for some obvious reason, which I missed? :) There's another pile in drivers/net/wireless, but that's for linville to forward when he gets around to it. Pure annotation patches belong to past-2.6.24 merge. I also have starfire and epic100 fixes, but that'll have to wait until I get around to putting the cards into sparc box (mcast breakage for starfire and full-driver one for epic100; since nobody had cared for the latter since 2.3.late, well...) I have an epic100 card too if you need it (though it sounds like you have something testable). I think I'll have an ipg fix for you tomorrow, but I want to RTFM first to make sure that it makes sense. And there are several interesting issues in atl1, netxen and cxgb3, but those will have to wait for when I get around to asking maintainers just what the hell did they mean those to do. FWIW, drivers/net is fairly noise-free wrt sparse endianness warnings in my tree; the main exceptions are prism54 (oid_mgt.c and the nightmares it pulls) and skfp (AIX-shared vendor driver; 'nuff said, IMO). Awesome :) BTW, if you still have any documentation for xircom_cb from your fighting tulip-related stuff, it would be welcome - there are some oddities with rx ring handling (assuming that we care about that driver at all and it's not on the way out, that is). xircom_tulip_cb should probably be deleted, since it is the crappier of the two drivers for the same hardware (xircom_cb being the other one). xircom_cb _the driver_ is pretty odd. It is less like tulip than it should be, actually. There are several things that could have been done to improve the throughput/etc. of the driver, but it was more important at the time to simply find a driver that always worked. IIRC its RX filtering was broken, implying the need to enable promisc mode just to receive packets normally. Jeff -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Sun, Dec 23, 2007 at 01:42:14AM -0500, Jeff Garzik wrote: I applied it to #upstream (2.6.25) since forcedeth is not on any big-endian platforms AFAIK. All right, then... I hadn't been sure if it's onboard-only, that's all. I have an epic100 card too if you need it (though it sounds like you have something testable). Picked one for a fiver on ebay, just need to get around to putting it into that U60 box and testing; not a problem, just hadn't got around to doing that yet. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
A couple serious fixes (wireless, e100, sky2) and a bevy of minor ones. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: MAINTAINERS|6 ++ drivers/net/e100.c |5 ++- drivers/net/hamachi.c | 70 +--- drivers/net/ibm_newemac/debug.c|2 +- drivers/net/ixgb/ixgb_main.c | 16 +- drivers/net/pcmcia/pcnet_cs.c |1 + drivers/net/s2io.c |4 +- drivers/net/sis190.c | 10 ++-- drivers/net/sky2.c |9 +++- drivers/net/smc911x.h |2 +- drivers/net/starfire.c |2 +- drivers/net/sundance.c | 34 ++-- drivers/net/ucc_geth.c |2 +- drivers/net/ucc_geth_mii.h |2 +- drivers/net/wireless/Kconfig |1 + drivers/net/wireless/b43/leds.c|4 ++ drivers/net/wireless/b43/main.c| 22 drivers/net/wireless/b43/rfkill.c | 37 +++-- drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c |2 +- drivers/net/wireless/ipw2200.c |7 ++- drivers/net/wireless/iwlwifi/iwl3945-base.c|5 ++- drivers/net/wireless/iwlwifi/iwl4965-base.c|5 ++- drivers/net/wireless/zd1211rw/zd_mac.c | 10 +++- net/mac80211/ieee80211_rate.c |1 + 24 files changed, 168 insertions(+), 91 deletions(-) Adrian Bunk (3): drivers/net/sis190.c section fix drivers/net/s2io.c section fixes wireless/ipw2200.c: add __dev{init,exit} annotations Al Viro (4): sundance fixes starfire VLAN fix hamachi endianness fixes sis190 endianness Andrew Morton (2): ucc_geth: minor whitespace fix bcm43xx_debugfs sscanf fix Anton Vorontsov (1): ucc_geth: really fix section mismatch Auke Kok (1): e100: free IRQ to remove warningwhenrebooting Cyrill Gorcunov (2): ieee80211_rate: missed unlock iwlwifi3945/4965: fix rate control algo reference leak Dan Williams (1): libertas: select WIRELESS_EXT Jiri Slaby (1): Net: ibm_newemac, remove SPIN_LOCK_UNLOCKED Komuro (1): pcnet_cs: add new id Larry Finger (1): b43: Fix rfkill radio LED Matheos Worku (1): ixgb: make sure jumbos stay enabled after reset Paul Mundt (1): net: smc911x: shut up compiler warnings Stefano Brivio (1): libertas: add Dan Williams as maintainer Stephen Hemminger (1): sky2: RX lockup fix Ulrich Kunitz (1): zd1211rw: Fix alignment problems Zhu Yi (1): iwlwifi: fix rf_kill state inconsistent during suspend and resume diff --git a/MAINTAINERS b/MAINTAINERS index 9507b42..c331ba3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2489,6 +2489,12 @@ M: [EMAIL PROTECTED] W: ftp://ftp.kernel.org/pub/linux/docs/manpages S: Maintained +MARVELL LIBERTAS WIRELESS DRIVER +P: Dan Williams +M: [EMAIL PROTECTED] +L: [EMAIL PROTECTED] +S: Maintained + MARVELL MV643XX ETHERNET DRIVER P: Dale Farnsworth M: [EMAIL PROTECTED] diff --git a/drivers/net/e100.c b/drivers/net/e100.c index e1c8a0d..2b06e4b 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c @@ -2737,8 +2737,9 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state) pci_enable_wake(pdev, PCI_D3cold, 0); } - pci_disable_device(pdev); free_irq(pdev-irq, netdev); + + pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); return 0; @@ -2780,6 +2781,8 @@ static void e100_shutdown(struct pci_dev *pdev) pci_enable_wake(pdev, PCI_D3cold, 0); } + free_irq(pdev-irq, netdev); + pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); } diff --git a/drivers/net/hamachi.c b/drivers/net/hamachi.c index ed407c8..b53f6b6 100644 --- a/drivers/net/hamachi.c +++ b/drivers/net/hamachi.c @@ -204,8 +204,10 @@ KERN_INFOFurther modifications by Keith Underwood [EMAIL PROTECTED] /* Condensed bus+endian portability operations. */ #if ADDRLEN == 64 #define cpu_to_leXX(addr) cpu_to_le64(addr) +#define leXX_to_cpu(addr) le64_to_cpu(addr) #else #define cpu_to_leXX(addr) cpu_to_le32(addr) +#define leXX_to_cpu(addr) le32_to_cpu(addr) #endif @@ -465,12 +467,12 @@ enum intr_status_bits { /* The Hamachi Rx and Tx buffer descriptors. */ struct hamachi_desc { - u32 status_n_length; + __le32 status_n_length; #if ADDRLEN == 64 u32 pad; - u64 addr; + __le64 addr; #else - u32 addr; + __le32 addr; #endif }; @@ -874,13 +876,13 @@ static
Re: [git patches] net driver fixes
Jeff Garzik wrote: A couple serious fixes (wireless, e100, sky2) and a bevy of minor ones. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus Hi Jeff, Should I resend the 2 cxgb3 patches posted on 12/05 and 12/06 ? I did not see them getting applied to the #upstream branch today. Cheers, Divy -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Divy Le Ray wrote: Jeff Garzik wrote: A couple serious fixes (wireless, e100, sky2) and a bevy of minor ones. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus Hi Jeff, Should I resend the 2 cxgb3 patches posted on 12/05 and 12/06 ? I did not see them getting applied to the #upstream branch today. Cheers, Divy -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html The last thing I have from you, in netdev#upstream, is commit 75758e8aa4b7d5c651261ce653dd8d0b716e1eda Author: Divy Le Ray [EMAIL PROTECTED] Date: Wed Dec 5 10:15:01 2007 -0800 cxgb3 - T3C support update Update GPIO mapping for T3C. Update xgmac for T3C support. Fix typo in mtu table. and there's nothing in my inbox. So if that is not the change you want, yes, please do resend. Jeff -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
http://vger.kernel.org/majordomo-info.html The last thing I have from you, in netdev#upstream, is commit 75758e8aa4b7d5c651261ce653dd8d0b716e1eda Author: Divy Le Ray [EMAIL PROTECTED] Date: Wed Dec 5 10:15:01 2007 -0800 cxgb3 - T3C support update Update GPIO mapping for T3C. Update xgmac for T3C support. Fix typo in mtu table. and there's nothing in my inbox. So if that is not the change you want, yes, please do resend. Okay, I just resent. You originally attempted to apply these patches to the #upstream-fixes branch, which failed for the 2 patches i just reposted. I guess it is why they're no longer in your inbox. Cheers, Divy -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Nothing remarkable. Mainly bonding fixes and bringing ibm_newemac up to snuff. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: Documentation/networking/bonding.txt | 29 - arch/powerpc/boot/dts/sequoia.dts|5 ++ drivers/net/Kconfig |1 + drivers/net/bonding/bond_main.c | 116 +- drivers/net/bonding/bond_sysfs.c | 94 +--- drivers/net/bonding/bonding.h|4 +- drivers/net/cxgb3/regs.h | 27 - drivers/net/cxgb3/t3_hw.c|6 +- drivers/net/cxgb3/xgmac.c| 44 +- drivers/net/e100.c |6 +- drivers/net/e1000/e1000_ethtool.c|2 +- drivers/net/e1000e/ethtool.c |2 +- drivers/net/ibm_newemac/core.c | 56 +++- drivers/net/ibm_newemac/core.h | 11 +++- drivers/net/ibm_newemac/debug.c |5 ++ drivers/net/ibm_newemac/debug.h |5 ++ drivers/net/ibm_newemac/emac.h |5 ++ drivers/net/ibm_newemac/mal.c|5 ++ drivers/net/ibm_newemac/mal.h|5 ++ drivers/net/ibm_newemac/phy.c| 81 +++ drivers/net/ibm_newemac/phy.h|5 ++ drivers/net/ibm_newemac/rgmii.c | 25 +--- drivers/net/ibm_newemac/rgmii.h | 10 +++- drivers/net/ibm_newemac/tah.c|8 ++- drivers/net/ibm_newemac/tah.h|5 ++ drivers/net/ibm_newemac/zmii.c |9 +++- drivers/net/ibm_newemac/zmii.h |5 ++ drivers/net/s2io-regs.h |1 + drivers/net/s2io.c | 16 +- include/linux/if_bonding.h |3 +- 30 files changed, 423 insertions(+), 173 deletions(-) Auke Kok (1): e100: cleanup unneeded math Benjamin Herrenschmidt (5): ibm_newemac: Fix ZMII refcounting bug ibm_newemac: Workaround reset timeout when no link ibm_newemac: Cleanup/Fix RGMII MDIO support detection ibm_newemac: Cleanup/fix support for STACR register variants ibm_newemac: Update file headers copyright notices David Sterba (1): bonding: Fix time comparison Divy Le Ray (1): cxgb3 - T3C support update Eliezer Tamir (1): make bnx2x select ZLIB_INFLATE Hugh Blemings (1): ibm_newemac: Skip EMACs that are marked unused by the firmware Jay Vosburgh (2): bonding: Add new layer2+3 hash for xor/802.3ad modes bonding: Fix race at module unload Roel Kluin (1): e1000: fix memcpy in e1000_get_strings Sreenivasa Honnur (1): S2io: Check for register initialization completion before accesing device registers Stefan Roese (2): ibm_newemac: Add BCM5248 and Marvell 88E PHY support ibm_newemac: Add ET1011c PHY support Valentine Barshak (3): ibm_newemac: Correct opb_bus_freq value ibm_newemac: Fix typo reading TAH channel info ibm_newemac: Call dev_set_drvdata() before tah_reset() Wagner Ferenc (5): bonding: Remove trailing NULs from sysfs interface. bonding: Return nothing for not applicable values bonding: Purely cosmetic: rename a local variable bonding: Coding style: break line after the if condition bonding: Allow setting and querying xmit policy regardless of mode diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 1134062..6cc30e0 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt @@ -554,6 +554,30 @@ xmit_hash_policy This algorithm is 802.3ad compliant. + layer2+3 + + This policy uses a combination of layer2 and layer3 + protocol information to generate the hash. + + Uses XOR of hardware MAC addresses and IP addresses to + generate the hash. The formula is + + (((source IP XOR dest IP) AND 0x) XOR + ( source MAC XOR destination MAC )) + modulo slave count + + This algorithm will place all traffic to a particular + network peer on the same slave. For non-IP traffic, + the formula is the same as for the layer2 transmit + hash policy. + + This policy is intended to provide a more balanced + distribution of traffic than layer2 alone, especially + in environments where a layer3 gateway device is + required to reach most destinations. + + This algorithm is 802.3ad complient. + layer3+4 This policy uses upper layer protocol information, @@ -589,8 +613,9 @@ xmit_hash_policy or may not tolerate this noncompliance. The default value is layer2. This option was added in bonding -version 2.6.3. In earlier
[git patches] net driver fixes
Fixes several ugly bugs... Please pull from 'upstream-fixes' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-fixes to receive the following updates: drivers/net/fec_mpc52xx.c|4 ++-- drivers/net/gianfar.c|2 +- drivers/net/pasemi_mac.c |4 ++-- drivers/net/phy/mdio_bus.c |9 + drivers/net/phy/phy_device.c | 12 drivers/net/sky2.c |6 ++ drivers/net/smc911x.c|2 +- include/linux/phy.h |1 + 8 files changed, 26 insertions(+), 14 deletions(-) mode change 100755 = 100644 drivers/net/chelsio/cxgb2.c mode change 100755 = 100644 drivers/net/chelsio/pm3393.c mode change 100755 = 100644 drivers/net/chelsio/sge.c mode change 100755 = 100644 drivers/net/chelsio/sge.h Anton Vorontsov (1): PHY: Add the phy_device_release device method. David Woodhouse (1): Don't claim to do IPv6 checksum offload Divy Le Ray (1): cxgb - revert file mode changes. Grant Likely (1): gianfar: fix compile warning Jon Smirl (1): Fix memory corruption in fec_mpc52xx Olof Johansson (1): pasemi_mac: Fix reuse of free'd skb Stephen Hemminger (1): sky2: recovery deadlock fix Wang Chen (1): SMC911X: Fix using of dereferenced skb after netif_rx diff --git a/drivers/net/chelsio/cxgb2.c b/drivers/net/chelsio/cxgb2.c old mode 100755 new mode 100644 diff --git a/drivers/net/chelsio/pm3393.c b/drivers/net/chelsio/pm3393.c old mode 100755 new mode 100644 diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c old mode 100755 new mode 100644 diff --git a/drivers/net/chelsio/sge.h b/drivers/net/chelsio/sge.h old mode 100755 new mode 100644 diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c index bf5a7ca..79f7ead 100644 --- a/drivers/net/fec_mpc52xx.c +++ b/drivers/net/fec_mpc52xx.c @@ -422,7 +422,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id) rskb = bcom_retrieve_buffer(priv-rx_dmatsk, status, (struct bcom_bd **)bd); - dma_unmap_single(dev-dev, bd-skb_pa, skb-len, DMA_FROM_DEVICE); + dma_unmap_single(dev-dev, bd-skb_pa, rskb-len, DMA_FROM_DEVICE); /* Test for errors in received frame */ if (status BCOM_FEC_RX_BD_ERRORS) { @@ -467,7 +467,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id) bcom_prepare_next_buffer(priv-rx_dmatsk); bd-status = FEC_RX_BUFFER_SIZE; - bd-skb_pa = dma_map_single(dev-dev, rskb-data, + bd-skb_pa = dma_map_single(dev-dev, skb-data, FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE); bcom_submit_next_buffer(priv-rx_dmatsk, skb); diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 38268d7..0431e9e 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c @@ -696,7 +696,7 @@ int startup_gfar(struct net_device *dev) { struct txbd8 *txbdp; struct rxbd8 *rxbdp; - dma_addr_t addr; + dma_addr_t addr = 0; unsigned long vaddr; int i; struct gfar_private *priv = netdev_priv(dev); diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index 09b4fde..816a59e 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c @@ -586,7 +586,7 @@ static int pasemi_mac_clean_rx(struct pasemi_mac *mac, int limit) /* CRC error flagged */ mac-netdev-stats.rx_errors++; mac-netdev-stats.rx_crc_errors++; - dev_kfree_skb_irq(skb); + /* No need to free skb, it'll be reused */ goto next; } @@ -1362,7 +1362,7 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent) netif_napi_add(dev, mac-napi, pasemi_mac_poll, 64); - dev-features = NETIF_F_HW_CSUM | NETIF_F_LLTX | NETIF_F_SG; + dev-features = NETIF_F_IP_CSUM | NETIF_F_LLTX | NETIF_F_SG; /* These should come out of the device tree eventually */ mac-dma_txch = index; diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index fc2f0e6..c30196d 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -91,9 +91,12 @@ int mdiobus_register(struct mii_bus *bus) err = device_register(phydev-dev); - if (err) + if (err) { printk(KERN_ERR phy %d failed to register\n, i); + phy_device_free(phydev); + phydev = NULL; + } } bus-phy_map[i] = phydev; @@ -110,10 +113,8 @@ void mdiobus_unregister(struct mii_bus *bus) int i;
Re: [LIKELY_SPAM][git patches] net driver fixes
Jeff Garzik wrote: Notes: 1) Several of these are resends from the last submission. 2) That chelsio file mode change (644-755) is a bit annoying. Can git do chmod as a changeset by itself? Sorry for this. I had not noticed it. If any help, I just submitted a patch reverting the file mode changes. Cheers, Divy -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/Kconfig|2 +- drivers/net/amd8111e.c |6 ++ drivers/net/bfin_mac.c |2 +- drivers/net/ehea/ehea.h|2 +- drivers/net/ehea/ehea_main.c | 20 drivers/net/ehea/ehea_qmr.h|4 ++-- drivers/net/forcedeth.c| 38 +- drivers/net/ibm_newemac/core.c | 31 --- drivers/net/ibm_newemac/core.h |1 + drivers/net/sky2.c |6 +- drivers/net/smc911x.c | 19 +-- drivers/net/smc911x.h |2 +- drivers/net/smc91x.h |2 +- drivers/net/tulip/dmfe.c |4 ++-- drivers/net/usb/dm9601.c |2 +- include/linux/pci_ids.h|4 16 files changed, 84 insertions(+), 61 deletions(-) Ayaz Abdulla (2): forcedeth: new mcp79 pci ids forcedeth boot delay fix Benjamin Herrenschmidt (1): ibm_newemac: Fix possible lockup on close Jeff Garzik (1): dmfe: checkpatch fix (add whitespace) Jiri Bohac (1): amd8111e: don't call napi_enable if configured w/o NAPI Maxim Levitsky (1): NET: dmfe: don't access configuration space in D3 state Mike Frysinger (1): Blackfin SMC91x Driver: punt CONFIG_BFIN -- we already have CONFIG_BLACKFIN Peter Korsgaard (4): dm9601: Fix printk smc911x: Fix undefined CONFIG_ symbol warning smc911x: Fix unused variable warning. smc911x: Fix multicast handling Stephen Hemminger (1): sky2: disable rx checksum on Yukon XL Thomas Klein (2): ehea: Improve tx packets counting ehea: Reworked rcv queue handling to log only fatal errors Vitja Makarov (1): Blackfin EMAC driver: fix bug - NAT doesn't work with bfin_mac driver diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index e8d69b0..1437b37 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -888,7 +888,7 @@ config SMC91X tristate SMC 91C9x/91C1xxx support select CRC32 select MII - depends on ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || SOC_AU1X00 || BFIN + depends on ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || SOC_AU1X00 || BLACKFIN help This is a driver for SMC's 91x series of Ethernet chipsets, including the SMC91C94 and the SMC91C111. Say Y if you want it diff --git a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c index eebf5bb..e7fdd81 100644 --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c @@ -1340,7 +1340,9 @@ static int amd8111e_close(struct net_device * dev) struct amd8111e_priv *lp = netdev_priv(dev); netif_stop_queue(dev); +#ifdef CONFIG_AMD8111E_NAPI napi_disable(lp-napi); +#endif spin_lock_irq(lp-lock); @@ -1372,7 +1374,9 @@ static int amd8111e_open(struct net_device * dev ) dev-name, dev)) return -EAGAIN; +#ifdef CONFIG_AMD8111E_NAPI napi_enable(lp-napi); +#endif spin_lock_irq(lp-lock); @@ -1380,7 +1384,9 @@ static int amd8111e_open(struct net_device * dev ) if(amd8111e_restart(dev)){ spin_unlock_irq(lp-lock); +#ifdef CONFIG_AMD8111E_NAPI napi_disable(lp-napi); +#endif if (dev-irq) free_irq(dev-irq, dev); return -ENOMEM; diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index 084acfd..f0f8516 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c @@ -676,7 +676,7 @@ static void bf537mac_rx(struct net_device *dev) skb-protocol = eth_type_trans(skb, dev); #if defined(BFIN_MAC_CSUM_OFFLOAD) skb-csum = current_rx_ptr-status.ip_payload_csum; - skb-ip_summed = CHECKSUM_PARTIAL; + skb-ip_summed = CHECKSUM_COMPLETE; #endif netif_rx(skb); diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index f78e5bf..5f82a46 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -40,7 +40,7 @@ #include asm/io.h #define DRV_NAME ehea -#define DRV_VERSIONEHEA_0080 +#define DRV_VERSIONEHEA_0083 /* eHEA capability flags */ #define DLPAR_PORT_ADD_REM 1 diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index f0319f1..869e160 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -136,7 +136,7 @@ static struct net_device_stats *ehea_get_stats(struct net_device *dev) struct ehea_port *port = netdev_priv(dev); struct net_device_stats *stats = port-stats; struct hcp_ehea_port_cb2 *cb2; - u64 hret, rx_packets; + u64 hret, rx_packets, tx_packets; int i; memset(stats, 0, sizeof(*stats)); @@ -162,7 +162,11 @@ static struct net_device_stats
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: MAINTAINERS | 10 ++- drivers/net/Kconfig |2 +- drivers/net/bonding/bond_main.c |1 + drivers/net/bonding/bond_sysfs.c |4 +- drivers/net/pasemi_mac.c | 18 - drivers/net/qla3xxx.c| 42 +-- drivers/net/qla3xxx.h|1 + drivers/net/r8169.c | 26 ++- drivers/net/sky2.c | 116 ++ drivers/net/sky2.h |3 +- drivers/net/smc91x.h | 15 drivers/net/wireless/Kconfig |2 +- drivers/net/wireless/b43/Kconfig | 10 ++- drivers/net/wireless/b43/debugfs.c |2 +- drivers/net/wireless/b43/main.c | 19 +++--- drivers/net/wireless/b43/pcmcia.c| 52 +- drivers/net/wireless/b43/rfkill.c| 115 + drivers/net/wireless/b43/rfkill.h| 14 +--- drivers/net/wireless/b43legacy/debugfs.c |2 +- drivers/net/wireless/b43legacy/main.c| 21 +++--- drivers/net/wireless/hostap/hostap_pci.c |6 +- drivers/net/wireless/ipw2100.c |4 +- drivers/net/wireless/libertas/cmd.c | 10 ++- drivers/net/wireless/libertas/if_cs.c|7 ++- drivers/net/wireless/libertas/if_sdio.c |4 +- drivers/net/wireless/rt2x00/rt2x00mac.c |8 ++ 26 files changed, 285 insertions(+), 229 deletions(-) Ciaran McCreesh (1): r8169: add PCI ID for the 8168 in the Abit Fatal1ty F-190HD motherboard Francois Romieu (2): r8169: do not enable the TBI for the 8168 and the 81x0 r8169: prevent bit sign expansion error in mdio_write Holger Schurig (1): libertas: fixes for slow hardware Ivo van Doorn (1): rt2x00: Block adhoc master mode Jay Vosburgh (2): bonding: fix rtnl locking merge error bonding: don't validate address at device open John W. Linville (1): hermes: clarify Intel reference in Kconfig help Magnus Damm (1): ax88796: add superh to kconfig dependencies Marcelo Tosatti (1): libertas: properly account for queue commands Mark Lord (2): r8169: revert 7da97ec96a0934319c7fbedd3d38baf533e20640 (partly) r8169: revert 7da97ec96a0934319c7fbedd3d38baf533e20640 (bis repetita) Michael Buesch (7): b43: pcmcia-host initialization bugfixes b43: Fix rfkill callback deadlock b43: debugfs SHM read buffer overrun fix b43: Rewrite and fix rfkill init b43: properly request pcmcia IRQ b43legacy: Fix sparse warning b43: Fix kconfig dependencies for rfkill and leds Olof Johansson (2): pasemi_mac: Don't set replace-source-address descriptor bits pasemi_mac: Fix CRC checks Pierre Ossman (1): libertas: make if_sdio align packets Randy Dunlap (1): hostap: fix section mismatch warning Roel Kluin (1): ipw2100: fix postfix decrement errors Ron Mercer (2): qla3xxx: bugfix: Move link state machine into a worker thread qla3xxx: bugfix: Fix bad logical operation in link state machine. Stefano Brivio (4): b43legacy: fix possible buffer overrun in debugfs b43legacy: add me as maintainer and fix URLs b43: fix shared IRQ race condition b43legacy: fix shared IRQ race condition Stephen Hemminger (9): sky2: enable PCI config writes sky2: status ring race fix sky2: longer PHY delay sky2: dont change LED after autoneg sky2: remove unneeded mask update sky2: handle advanced error recovery config issues sky2: version 1.20 sky2: netpoll on port 0 only sky2: new pci id's eric miao (1): add support for smc91x ethernet interface on zylonite diff --git a/MAINTAINERS b/MAINTAINERS index 1c7c229..6a97027 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -787,23 +787,25 @@ B43 WIRELESS DRIVER P: Michael Buesch M: [EMAIL PROTECTED] P: Stefano Brivio -M: [EMAIL PROTECTED] +M: [EMAIL PROTECTED] L: [EMAIL PROTECTED] -W: http://bcm43xx.berlios.de/ +W: http://linuxwireless.org/en/users/Drivers/b43 S: Maintained B43LEGACY WIRELESS DRIVER P: Larry Finger M: [EMAIL PROTECTED] +P: Stefano Brivio +M: [EMAIL PROTECTED] L: [EMAIL PROTECTED] -W: http://bcm43xx.berlios.de/ +W: http://linuxwireless.org/en/users/Drivers/b43 S: Maintained BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION) P: Larry Finger M: [EMAIL PROTECTED] P: Stefano Brivio -M: [EMAIL PROTECTED] +M: [EMAIL PROTECTED] L: [EMAIL PROTECTED] W: http://bcm43xx.berlios.de/ S: Maintained diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index cb581eb..bf8890e 100644 --- a/drivers/net/Kconfig +++
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/82596.c |3 ++- drivers/net/phy/marvell.c| 23 ++- drivers/net/phy/phy_device.c |2 +- drivers/net/sunhme.c |4 ++-- 4 files changed, 23 insertions(+), 9 deletions(-) David Miller (1): SUNHME: Fix missing NETIF_F_VLAN_CHALLENGED on PCI happy meals Evgeniy Dushistov (1): 82596: free nonexistent resource fix Olof Johansson (2): phylib: Add ID for Marvell 88E1240 phylib: Silence driver registration diff --git a/drivers/net/82596.c b/drivers/net/82596.c index bb30d5b..2797da7 100644 --- a/drivers/net/82596.c +++ b/drivers/net/82596.c @@ -1192,6 +1192,8 @@ struct net_device * __init i82596_probe(int unit) goto out; } + dev-base_addr = ioaddr; + for (i = 0; i 8; i++) { eth_addr[i] = inb(ioaddr + 8 + i); checksum += eth_addr[i]; @@ -1209,7 +1211,6 @@ struct net_device * __init i82596_probe(int unit) goto out1; } - dev-base_addr = ioaddr; dev-irq = 10; } #endif diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c index d2ede5f..035fd41 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c @@ -265,7 +265,7 @@ static struct phy_driver marvell_drivers[] = { .read_status = genphy_read_status, .ack_interrupt = marvell_ack_interrupt, .config_intr = marvell_config_intr, - .driver = {.owner = THIS_MODULE,}, + .driver = { .owner = THIS_MODULE }, }, { .phy_id = 0x01410c90, @@ -278,7 +278,7 @@ static struct phy_driver marvell_drivers[] = { .read_status = genphy_read_status, .ack_interrupt = marvell_ack_interrupt, .config_intr = marvell_config_intr, - .driver = {.owner = THIS_MODULE,}, + .driver = { .owner = THIS_MODULE }, }, { .phy_id = 0x01410cc0, @@ -291,7 +291,7 @@ static struct phy_driver marvell_drivers[] = { .read_status = genphy_read_status, .ack_interrupt = marvell_ack_interrupt, .config_intr = marvell_config_intr, - .driver = {.owner = THIS_MODULE,}, + .driver = { .owner = THIS_MODULE }, }, { .phy_id = 0x01410cd0, @@ -304,8 +304,21 @@ static struct phy_driver marvell_drivers[] = { .read_status = genphy_read_status, .ack_interrupt = marvell_ack_interrupt, .config_intr = marvell_config_intr, - .driver = {.owner = THIS_MODULE,}, - } + .driver = { .owner = THIS_MODULE }, + }, + { + .phy_id = 0x01410e30, + .phy_id_mask = 0xfff0, + .name = Marvell 88E1240, + .features = PHY_GBIT_FEATURES, + .flags = PHY_HAS_INTERRUPT, + .config_init = m88e_config_init, + .config_aneg = marvell_config_aneg, + .read_status = genphy_read_status, + .ack_interrupt = marvell_ack_interrupt, + .config_intr = marvell_config_intr, + .driver = { .owner = THIS_MODULE }, + }, }; static int __init marvell_init(void) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index c046121..f6e4848 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -706,7 +706,7 @@ int phy_driver_register(struct phy_driver *new_driver) return retval; } - pr_info(%s: Registered new driver\n, new_driver-name); + pr_debug(%s: Registered new driver\n, new_driver-name); return 0; } diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index 120c8af..c20a3bd 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c @@ -3143,8 +3143,8 @@ static int __devinit happy_meal_pci_probe(struct pci_dev *pdev, dev-irq = pdev-irq; dev-dma = 0; - /* Happy Meal can do it all... */ - dev-features |= NETIF_F_SG | NETIF_F_HW_CSUM; + /* Happy Meal can do it all... except VLAN. */ + dev-features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_VLAN_CHALLENGED; #if defined(CONFIG_SBUS) defined(CONFIG_PCI) /* Hook up PCI register/dma accessors. */ - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/Kconfig |4 +--- drivers/net/fec_mpc52xx.c |4 ++-- drivers/net/myri10ge/myri10ge.c |6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) Andrew Gallatin (1): Fix myri10ge NAPI oops warnings Grant Likely (2): mpc5200: Fix Kconfig dependancies on MPC5200 FEC device driver Fix region size check in mpc5200 FEC driver diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 867cb73..5f800a6 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -1883,9 +1883,7 @@ config FEC2 config FEC_MPC52xx tristate MPC52xx FEC driver - depends on PPC_MPC52xx - select PPC_BESTCOMM - select PPC_BESTCOMM_FEC + depends on PPC_MERGE PPC_MPC52xx PPC_BESTCOMM_FEC select CRC32 select PHYLIB ---help--- diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c index fc1cf0b..a8a0ee2 100644 --- a/drivers/net/fec_mpc52xx.c +++ b/drivers/net/fec_mpc52xx.c @@ -879,9 +879,9 @@ mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match) Error while parsing device node resource\n ); return rv; } - if ((mem.end - mem.start + 1) != sizeof(struct mpc52xx_fec)) { + if ((mem.end - mem.start + 1) sizeof(struct mpc52xx_fec)) { printk(KERN_ERR DRIVER_NAME -- invalid resource size (%lx != %x), check mpc52xx_devices.c\n, +- invalid resource size (%lx %x), check mpc52xx_devices.c\n, (unsigned long)(mem.end - mem.start + 1), sizeof(struct mpc52xx_fec)); return -EINVAL; } diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 366e62a..0f306dd 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -1151,7 +1151,7 @@ static inline int myri10ge_clean_rx_done(struct myri10ge_priv *mgp, int budget) u16 length; __wsum checksum; - while (rx_done-entry[idx].length != 0 work_done++ budget) { + while (rx_done-entry[idx].length != 0 work_done budget) { length = ntohs(rx_done-entry[idx].length); rx_done-entry[idx].length = 0; checksum = csum_unfold(rx_done-entry[idx].checksum); @@ -1167,6 +1167,7 @@ static inline int myri10ge_clean_rx_done(struct myri10ge_priv *mgp, int budget) rx_bytes += rx_ok * (unsigned long)length; cnt++; idx = cnt (myri10ge_max_intr_slots - 1); + work_done++; } rx_done-idx = idx; rx_done-cnt = cnt; @@ -1233,13 +1234,12 @@ static int myri10ge_poll(struct napi_struct *napi, int budget) struct myri10ge_priv *mgp = container_of(napi, struct myri10ge_priv, napi); struct net_device *netdev = mgp-dev; - struct myri10ge_rx_done *rx_done = mgp-rx_done; int work_done; /* process as many rx events as NAPI will allow */ work_done = myri10ge_clean_rx_done(mgp, budget); - if (rx_done-entry[rx_done-idx].length == 0 || !netif_running(netdev)) { + if (work_done budget || !netif_running(netdev)) { netif_rx_complete(netdev, napi); put_be32(htonl(3), mgp-irq_claim); } - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Fixes, and a new DM9601 USB NIC id. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/bfin_mac.c|2 - drivers/net/e1000/e1000.h |8 +++ drivers/net/e1000/e1000_ethtool.c | 29 ++-- drivers/net/e1000/e1000_hw.c |4 +- drivers/net/e1000/e1000_main.c|7 + drivers/net/e1000/e1000_param.c | 23 ++- drivers/net/e1000e/82571.c|2 +- drivers/net/e1000e/ethtool.c |4 +- drivers/net/e1000e/param.c| 35 +++-- drivers/net/ixgb/ixgb.h |7 ++ drivers/net/ixgb/ixgb_ethtool.c |7 + drivers/net/ixgb/ixgb_hw.c|4 +- drivers/net/ixgb/ixgb_main.c | 15 +--- drivers/net/ixgb/ixgb_param.c | 43 +++-- drivers/net/ixgbe/ixgbe.h |2 +- drivers/net/ixgbe/ixgbe_82598.c |3 +- drivers/net/ixgbe/ixgbe_main.c|9 --- drivers/net/usb/dm9601.c |4 +++ include/linux/mv643xx_eth.h |6 ++-- 19 files changed, 110 insertions(+), 104 deletions(-) Auke Kok (1): ixgb: fix TX hangs under heavy load Dale Farnsworth (1): mv643xx_eth: Fix MV643XX_ETH offsets used by Pegasos 2 Michael Hennerich (1): Blackfin EMAC driver: Fix Ethernet communication bug (dupliated and lost packets) Peter Korsgaard (1): DM9601: Support for ADMtek ADM8515 NIC Roel Kluin (1): e1000e: Fix typo ! Stephen Hemminger (4): e1000e: fix sparse warnings ixgb: fix sparse warnings e1000: sparse warnings fixes ixgbe: minor sparse fixes diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index 53fe7de..084acfd 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c @@ -371,7 +371,6 @@ static void bf537_adjust_link(struct net_device *dev) if (phydev-speed != lp-old_speed) { #if defined(CONFIG_BFIN_MAC_RMII) u32 opmode = bfin_read_EMAC_OPMODE(); - bf537mac_disable(); switch (phydev-speed) { case 10: opmode |= RMII_10; @@ -386,7 +385,6 @@ static void bf537_adjust_link(struct net_device *dev) break; } bfin_write_EMAC_OPMODE(opmode); - bf537mac_enable(); #endif new_state = 1; diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h index 781ed99..3b84028 100644 --- a/drivers/net/e1000/e1000.h +++ b/drivers/net/e1000/e1000.h @@ -351,4 +351,12 @@ enum e1000_state_t { __E1000_DOWN }; +extern char e1000_driver_name[]; +extern const char e1000_driver_version[]; + +extern void e1000_power_up_phy(struct e1000_adapter *); +extern void e1000_set_ethtool_ops(struct net_device *netdev); +extern void e1000_check_options(struct e1000_adapter *adapter); + + #endif /* _E1000_H_ */ diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index 6c9a643..667f18b 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c @@ -32,9 +32,6 @@ #include asm/uaccess.h -extern char e1000_driver_name[]; -extern char e1000_driver_version[]; - extern int e1000_up(struct e1000_adapter *adapter); extern void e1000_down(struct e1000_adapter *adapter); extern void e1000_reinit_locked(struct e1000_adapter *adapter); @@ -733,16 +730,16 @@ err_setup: #define REG_PATTERN_TEST(R, M, W) \ { \ - uint32_t pat, value; \ - uint32_t test[] = \ + uint32_t pat, val; \ + const uint32_t test[] =\ {0x5A5A5A5A, 0xA5A5A5A5, 0x, 0x}; \ - for (pat = 0; pat ARRAY_SIZE(test); pat++) { \ + for (pat = 0; pat ARRAY_SIZE(test); pat++) { \ E1000_WRITE_REG(adapter-hw, R, (test[pat] W)); \ - value = E1000_READ_REG(adapter-hw, R); \ - if (value != (test[pat] W M)) { \ + val = E1000_READ_REG(adapter-hw, R); \ + if (val != (test[pat] W M)) { \ DPRINTK(DRV, ERR, pattern test reg %04X failed: got \ 0x%08X expected 0x%08X\n,\ - E1000_##R, value, (test[pat] W M));\ +
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/Kconfig | 41 - drivers/net/dm9000.c|6 ++-- drivers/net/phy/mdio-bitbang.c |2 + drivers/net/tsi108_eth.c|2 +- drivers/net/tulip/Kconfig | 14 +++ drivers/net/wireless/b43/main.c |5 +-- drivers/net/wireless/b43legacy/main.c |2 +- drivers/net/wireless/ipw2100.c | 39 drivers/net/wireless/ipw2100.h |4 ++ drivers/net/wireless/iwlwifi/iwl-3945-rs.c |3 -- drivers/net/wireless/iwlwifi/iwl-3945.c |1 - drivers/net/wireless/iwlwifi/iwl-4965-rs.c | 13 --- drivers/net/wireless/iwlwifi/iwl-4965.c |2 - drivers/net/wireless/iwlwifi/iwl3945-base.c | 44 +- drivers/net/wireless/iwlwifi/iwl4965-base.c | 52 +++--- drivers/net/wireless/iwlwifi/iwlwifi.h |7 +--- drivers/net/wireless/p54common.c|2 +- drivers/net/wireless/rt2x00/rt2x00dev.c |2 +- drivers/net/wireless/rt2x00/rt73usb.c |1 + drivers/net/wireless/rtl8187_dev.c | 35 -- drivers/net/wireless/zd1201.c |4 +- drivers/net/wireless/zd1211rw/zd_usb.c |7 +++- drivers/s390/net/qeth_main.c|3 +- 23 files changed, 158 insertions(+), 133 deletions(-) Adrian Bunk (1): iwl4965-base.c: fix off-by-one errors Dan Williams (1): ipw2100: send WEXT scan events Holger Schurig (1): janitorial: fix all double includes in drivers/net/wireless Ivo van Doorn (1): rt2x00: Add new rt73usb USB ID John W. Linville (1): zd1201: avoid null ptr access of skb-dev Larry Finger (1): b43legacy: Fix potential return of uninitialized variable Marc Pignat (1): zd1211rw, fix oops when ejecting install media Mattias Nissler (1): rt2x00: Fix residual check in PLCP calculations. Michael Buesch (1): b43: Make b43_stop() static Michael Wu (3): rtl8187: Fix more frag bit checking, rts duration calc rtl8187: remove NICMAC setting in configure_filters callback p54: Make filter configuration atomic Mike Rapoport (1): DM9000 initialization fix Olof Johansson (1): Fix build break in tsi108.c Randy Dunlap (3): phy/bitbang: missing MODULE_LICENSE NAPI: kconfig prompt and deleted doc file ir-functions.c:(.text+0xbce18): undefined reference to `input_event' Ron Rindjunsky (1): iwlwifi: set correct base rate for A band in rs_dbgfs_set_mcs Tomas Winkler (1): iwlwifi: Fix rate setting in probe request for HW sacn Ursula Braun (1): qeth: remove header_ops bug WANG Cong (1): drivers/net/wireless/b43/main.c: fix an uninitialized variable diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 83d52c8..2cafa5c 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -1293,9 +1293,6 @@ config PCNET32_NAPI deployed on potentially unfriendly networks (e.g. in a firewall), then say Y here. - See file:Documentation/networking/NAPI_HOWTO.txt for more - information. - If in doubt, say N. config AMD8111_ETH @@ -1313,7 +1310,7 @@ config AMD8111_ETH will be called amd8111e. config AMD8111E_NAPI - bool Enable NAPI support + bool Use RX polling (NAPI) depends on AMD8111_ETH help NAPI is a new driver API designed to reduce CPU and interrupt load @@ -1324,9 +1321,6 @@ config AMD8111E_NAPI deployed on potentially unfriendly networks (e.g. in a firewall), then say Y here. - See file:Documentation/networking/NAPI_HOWTO.txt for more - information. - If in doubt, say N. config ADAPTEC_STARFIRE @@ -1355,9 +1349,6 @@ config ADAPTEC_STARFIRE_NAPI deployed on potentially unfriendly networks (e.g. in a firewall), then say Y here. - See file:Documentation/networking/NAPI_HOWTO.txt for more - information. - If in doubt, say N. config AC3200 @@ -1431,7 +1422,7 @@ config FORCEDETH called forcedeth. config FORCEDETH_NAPI - bool Use Rx and Tx Polling (NAPI) (EXPERIMENTAL) + bool Use Rx Polling (NAPI) (EXPERIMENTAL) depends on FORCEDETH EXPERIMENTAL help NAPI is a new driver API designed to reduce CPU and interrupt load @@ -1442,9 +1433,6 @@ config FORCEDETH_NAPI deployed on potentially unfriendly networks (e.g. in a firewall), then say Y here. - See file:Documentation/networking/NAPI_HOWTO.txt for more - information. - If in doubt, say N. config CS89x0 @@ -1756,9 +1744,6 @@ config VIA_RHINE_NAPI deployed
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/3c59x.c|2 +- drivers/net/forcedeth.c| 27 ++--- drivers/net/fs_enet/fs_enet-main.c | 28 ++--- drivers/net/fs_enet/fs_enet.h |1 + drivers/net/gianfar.c |4 ++- drivers/net/gianfar.h |1 - drivers/net/ibm_newemac/mal.c |2 +- drivers/net/pcnet32.c | 58 drivers/net/sky2.c | 46 include/linux/netdevice.h | 18 +++ 10 files changed, 108 insertions(+), 79 deletions(-) Anton Vorontsov (1): gianfar: fix obviously wrong #ifdef CONFIG_GFAR_NAPI placement Badari Pulavarty (1): vortex_up should initialize err Benjamin Herrenschmidt (1): fix EMAC driver for proper napi_synchronize API Don Fry (3): pcnet32: fix non-napi packet reception pcnet32: remove compile warnings in non-napi mode pcnet32: remove private net_device_stats structure Ingo Molnar (1): forcedeth: fix rx-work condition in nv_rx_process_optimized() too Manfred Spraul (1): forcedeth msi bugfix Scott Wood (1): fs_enet: Update for API changes Sebastian Siewior (1): gianfar: remove orphan struct. Stephen Hemminger (2): napi_synchronize: waiting for NAPI sky2: shutdown cleanup diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 862f472..6f8e7d4 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -1491,7 +1491,7 @@ vortex_up(struct net_device *dev) struct vortex_private *vp = netdev_priv(dev); void __iomem *ioaddr = vp-ioaddr; unsigned int config; - int i, mii_reg1, mii_reg5, err; + int i, mii_reg1, mii_reg5, err = 0; if (VORTEX_PCI(vp)) { pci_set_power_state(VORTEX_PCI(vp), PCI_D0);/* Go active */ diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index cfbb7aa..70ddf1a 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -992,7 +992,7 @@ static void nv_enable_irq(struct net_device *dev) if (np-msi_flags NV_MSI_X_ENABLED) enable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); else - enable_irq(dev-irq); + enable_irq(np-pci_dev-irq); } else { enable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_RX].vector); enable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_TX].vector); @@ -1008,7 +1008,7 @@ static void nv_disable_irq(struct net_device *dev) if (np-msi_flags NV_MSI_X_ENABLED) disable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); else - disable_irq(dev-irq); + disable_irq(np-pci_dev-irq); } else { disable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_RX].vector); disable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_TX].vector); @@ -1607,7 +1607,7 @@ static void nv_do_rx_refill(unsigned long data) if (np-msi_flags NV_MSI_X_ENABLED) disable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); else - disable_irq(dev-irq); + disable_irq(np-pci_dev-irq); } else { disable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_RX].vector); } @@ -1625,7 +1625,7 @@ static void nv_do_rx_refill(unsigned long data) if (np-msi_flags NV_MSI_X_ENABLED) enable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); else - enable_irq(dev-irq); + enable_irq(np-pci_dev-irq); } else { enable_irq(np-msi_x_entry[NV_MSI_X_VECTOR_RX].vector); } @@ -2408,13 +2408,13 @@ static int nv_rx_process_optimized(struct net_device *dev, int limit) struct fe_priv *np = netdev_priv(dev); u32 flags; u32 vlanflags = 0; - u32 rx_processed_cnt = 0; + int rx_work = 0; struct sk_buff *skb; int len; while((np-get_rx.ex != np-put_rx.ex) !((flags = le32_to_cpu(np-get_rx.ex-flaglen)) NV_RX2_AVAIL) - (rx_processed_cnt++ limit)) { + (rx_work limit)) { dprintk(KERN_DEBUG %s: nv_rx_process_optimized: flags 0x%x.\n, dev-name, flags); @@ -2517,9 +2517,11 @@ next_pkt: np-get_rx.ex = np-first_rx.ex; if (unlikely(np-get_rx_ctx++ == np-last_rx_ctx)) np-get_rx_ctx = np-first_rx_ctx; + + rx_work++; } - return rx_processed_cnt; + return rx_work; } static void set_bufsize(struct net_device
[git patches] net driver fixes (mostly)
Mostly fixes, except a couple things from Stephen H and myself. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/3c59x.c |8 +- drivers/net/Kconfig | 10 + drivers/net/bonding/bond_main.c | 11 +- drivers/net/bonding/bonding.h |4 +- drivers/net/e1000e/ethtool.c| 35 ++- drivers/net/e1000e/hw.h |2 +- drivers/net/forcedeth.c | 168 -- drivers/net/gianfar.c |7 +- drivers/net/ibm_newemac/mal.c | 25 ++- drivers/net/skge.c | 485 ++- drivers/net/skge.h | 17 +- drivers/net/tokenring/3c359.c |2 +- 12 files changed, 558 insertions(+), 216 deletions(-) Adrian Bunk (1): e1000e: fix error checks Auke Kok (2): e1000e: Fix debug printk macro e1000e: don't poke PHY registers to retreive link status Benjamin Herrenschmidt (1): net: Fix new EMAC driver for NAPI changes Ingo Molnar (1): forcedeth: fix NAPI rx poll function Jay Vosburgh (1): bonding: two small fixes for IPoIB support Jeff Garzik (2): [netdrvr] forcedeth: improved probe info; dev_printk() cleanups [netdrvr] forcedeth: remove in-driver copy of net_device_stats Li Yang (1): gianfar: Fix compile regression caused by 09f75cd7 Marcus Meissner (1): tokenring/3c359.c: fixed array index problem Steffen Klassert (1): WOL bugfix for 3c59x.c Stephen Hemminger (7): skge: fix ram buffer size calculation skge: changing MTU while running causes problems skge: XM PHY handling fixes skge: internal stats skge: eeprom support skge: add a debug interface skge 1.12 diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 8d3893d..862f472 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -3118,7 +3118,13 @@ static void acpi_set_WOL(struct net_device *dev) iowrite16(SetRxFilter|RxStation|RxMulticast|RxBroadcast, ioaddr + EL3_CMD); iowrite16(RxEnable, ioaddr + EL3_CMD); - pci_enable_wake(VORTEX_PCI(vp), 0, 1); + if (pci_enable_wake(VORTEX_PCI(vp), PCI_D3hot, 1)) { + printk(KERN_INFO %s: WOL not supported.\n, + pci_name(VORTEX_PCI(vp))); + + vp-enable_wol = 0; + return; + } /* Change the power state to D3; RxEnable doesn't take effect. */ pci_set_power_state(VORTEX_PCI(vp), PCI_D3hot); diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 8f99a06..83d52c8 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -2173,6 +2173,16 @@ config SKGE To compile this driver as a module, choose M here: the module will be called skge. This is recommended. +config SKGE_DEBUG + bool Debugging interface + depends on SKGE DEBUG_FS + help +This option adds the ability to dump driver state for debugging. +The file debugfs/skge/ethX displays the state of the internal +transmit and receive rings. + +If unsure, say N. + config SKY2 tristate SysKonnect Yukon2 support depends on PCI diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index db80f24..6f85cc3 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1263,6 +1263,7 @@ static void bond_setup_by_slave(struct net_device *bond_dev, struct bonding *bond = bond_dev-priv; bond_dev-neigh_setup = slave_dev-neigh_setup; + bond_dev-header_ops= slave_dev-header_ops; bond_dev-type = slave_dev-type; bond_dev-hard_header_len = slave_dev-hard_header_len; @@ -3351,7 +3352,10 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave switch (event) { case NETDEV_UNREGISTER: if (bond_dev) { - bond_release(bond_dev, slave_dev); + if (bond-setup_by_slave) + bond_release_and_destroy(bond_dev, slave_dev); + else + bond_release(bond_dev, slave_dev); } break; case NETDEV_CHANGE: @@ -3366,11 +3370,6 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave * ... Or is it this? */ break; - case NETDEV_GOING_DOWN: - dprintk(slave %s is going down\n, slave_dev-name); - if (bond-setup_by_slave) - bond_release_and_destroy(bond_dev, slave_dev); - break; case NETDEV_CHANGEMTU: /* * TODO: Should
[git patches] net driver fixes
sky2 is really the only important fix, the others are trivial. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/sky2.c |3 --- drivers/net/wireless/bcm43xx/bcm43xx_wx.c |2 +- net/ieee80211/softmac/ieee80211softmac_wx.c |2 +- 3 files changed, 2 insertions(+), 5 deletions(-) Joe Perches (1): bcm43xx: Correct printk with PFX before KERN_ Richard Knutsson (1): softmac: Fix compiler-warning Stephen Hemminger (1): sky2: jumbo frame regression fix diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 162489b..ea117fc 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -2163,9 +2163,6 @@ static struct sk_buff *sky2_receive(struct net_device *dev, sky2-rx_next = (sky2-rx_next + 1) % sky2-rx_pending; prefetch(sky2-rx_ring + sky2-rx_next); - if (length ETH_ZLEN || length sky2-rx_data_size) - goto len_error; - /* This chip has hardware problems that generates bogus status. * So do only marginal checking and expect higher level protocols * to handle crap frames. diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_wx.c b/drivers/net/wireless/bcm43xx/bcm43xx_wx.c index d6d9413..6acfdc4 100644 --- a/drivers/net/wireless/bcm43xx/bcm43xx_wx.c +++ b/drivers/net/wireless/bcm43xx/bcm43xx_wx.c @@ -444,7 +444,7 @@ static int bcm43xx_wx_set_xmitpower(struct net_device *net_dev, u16 maxpower; if ((data-txpower.flags IW_TXPOW_TYPE) != IW_TXPOW_DBM) { - printk(PFX KERN_ERR TX power not in dBm.\n); + printk(KERN_ERR PFX TX power not in dBm.\n); return -EOPNOTSUPP; } diff --git a/net/ieee80211/softmac/ieee80211softmac_wx.c b/net/ieee80211/softmac/ieee80211softmac_wx.c index 442b987..5742dc8 100644 --- a/net/ieee80211/softmac/ieee80211softmac_wx.c +++ b/net/ieee80211/softmac/ieee80211softmac_wx.c @@ -114,7 +114,7 @@ check_assoc_again: sm-associnfo.associating = 1; /* queue lower level code to do work (if necessary) */ schedule_delayed_work(sm-associnfo.work, 0); -out: + mutex_unlock(sm-associnfo.mutex); return 0; - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/mv643xx_eth.c |1 - drivers/net/qla3xxx.c |7 +++ drivers/net/usb/dm9601.c |2 +- 3 files changed, 8 insertions(+), 2 deletions(-) Dale Farnsworth (1): mv643xx_eth: Do not modify struct netdev tx_queue_len Peter Korsgaard (1): dm9601: Fix receive MTU Ron Mercer (2): qla3xxx: bugfix: Add memory barrier before accessing rx completion. qla3xxx: bugfix: Fix VLAN rx completion handling. diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 34288fe..3153356 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c @@ -1357,7 +1357,6 @@ static int mv643xx_eth_probe(struct platform_device *pdev) #endif dev-watchdog_timeo = 2 * HZ; - dev-tx_queue_len = mp-tx_ring_size; dev-base_addr = 0; dev-change_mtu = mv643xx_eth_change_mtu; dev-do_ioctl = mv643xx_eth_do_ioctl; diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c index 69da95b..ea15131 100755 --- a/drivers/net/qla3xxx.c +++ b/drivers/net/qla3xxx.c @@ -2248,6 +2248,13 @@ static int ql_tx_rx_clean(struct ql3_adapter *qdev, qdev-rsp_consumer_index) (work_done work_to_do)) { net_rsp = qdev-rsp_current; + rmb(); + /* +* Fix 4032 chipe undocumented feature where bit-8 is set if the +* inbound completion is for a VLAN. +*/ + if (qdev-device_id == QL3032_DEVICE_ID) + net_rsp-opcode = 0x7f; switch (net_rsp-opcode) { case OPCODE_OB_MAC_IOCB_FN0: diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c index 16c7a0e..a2de32f 100644 --- a/drivers/net/usb/dm9601.c +++ b/drivers/net/usb/dm9601.c @@ -405,7 +405,7 @@ static int dm9601_bind(struct usbnet *dev, struct usb_interface *intf) dev-net-ethtool_ops = dm9601_ethtool_ops; dev-net-hard_header_len += DM_TX_OVERHEAD; dev-hard_mtu = dev-net-mtu + dev-net-hard_header_len; - dev-rx_urb_size = dev-net-mtu + DM_RX_OVERHEAD; + dev-rx_urb_size = dev-net-mtu + ETH_HLEN + DM_RX_OVERHEAD; dev-mii.dev = dev-net; dev-mii.mdio_read = dm9601_mdio_read; - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
And an e1000 id patch. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/e1000/e1000_ethtool.c |1 + drivers/net/e1000/e1000_hw.c |1 + drivers/net/e1000/e1000_hw.h |1 + drivers/net/e1000/e1000_main.c|2 + drivers/net/sky2.c| 53 +++-- 5 files changed, 44 insertions(+), 14 deletions(-) Auke Kok (1): e1000: Add device IDs of blade version of the 82571 quad port Stephen Hemminger (3): sky2: sky2 FE+ receive status workaround sky2: FE+ vlan workaround sky2: fix transmit state on resume diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index 4c3785c..9ecc3ad 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c @@ -1726,6 +1726,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol case E1000_DEV_ID_82571EB_QUAD_COPPER: case E1000_DEV_ID_82571EB_QUAD_FIBER: case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: + case E1000_DEV_ID_82571PT_QUAD_COPPER: case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3: /* quad port adapters only support WoL on port A */ if (!adapter-quad_port_a) { diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index ba120f7..8604adb 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c @@ -387,6 +387,7 @@ e1000_set_mac_type(struct e1000_hw *hw) case E1000_DEV_ID_82571EB_SERDES_DUAL: case E1000_DEV_ID_82571EB_SERDES_QUAD: case E1000_DEV_ID_82571EB_QUAD_COPPER: + case E1000_DEV_ID_82571PT_QUAD_COPPER: case E1000_DEV_ID_82571EB_QUAD_FIBER: case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: hw-mac_type = e1000_82571; diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h index fe87146..07f0ea7 100644 --- a/drivers/net/e1000/e1000_hw.h +++ b/drivers/net/e1000/e1000_hw.h @@ -475,6 +475,7 @@ int32_t e1000_check_phy_reset_block(struct e1000_hw *hw); #define E1000_DEV_ID_82571EB_FIBER 0x105F #define E1000_DEV_ID_82571EB_SERDES 0x1060 #define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4 +#define E1000_DEV_ID_82571PT_QUAD_COPPER 0x10D5 #define E1000_DEV_ID_82571EB_QUAD_FIBER 0x10A5 #define E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE 0x10BC #define E1000_DEV_ID_82571EB_SERDES_DUAL 0x10D9 diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 4a22595..e7c8951 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -108,6 +108,7 @@ static struct pci_device_id e1000_pci_tbl[] = { INTEL_E1000_ETHERNET_DEVICE(0x10BC), INTEL_E1000_ETHERNET_DEVICE(0x10C4), INTEL_E1000_ETHERNET_DEVICE(0x10C5), + INTEL_E1000_ETHERNET_DEVICE(0x10D5), INTEL_E1000_ETHERNET_DEVICE(0x10D9), INTEL_E1000_ETHERNET_DEVICE(0x10DA), /* required last entry */ @@ -1101,6 +1102,7 @@ e1000_probe(struct pci_dev *pdev, case E1000_DEV_ID_82571EB_QUAD_COPPER: case E1000_DEV_ID_82571EB_QUAD_FIBER: case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: + case E1000_DEV_ID_82571PT_QUAD_COPPER: /* if quad port adapter, disable WoL on all but port A */ if (global_quad_port_a != 0) adapter-eeprom_wol = 0; diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 0792031..162489b 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -910,6 +910,20 @@ static inline struct sky2_tx_le *get_tx_le(struct sky2_port *sky2) return le; } +static void tx_init(struct sky2_port *sky2) +{ + struct sky2_tx_le *le; + + sky2-tx_prod = sky2-tx_cons = 0; + sky2-tx_tcpsum = 0; + sky2-tx_last_mss = 0; + + le = get_tx_le(sky2); + le-addr = 0; + le-opcode = OP_ADDR64 | HW_OWNER; + sky2-tx_addr64 = 0; +} + static inline struct tx_ring_info *tx_le_re(struct sky2_port *sky2, struct sky2_tx_le *le) { @@ -1320,7 +1334,8 @@ static int sky2_up(struct net_device *dev) GFP_KERNEL); if (!sky2-tx_ring) goto err_out; - sky2-tx_prod = sky2-tx_cons = 0; + + tx_init(sky2); sky2-rx_le = pci_alloc_consistent(hw-pdev, RX_LE_BYTES, sky2-rx_le_map); @@ -2148,6 +2163,18 @@ static struct sk_buff *sky2_receive(struct net_device *dev, sky2-rx_next = (sky2-rx_next + 1) % sky2-rx_pending; prefetch(sky2-rx_ring + sky2-rx_next); + if (length ETH_ZLEN || length sky2-rx_data_size) + goto len_error; + + /* This chip has hardware problems that generates bogus status. +* So do only marginal checking and expect
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/pcmcia/3c589_cs.c |2 +- drivers/net/r8169.c | 14 +- drivers/net/sky2.c| 37 - drivers/net/sky2.h|2 +- 4 files changed, 39 insertions(+), 16 deletions(-) Edward Hsu (1): r8169: correct phy parameters for the 8110SC Francois Romieu (1): r8169: workaround against ignored TxPoll writes (8168) Jeff Garzik (1): Revert drivers/net/pcmcia/3c589_cs: fix port configuration switcheroo Stephen Hemminger (2): sky2: FE+ Phy initialization sky2: be more selective about FIFO watchdog diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c index c06cae3..503f268 100644 --- a/drivers/net/pcmcia/3c589_cs.c +++ b/drivers/net/pcmcia/3c589_cs.c @@ -116,7 +116,7 @@ struct el3_private { spinlock_t lock; }; -static const char *if_names[] = { auto, 10base2, 10baseT, AUI }; +static const char *if_names[] = { auto, 10baseT, 10base2, AUI }; /**/ diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index b85ab4a..c921ec3 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -1228,7 +1228,10 @@ static void rtl8169_hw_phy_config(struct net_device *dev) return; } - /* phy config for RTL8169s mac_version C chip */ + if ((tp-mac_version != RTL_GIGA_MAC_VER_02) + (tp-mac_version != RTL_GIGA_MAC_VER_03)) + return; + mdio_write(ioaddr, 31, 0x0001); //w 31 2 0 1 mdio_write(ioaddr, 21, 0x1000); //w 21 15 0 1000 mdio_write(ioaddr, 24, 0x65c7); //w 24 15 0 65c7 @@ -2567,6 +2570,15 @@ static void rtl8169_tx_interrupt(struct net_device *dev, (TX_BUFFS_AVAIL(tp) = MAX_SKB_FRAGS)) { netif_wake_queue(dev); } + /* +* 8168 hack: TxPoll requests are lost when the Tx packets are +* too close. Let's kick an extra TxPoll request when a burst +* of start_xmit activity is detected (if it is not detected, +* it is slow enough). -- FR +*/ + smp_rmb(); + if (tp-cur_tx != dirty_tx) + RTL_W8(TxPoll, NPQ); } } diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index eaffe55..0792031 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -338,6 +338,16 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port) if (!(hw-flags SKY2_HW_GIGABIT)) { /* enable automatic crossover */ ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO) 1; + + if (hw-chip_id == CHIP_ID_YUKON_FE_P + hw-chip_rev == CHIP_REV_YU_FE2_A0) { + u16 spec; + + /* Enable Class A driver for FE+ A0 */ + spec = gm_phy_read(hw, port, PHY_MARV_FE_SPEC_2); + spec |= PHY_M_FESC_SEL_CL_A; + gm_phy_write(hw, port, PHY_MARV_FE_SPEC_2, spec); + } } else { /* disable energy detect */ ctrl = ~PHY_M_PC_EN_DET_MSK; @@ -816,7 +826,8 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port) sky2_write8(hw, SK_REG(port, TX_GMF_CTRL_T), GMF_RST_CLR); sky2_write16(hw, SK_REG(port, TX_GMF_CTRL_T), GMF_OPER_ON); - if (!(hw-flags SKY2_HW_RAMBUFFER)) { + /* On chips without ram buffer, pause is controled by MAC level */ + if (sky2_read8(hw, B2_E_0) == 0) { sky2_write8(hw, SK_REG(port, RX_GMF_LP_THR), 768/8); sky2_write8(hw, SK_REG(port, RX_GMF_UP_THR), 1024/8); @@ -1271,7 +1282,7 @@ static int sky2_up(struct net_device *dev) struct sky2_port *sky2 = netdev_priv(dev); struct sky2_hw *hw = sky2-hw; unsigned port = sky2-port; - u32 imask; + u32 imask, ramsize; int cap, err = -ENOMEM; struct net_device *otherdev = hw-dev[sky2-port^1]; @@ -1326,13 +1337,12 @@ static int sky2_up(struct net_device *dev) sky2_mac_init(hw, port); - if (hw-flags SKY2_HW_RAMBUFFER) { - /* Register is number of 4K blocks on internal RAM buffer. */ - u32 ramsize = sky2_read8(hw, B2_E_0) * 4; + /* Register is number of 4K blocks on internal RAM buffer. */ + ramsize = sky2_read8(hw, B2_E_0) * 4; + if (ramsize 0) { u32 rxspace; - printk(KERN_DEBUG PFX %s: ram buffer %dK\n, dev-name, ramsize); - +
[git patches] net driver fixes
This includes the sky2 update that you and sch discussed. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/myri10ge/myri10ge.c |3 + drivers/net/phy/phy.c |1 + drivers/net/sky2.c | 368 +++ drivers/net/sky2.h | 41 - 4 files changed, 292 insertions(+), 121 deletions(-) Brice Goglin (1): myri10ge: Add support for PCI device id 9 Domen Puncer (1): phy: export phy_mii_ioctl Stephen Hemminger (6): sky2: fix VLAN receive processing (resend) sky2: ethtool speed report bug sky2: reorganize chip revision features sky2: fe+ chip support sky2: receive FIFO checking sky2: version 1.18 diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 1c42266..556962f 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -3094,9 +3094,12 @@ static void myri10ge_remove(struct pci_dev *pdev) } #define PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E 0x0008 +#define PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E_9 0x0009 static struct pci_device_id myri10ge_pci_tbl[] = { {PCI_DEVICE(PCI_VENDOR_ID_MYRICOM, PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E)}, + {PCI_DEVICE +(PCI_VENDOR_ID_MYRICOM, PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E_9)}, {0}, }; diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 0cc4369..cb230f4 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -409,6 +409,7 @@ int phy_mii_ioctl(struct phy_device *phydev, return 0; } +EXPORT_SYMBOL(phy_mii_ioctl); /** * phy_start_aneg - start auto-negotiation for this PHY device diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 5d812de..eaffe55 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -51,7 +51,7 @@ #include sky2.h #define DRV_NAME sky2 -#define DRV_VERSION1.17 +#define DRV_VERSION1.18 #define PFXDRV_NAME /* @@ -118,12 +118,15 @@ static const struct pci_device_id sky2_id_table[] = { { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4351) }, /* 88E8036 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, /* 88E8038 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) }, /* 88E8039 */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4354) }, /* 88E8040 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4356) }, /* 88EC033 */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x435A) }, /* 88E8048 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4360) }, /* 88E8052 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4365) }, /* 88E8070 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */ @@ -147,6 +150,7 @@ static const char *yukon2_name[] = { Extreme, /* 0xb5 */ EC, /* 0xb6 */ FE, /* 0xb7 */ + FE+, /* 0xb8 */ }; static void sky2_set_multicast(struct net_device *dev); @@ -217,8 +221,7 @@ static void sky2_power_on(struct sky2_hw *hw) else sky2_write8(hw, B2_Y2_CLK_GATE, 0); - if (hw-chip_id == CHIP_ID_YUKON_EC_U || - hw-chip_id == CHIP_ID_YUKON_EX) { + if (hw-flags SKY2_HW_ADV_POWER_CTL) { u32 reg; sky2_pci_write32(hw, PCI_DEV_REG3, 0); @@ -311,10 +314,8 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port) struct sky2_port *sky2 = netdev_priv(hw-dev[port]); u16 ctrl, ct1000, adv, pg, ledctrl, ledover, reg; - if (sky2-autoneg == AUTONEG_ENABLE -!(hw-chip_id == CHIP_ID_YUKON_XL -|| hw-chip_id == CHIP_ID_YUKON_EC_U -|| hw-chip_id == CHIP_ID_YUKON_EX)) { + if (sky2-autoneg == AUTONEG_ENABLE + !(hw-flags SKY2_HW_NEWER_PHY)) { u16 ectrl = gm_phy_read(hw, port, PHY_MARV_EXT_CTRL); ectrl = ~(PHY_M_EC_M_DSC_MSK | PHY_M_EC_S_DSC_MSK | @@ -334,7 +335,7 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port) ctrl = gm_phy_read(hw, port, PHY_MARV_PHY_CTRL); if (sky2_is_copper(hw)) { - if (hw-chip_id == CHIP_ID_YUKON_FE) { + if (!(hw-flags SKY2_HW_GIGABIT)) { /* enable automatic crossover */ ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO) 1; } else { @@ -346,9 +347,7 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned
Re: [git patches] net driver fixes
On Thu, 2007-09-13 at 01:30 -0400, Jeff Garzik wrote: Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/atl1/atl1_main.c | 19 +++ drivers/net/ehea/ehea.h |5 - drivers/net/ehea/ehea_main.c | 16 ++-- drivers/net/phy/phy.c|4 ++-- drivers/net/phy/phy_device.c |4 ++-- drivers/net/sky2.c |9 - drivers/net/spider_net.c | 12 7 files changed, 41 insertions(+), 28 deletions(-) Hans-Jürgen Koch (1): Fix a lock problem in generic phy code Ishizaki Kou (1): spidernet: fix interrupt reason recognition Jan-Bernd Themann (2): ehea: propagate physical port state ehea: fix last_rx update Luca Tettamanti (1): atl1: disable broken 64-bit DMA Stephen Hemminger (1): sky2: restore multicast list on resume and other ops diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index 3c1984e..f23e13c 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c @@ -2203,21 +2203,20 @@ static int __devinit atl1_probe(struct pci_dev *pdev, struct net_device *netdev; struct atl1_adapter *adapter; static int cards_found = 0; - bool pci_using_64 = true; int err; err = pci_enable_device(pdev); if (err) return err; - err = pci_set_dma_mask(pdev, DMA_64BIT_MASK); + /* + * 64-bit DMA currently has data corruption problems, so let's just + * use 32-bit DMA for now. This is a big hack that is probably wrong. + */ + err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); if (err) { - err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); - if (err) { - dev_err(pdev-dev, no usable DMA configuration\n); - goto err_dma; - } - pci_using_64 = false; + dev_err(pdev-dev, no usable DMA configuration\n); + goto err_dma; } /* Mark all PCI regions associated with PCI device * pdev as being reserved by owner atl1_driver_name @@ -2282,7 +2281,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev, netdev-ethtool_ops = atl1_ethtool_ops; adapter-bd_number = cards_found; - adapter-pci_using_64 = pci_using_64; /* setup the private structure */ err = atl1_sw_init(adapter); @@ -2299,9 +2297,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev, */ /* netdev-features |= NETIF_F_TSO; */ - if (pci_using_64) - netdev-features |= NETIF_F_HIGHDMA; - netdev-features |= NETIF_F_LLTX; /* diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index d67f97b..8d58be5 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include asm/io.h #define DRV_NAME ehea -#define DRV_VERSION EHEA_0073 +#define DRV_VERSION EHEA_0074 /* eHEA capability flags */ #define DLPAR_PORT_ADD_REM 1 @@ -402,6 +402,8 @@ struct ehea_mc_list { #define EHEA_PORT_UP 1 #define EHEA_PORT_DOWN 0 +#define EHEA_PHY_LINK_UP 1 +#define EHEA_PHY_LINK_DOWN 0 #define EHEA_MAX_PORT_RES 16 struct ehea_port { struct ehea_adapter *adapter;/* adapter that owns this port */ @@ -427,6 +429,7 @@ struct ehea_port { u32 msg_enable; u32 sig_comp_iv; u32 state; + u8 phy_link; u8 full_duplex; u8 autoneg; u8 num_def_qps; diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index db57474..717b129 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -53,17 +53,21 @@ static int rq3_entries = EHEA_DEF_ENTRIES_RQ3; static int sq_entries = EHEA_DEF_ENTRIES_SQ; static int use_mcs = 0; static int num_tx_qps = EHEA_NUM_TX_QP; +static int prop_carrier_state = 0; module_param(msg_level, int, 0); module_param(rq1_entries, int, 0); module_param(rq2_entries, int, 0); module_param(rq3_entries, int, 0); module_param(sq_entries, int, 0); +module_param(prop_carrier_state, int, 0); module_param(use_mcs, int, 0); module_param(num_tx_qps, int, 0); MODULE_PARM_DESC(num_tx_qps, Number of TX-QPS); MODULE_PARM_DESC(msg_level, msg_level); +MODULE_PARM_DESC(prop_carrier_state, Propagate carrier state of physical + port to stack. 1:yes, 0:no. Default = 0 ); WTF? why would the default be to _not_ propagate carrier state? Are there some mitigating circumstances that require this driver to not notify the stack of carrier on/off? Userspace stuff really should know about the carrier state, and this disables it by default. Dan MODULE_PARM_DESC(rq3_entries, Number of entries for Receive Queue 3 [2^x - 1], x = [6..14]. Default =
Re: [git patches] net driver fixes
Dan Williams wrote: WTF? why would the default be to _not_ propagate carrier state? Are there some mitigating circumstances that require this driver to not notify the stack of carrier on/off? Userspace stuff really should know about the carrier state, and this disables it by default. The commit explains that... Jeff - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Fri, 2007-09-14 at 14:17 -0400, Jeff Garzik wrote: Dan Williams wrote: WTF? why would the default be to _not_ propagate carrier state? Are there some mitigating circumstances that require this driver to not notify the stack of carrier on/off? Userspace stuff really should know about the carrier state, and this disables it by default. The commit explains that... I admit that I probably don't understand the system architecture of where ehea would be used, but would this cause /sys/class/net/ethX/carrier to be TRUE even if the device has no carrier? That seems quite wrong IMHO. When does ehea not have a carrier? And in that case, does sysfs say 1 or 0 for the carrier? Dan - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Dan Williams [EMAIL PROTECTED] wrote: [...] I admit that I probably don't understand the system architecture of where ehea would be used, but would this cause /sys/class/net/ethX/carrier to be TRUE even if the device has no carrier? That seems quite wrong IMHO. When does ehea not have a carrier? And in that case, does sysfs say 1 or 0 for the carrier? I don't work on ehea, but I'm generally familiar with it, and particularly with this patch. The usual environment for ehea devices is on large systems subdivided into multiple logical partitions. One ehea device serves many partitions. By having ehea always report link up to the logical ports (the ports seen by the partitions), the partitions can communicate amongst themselves even if the external ports (the ports that go to the switch or whatever) have no link. The ehea device, more or less, acts as a switch connecting the partitions together. This switch type of functionality is not dependent upon the link state of the external ports (any more than the functionality of any switch is dependent upon whether or not it is connected to a gateway). This, if I'm not mistaken, is the way ehea has always operated until this particular patch was added. This patch (to optionally pass carrier state to the logical ports) was added largely for bonding, so that the bonding driver can detect link failures on the external ports (when so desired). The default behavior remains the original behavior, i.e., do not pass external port link state to the logical ports. Anyway, to answer your question, the carrier state reported for the ehea interface on the partition will always be true. Think of it as reporting the link state from the logical interface to the switch that connects the partitions; that link exists only within the ehea device itself, and really can't fail unless the ehea device itself fails. With the new option enabled, then ehea is more or less mimicing a trunk failover type of function, and passing the carrier state of the external switch port to the internal port. -J --- -Jay Vosburgh, IBM Linux Technology Center, [EMAIL PROTECTED] - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Fri, 2007-09-14 at 12:19 -0700, Jay Vosburgh wrote: Dan Williams [EMAIL PROTECTED] wrote: [...] I admit that I probably don't understand the system architecture of where ehea would be used, but would this cause /sys/class/net/ethX/carrier to be TRUE even if the device has no carrier? That seems quite wrong IMHO. When does ehea not have a carrier? And in that case, does sysfs say 1 or 0 for the carrier? I don't work on ehea, but I'm generally familiar with it, and particularly with this patch. The usual environment for ehea devices is on large systems subdivided into multiple logical partitions. One ehea device serves many partitions. By having ehea always report link up to the logical ports (the ports seen by the partitions), the partitions can communicate amongst themselves even if the external ports (the ports that go to the switch or whatever) have no link. (forgive my ignorance of course) So essentially the ehea device has a 1(+) external ports that may/may not be connected, but all lpars share the physical hardware itself, which is quite happy to let all the lpars talk to each other essentially via loopback even if there is no actual carrier detected on the external port(s)? How does addressing work here, is it just L2 addresses? Feel free to point me to some docs and tell me to shut up :) At least these days module parameters can be changed at runtime through sysfs. Stuff that can only be set at module load doesn't provide userspace the flexibility it needs to configure stuff on the fly. Dan The ehea device, more or less, acts as a switch connecting the partitions together. This switch type of functionality is not dependent upon the link state of the external ports (any more than the functionality of any switch is dependent upon whether or not it is connected to a gateway). This, if I'm not mistaken, is the way ehea has always operated until this particular patch was added. This patch (to optionally pass carrier state to the logical ports) was added largely for bonding, so that the bonding driver can detect link failures on the external ports (when so desired). The default behavior remains the original behavior, i.e., do not pass external port link state to the logical ports. Anyway, to answer your question, the carrier state reported for the ehea interface on the partition will always be true. Think of it as reporting the link state from the logical interface to the switch that connects the partitions; that link exists only within the ehea device itself, and really can't fail unless the ehea device itself fails. With the new option enabled, then ehea is more or less mimicing a trunk failover type of function, and passing the carrier state of the external switch port to the internal port. -J --- -Jay Vosburgh, IBM Linux Technology Center, [EMAIL PROTECTED] - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Dan Williams [EMAIL PROTECTED] wrote: [...] So essentially the ehea device has a 1(+) external ports that may/may not be connected, but all lpars share the physical hardware itself, which is quite happy to let all the lpars talk to each other essentially via loopback even if there is no actual carrier detected on the external port(s)? [...] Yes. [...] How does addressing work here, is it just L2 addresses? Yes. The logical ports all have unique MAC addresses. [...] Feel free to point me to some docs and tell me to shut up :) http://www.redbooks.ibm.com/redpieces/abstracts/redp4340.html I found this via google; I haven't read it in detail, but it seems to cover the HEA architecture at a high level. It talks about the whole IVE (integrated virtual ethernet: the adapter, hypervisor, etc) system, but HEA is part of that, so it's probably got the answers you're looking for. -J --- -Jay Vosburgh, IBM Linux Technology Center, [EMAIL PROTECTED] - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Dan Williams wrote: On Thu, 2007-09-13 at 01:30 -0400, Jeff Garzik wrote: Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/atl1/atl1_main.c | 19 +++ drivers/net/ehea/ehea.h |5 - drivers/net/ehea/ehea_main.c | 16 ++-- drivers/net/phy/phy.c|4 ++-- drivers/net/phy/phy_device.c |4 ++-- drivers/net/sky2.c |9 - drivers/net/spider_net.c | 12 7 files changed, 41 insertions(+), 28 deletions(-) Hans-Jürgen Koch (1): Fix a lock problem in generic phy code Ishizaki Kou (1): spidernet: fix interrupt reason recognition Jan-Bernd Themann (2): ehea: propagate physical port state ehea: fix last_rx update maybe a little bit late with this comment: ehea_error(Failed setting port speed); } } - netif_carrier_on(port-netdev); + if (!prop_carrier_state || (port-phy_link == EHEA_PHY_LINK_UP)) + netif_carrier_on(port-netdev); + kfree(cb4); out: return ret; @@ -869,13 +875,19 @@ static void ehea_parse_eqe(struct ehea_adapter *adapter, u64 eqe) } if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PORT_UP, eqe)) { + port-phy_link = EHEA_PHY_LINK_UP; if (netif_msg_link(port)) ehea_info(%s: Physical port up, port-netdev-name); + if (prop_carrier_state) + netif_carrier_on(port-netdev); } else { + port-phy_link = EHEA_PHY_LINK_DOWN; if (netif_msg_link(port)) ehea_info(%s: Physical port down, port-netdev-name); + if (prop_carrier_state) + netif_carrier_off(port-netdev); maybe it was better to code this as 'ehea_carrier_off/on()' which then tests (prop_carrier_state) - this now begs for regressions where this isn't properly done in future commits, and on top of that there are all these extra conditions now. Cheers, Auke - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/atl1/atl1_main.c | 19 +++ drivers/net/ehea/ehea.h |5 - drivers/net/ehea/ehea_main.c | 16 ++-- drivers/net/phy/phy.c|4 ++-- drivers/net/phy/phy_device.c |4 ++-- drivers/net/sky2.c |9 - drivers/net/spider_net.c | 12 7 files changed, 41 insertions(+), 28 deletions(-) Hans-Jürgen Koch (1): Fix a lock problem in generic phy code Ishizaki Kou (1): spidernet: fix interrupt reason recognition Jan-Bernd Themann (2): ehea: propagate physical port state ehea: fix last_rx update Luca Tettamanti (1): atl1: disable broken 64-bit DMA Stephen Hemminger (1): sky2: restore multicast list on resume and other ops diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index 3c1984e..f23e13c 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c @@ -2203,21 +2203,20 @@ static int __devinit atl1_probe(struct pci_dev *pdev, struct net_device *netdev; struct atl1_adapter *adapter; static int cards_found = 0; - bool pci_using_64 = true; int err; err = pci_enable_device(pdev); if (err) return err; - err = pci_set_dma_mask(pdev, DMA_64BIT_MASK); + /* +* 64-bit DMA currently has data corruption problems, so let's just +* use 32-bit DMA for now. This is a big hack that is probably wrong. +*/ + err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); if (err) { - err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); - if (err) { - dev_err(pdev-dev, no usable DMA configuration\n); - goto err_dma; - } - pci_using_64 = false; + dev_err(pdev-dev, no usable DMA configuration\n); + goto err_dma; } /* Mark all PCI regions associated with PCI device * pdev as being reserved by owner atl1_driver_name @@ -2282,7 +2281,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev, netdev-ethtool_ops = atl1_ethtool_ops; adapter-bd_number = cards_found; - adapter-pci_using_64 = pci_using_64; /* setup the private structure */ err = atl1_sw_init(adapter); @@ -2299,9 +2297,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev, */ /* netdev-features |= NETIF_F_TSO; */ - if (pci_using_64) - netdev-features |= NETIF_F_HIGHDMA; - netdev-features |= NETIF_F_LLTX; /* diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index d67f97b..8d58be5 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include asm/io.h #define DRV_NAME ehea -#define DRV_VERSIONEHEA_0073 +#define DRV_VERSIONEHEA_0074 /* eHEA capability flags */ #define DLPAR_PORT_ADD_REM 1 @@ -402,6 +402,8 @@ struct ehea_mc_list { #define EHEA_PORT_UP 1 #define EHEA_PORT_DOWN 0 +#define EHEA_PHY_LINK_UP 1 +#define EHEA_PHY_LINK_DOWN 0 #define EHEA_MAX_PORT_RES 16 struct ehea_port { struct ehea_adapter *adapter;/* adapter that owns this port */ @@ -427,6 +429,7 @@ struct ehea_port { u32 msg_enable; u32 sig_comp_iv; u32 state; + u8 phy_link; u8 full_duplex; u8 autoneg; u8 num_def_qps; diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index db57474..717b129 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -53,17 +53,21 @@ static int rq3_entries = EHEA_DEF_ENTRIES_RQ3; static int sq_entries = EHEA_DEF_ENTRIES_SQ; static int use_mcs = 0; static int num_tx_qps = EHEA_NUM_TX_QP; +static int prop_carrier_state = 0; module_param(msg_level, int, 0); module_param(rq1_entries, int, 0); module_param(rq2_entries, int, 0); module_param(rq3_entries, int, 0); module_param(sq_entries, int, 0); +module_param(prop_carrier_state, int, 0); module_param(use_mcs, int, 0); module_param(num_tx_qps, int, 0); MODULE_PARM_DESC(num_tx_qps, Number of TX-QPS); MODULE_PARM_DESC(msg_level, msg_level); +MODULE_PARM_DESC(prop_carrier_state, Propagate carrier state of physical +port to stack. 1:yes, 0:no. Default = 0 ); MODULE_PARM_DESC(rq3_entries, Number of entries for Receive Queue 3 [2^x - 1], x = [6..14]. Default = __MODULE_STRING(EHEA_DEF_ENTRIES_RQ3) )); @@ -467,7 +471,7 @@ static struct ehea_cqe *ehea_proc_rwqes(struct net_device *dev, else netif_receive_skb(skb); - dev-last_rx = jiffies; + port-netdev-last_rx = jiffies; } else {
Re: [git patches] net driver fixes
Satyam Sharma wrote: On Mon, 30 Jul 2007, Jeff Garzik wrote: true, we should just remove the dev==NULL check Patch below: [PATCH] nmclan_cs: Remove bogus (dev==NULL) check in mace_interrupt() The (dev == NULL) check in drivers/net/pcmcia/nmclan_cs.c:mace_interrupt() handler is always false, so let's remove it. Signed-off-by: Satyam Sharma [EMAIL PROTECTED] --- drivers/net/pcmcia/nmclan_cs.c |6 -- 1 files changed, 0 insertions(+), 6 deletions(-) ACK, but patch does not apply to netdev-2.6.git#upstream alas - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/infiniband/hw/cxgb3/cxio_hal.c |2 +- drivers/net/cxgb3/adapter.h|2 + drivers/net/cxgb3/common.h |3 +- drivers/net/cxgb3/cxgb3_main.c | 252 +++- drivers/net/cxgb3/cxgb3_offload.c | 16 ++- drivers/net/cxgb3/cxgb3_offload.h |2 + drivers/net/cxgb3/sge.c| 23 ++- drivers/net/cxgb3/t3_hw.c | 46 +- drivers/net/cxgb3/t3cdev.h |3 - drivers/net/ioc3-eth.c | 80 --- drivers/net/netxen/netxen_nic_hdr.h|6 +- drivers/net/netxen/netxen_nic_hw.c |8 +- drivers/net/netxen/netxen_nic_main.c | 19 +-- drivers/net/ps3_gelic_net.c|1 - drivers/s390/net/qeth.h|4 +- drivers/s390/net/qeth_main.c | 158 +++- drivers/s390/net/qeth_mpc.h|1 + drivers/s390/net/qeth_sys.c|8 +- 18 files changed, 428 insertions(+), 206 deletions(-) Divy Le Ray (2): cxgb3 - Fix dev-priv usage - cxgb3 engine microcode load Frank Blaschka (2): qeth: enforce a rate limit for inbound scatter gather messages qeth: Announce tx checksumming for qeth devices in TSO/EDDP mode Heiko Carstens (1): qeth: dont return the return values of void functions. Klaus D. Wacker (1): qeth: Drop ARP packages on HiperSockets interface with NOARP attribute. Masakazu Mokuno (1): PS3: fix the bug that 'ifconfig down' would hang Ralf Baechle (1): IOC3: Program UART predividers. Ursula Braun (3): qeth: ungrouping a device must not be interruptible qeth: crash during reboot after failing online setting qeth: provide specific message for OSA-adapters exclusively used [EMAIL PROTECTED] (2): netxen: Avoid firmware load in PCI probe netxen: fix crashes during module unload diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.c b/drivers/infiniband/hw/cxgb3/cxio_hal.c index 1518b41..beb2a38 100644 --- a/drivers/infiniband/hw/cxgb3/cxio_hal.c +++ b/drivers/infiniband/hw/cxgb3/cxio_hal.c @@ -916,7 +916,7 @@ int cxio_rdev_open(struct cxio_rdev *rdev_p) PDBG(%s opening rnic dev %s\n, __FUNCTION__, rdev_p-dev_name); memset(rdev_p-ctrl_qp, 0, sizeof(rdev_p-ctrl_qp)); if (!rdev_p-t3cdev_p) - rdev_p-t3cdev_p = T3CDEV(netdev_p); + rdev_p-t3cdev_p = dev2t3cdev(netdev_p); rdev_p-t3cdev_p-ulp = (void *) rdev_p; err = rdev_p-t3cdev_p-ctl(rdev_p-t3cdev_p, RDMA_GET_PARAMS, (rdev_p-rnic_info)); diff --git a/drivers/net/cxgb3/adapter.h b/drivers/net/cxgb3/adapter.h index ab72563..20e887d 100644 --- a/drivers/net/cxgb3/adapter.h +++ b/drivers/net/cxgb3/adapter.h @@ -50,7 +50,9 @@ typedef irqreturn_t(*intr_handler_t) (int, void *); struct vlan_group; +struct adapter; struct port_info { + struct adapter *adapter; struct vlan_group *vlan_grp; const struct port_type_info *port_type; u8 port_id; diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h index 1637800..2129210 100644 --- a/drivers/net/cxgb3/common.h +++ b/drivers/net/cxgb3/common.h @@ -679,7 +679,8 @@ const struct adapter_info *t3_get_adapter_info(unsigned int board_id); int t3_seeprom_read(struct adapter *adapter, u32 addr, u32 *data); int t3_seeprom_write(struct adapter *adapter, u32 addr, u32 data); int t3_seeprom_wp(struct adapter *adapter, int enable); -int t3_check_tpsram_version(struct adapter *adapter); +int t3_get_tp_version(struct adapter *adapter, u32 *vers); +int t3_check_tpsram_version(struct adapter *adapter, int *must_load); int t3_check_tpsram(struct adapter *adapter, u8 *tp_ram, unsigned int size); int t3_set_proto_sram(struct adapter *adap, u8 *data); int t3_read_flash(struct adapter *adapter, unsigned int addr, diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index dc5d269..5ab319c 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c @@ -358,11 +358,14 @@ static int init_dummy_netdevs(struct adapter *adap) for (j = 0; j pi-nqsets - 1; j++) { if (!adap-dummy_netdev[dummy_idx]) { - nd = alloc_netdev(0, , ether_setup); + struct port_info *p; + + nd = alloc_netdev(sizeof(*p), , ether_setup); if (!nd) goto free_all; - nd-priv = adap; + p = netdev_priv(nd); + p-adapter = adap; nd-weight = 64; set_bit(__LINK_STATE_START,
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/dm9000.c| 25 --- drivers/net/ehea/ehea_main.c|8 ++-- drivers/net/ehea/ehea_qmr.c |6 drivers/net/forcedeth.c |2 +- drivers/net/meth.c |2 +- drivers/net/myri10ge/myri10ge.c | 34 drivers/net/phy/phy_device.c|2 +- drivers/net/sgiseeq.c |4 ++- drivers/net/sky2.c | 64 +++--- drivers/net/sky2.h |3 +- 10 files changed, 64 insertions(+), 86 deletions(-) Brice Goglin (2): myri10ge: use pcie_get/set_readrq myri10ge: update driver version to 1.3.2-1.269 Domen Puncer (1): phy layer: fix genphy_setup_forced (don't reset) Florian Westphal (1): DM9000: fix interface hang under load Jan-Bernd Themann (3): ehea: fix interface to DLPAR tools ehea: fix module parameter description ehea: fix queue destructor Ralf Baechle (2): Don't use GFP_DMA for zone allocation. sgiseeq: Fix return type of sgiseeq_remove Stephen Hemminger (3): sky2: clear PCI power control reg at startup sky2: only bring up watchdog if link is active sky2 1.17 Willy Tarreau (1): fix realtek phy id in forcedeth diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index c3de81b..738aa59 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c @@ -700,6 +700,7 @@ dm9000_init_dm9000(struct net_device *dev) static int dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) { + unsigned long flags; board_info_t *db = (board_info_t *) dev-priv; PRINTK3(dm9000_start_xmit\n); @@ -707,10 +708,7 @@ dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) if (db-tx_pkt_cnt 1) return 1; - netif_stop_queue(dev); - - /* Disable all interrupts */ - iow(db, DM9000_IMR, IMR_PAR); + spin_lock_irqsave(db-lock, flags); /* Move data to DM9000 TX RAM */ writeb(DM9000_MWCMD, db-io_addr); @@ -718,12 +716,9 @@ dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) (db-outblk)(db-io_data, skb-data, skb-len); db-stats.tx_bytes += skb-len; + db-tx_pkt_cnt++; /* TX control: First packet immediately send, second packet queue */ - if (db-tx_pkt_cnt == 0) { - - /* First Packet */ - db-tx_pkt_cnt++; - + if (db-tx_pkt_cnt == 1) { /* Set TX length to DM9000 */ iow(db, DM9000_TXPLL, skb-len 0xff); iow(db, DM9000_TXPLH, (skb-len 8) 0xff); @@ -732,23 +727,17 @@ dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) iow(db, DM9000_TCR, TCR_TXREQ); /* Cleared after TX complete */ dev-trans_start = jiffies; /* save the time stamp */ - } else { /* Second packet */ - db-tx_pkt_cnt++; db-queue_pkt_len = skb-len; + netif_stop_queue(dev); } + spin_unlock_irqrestore(db-lock, flags); + /* free this SKB */ dev_kfree_skb(skb); - /* Re-enable resource check */ - if (db-tx_pkt_cnt == 1) - netif_wake_queue(dev); - - /* Re-enable interrupt */ - iow(db, DM9000_IMR, IMR_PAR | IMR_PTM | IMR_PRM); - return 0; } diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index 9756211..db57474 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -76,7 +76,7 @@ MODULE_PARM_DESC(rq1_entries, Number of entries for Receive Queue 1 MODULE_PARM_DESC(sq_entries, Number of entries for the Send Queue [2^x - 1], x = [6..14]. Default = __MODULE_STRING(EHEA_DEF_ENTRIES_SQ) )); -MODULE_PARM_DESC(use_mcs, 0:NAPI, 1:Multiple receive queues, Default = 1 ); +MODULE_PARM_DESC(use_mcs, 0:NAPI, 1:Multiple receive queues, Default = 0 ); static int port_name_cnt = 0; static LIST_HEAD(adapter_list); @@ -2490,7 +2490,7 @@ static ssize_t ehea_show_port_id(struct device *dev, struct device_attribute *attr, char *buf) { struct ehea_port *port = container_of(dev, struct ehea_port, ofdev.dev); - return sprintf(buf, 0x%X, port-logical_port_id); + return sprintf(buf, %d, port-logical_port_id); } static DEVICE_ATTR(log_port_id, S_IRUSR | S_IRGRP | S_IROTH, ehea_show_port_id, @@ -2781,7 +2781,7 @@ static ssize_t ehea_probe_port(struct device *dev, u32 logical_port_id; - sscanf(buf, %X, logical_port_id); + sscanf(buf, %d, logical_port_id); port = ehea_get_port(adapter, logical_port_id); @@ -2834,7 +2834,7 @@ static ssize_t ehea_remove_port(struct device *dev, int i;
[git patches] net driver fixes
Minor stuff except for the xen-netfront fix. e1000 change is an adds-pci-ids-only change. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: MAINTAINERS |6 ++ drivers/net/3c59x.c |1 + drivers/net/ax88796.c |5 +++-- drivers/net/e1000/e1000_ethtool.c |2 ++ drivers/net/e1000/e1000_hw.c |5 + drivers/net/e1000/e1000_hw.h |3 +++ drivers/net/e1000/e1000_main.c|4 drivers/net/myri10ge/myri10ge.c | 25 ++--- drivers/net/natsemi.c |3 +++ drivers/net/via-rhine.c |6 ++ drivers/net/xen-netfront.c|7 --- 11 files changed, 55 insertions(+), 12 deletions(-) Andrew Morton (2): ax88796 printk fixes natsemi: fix netdev error acounting Auke Kok (1): e1000: Add device IDs of new 82571 board variants Brice Goglin (1): myri10ge: Use the pause counter to avoid a needless device reset Dustin Marquess (1): via-rhine: disable rx_copybreak on archs that don't allow unaligned DMA access Jeremy Fitzhardinge (1): xen-netfront: Avoid deref'ing skbafter it is potentially freed. Steffen Klassert (2): 3c59x: fix duplex configuration 3c59x maintainer diff --git a/MAINTAINERS b/MAINTAINERS index d3a0684..e4dde7f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -97,6 +97,12 @@ M: [EMAIL PROTECTED] L: netdev@vger.kernel.org S: Maintained +3C59X NETWORK DRIVER +P: Steffen Klassert +M: [EMAIL PROTECTED] +L: netdev@vger.kernel.org +S: Maintained + 3CR990 NETWORK DRIVER P: David Dillow M: [EMAIL PROTECTED] diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 001c66d..a8c0f43 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -1555,6 +1555,7 @@ vortex_up(struct net_device *dev) mii_reg1 = mdio_read(dev, vp-phys[0], MII_BMSR); mii_reg5 = mdio_read(dev, vp-phys[0], MII_LPA); vp-partner_flow_ctrl = ((mii_reg5 0x0400) != 0); + vp-mii.full_duplex = vp-full_duplex; vortex_check_media(dev, 1); } diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c index 83da177..90e0734 100644 --- a/drivers/net/ax88796.c +++ b/drivers/net/ax88796.c @@ -821,8 +821,9 @@ static int ax_probe(struct platform_device *pdev) dev-base_addr = (unsigned long)ei_status.mem; if (ei_status.mem == NULL) { - dev_err(pdev-dev, Cannot ioremap area (%08zx,%08zx)\n, - res-start, res-end); + dev_err(pdev-dev, Cannot ioremap area (%08llx,%08llx)\n, + (unsigned long long)res-start, + (unsigned long long)res-end); ret = -ENXIO; goto exit_req; diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index c90c92e..4c3785c 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c @@ -1706,6 +1706,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol case E1000_DEV_ID_82545EM_COPPER: case E1000_DEV_ID_82546GB_QUAD_COPPER: case E1000_DEV_ID_82546GB_PCIE: + case E1000_DEV_ID_82571EB_SERDES_QUAD: /* these don't support WoL at all */ wol-supported = 0; break; @@ -1723,6 +1724,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol retval = 0; break; case E1000_DEV_ID_82571EB_QUAD_COPPER: + case E1000_DEV_ID_82571EB_QUAD_FIBER: case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3: /* quad port adapters only support WoL on port A */ diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index 9be4469..ba120f7 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c @@ -384,7 +384,10 @@ e1000_set_mac_type(struct e1000_hw *hw) case E1000_DEV_ID_82571EB_COPPER: case E1000_DEV_ID_82571EB_FIBER: case E1000_DEV_ID_82571EB_SERDES: + case E1000_DEV_ID_82571EB_SERDES_DUAL: + case E1000_DEV_ID_82571EB_SERDES_QUAD: case E1000_DEV_ID_82571EB_QUAD_COPPER: + case E1000_DEV_ID_82571EB_QUAD_FIBER: case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE: hw-mac_type = e1000_82571; break; @@ -485,6 +488,8 @@ e1000_set_media_type(struct e1000_hw *hw) case E1000_DEV_ID_82545GM_SERDES: case E1000_DEV_ID_82546GB_SERDES: case E1000_DEV_ID_82571EB_SERDES: +case E1000_DEV_ID_82571EB_SERDES_DUAL: +case E1000_DEV_ID_82571EB_SERDES_QUAD: case E1000_DEV_ID_82572EI_SERDES: case E1000_DEV_ID_80003ES2LAN_SERDES_DPT:
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/atl1/atl1_main.c|4 +-- drivers/net/ehea/ehea.h |2 +- drivers/net/ehea/ehea_main.c| 44 ++ drivers/net/ibmveth.c | 27 +--- drivers/net/ibmveth.h |3 -- drivers/net/phy/phy.c |4 +- drivers/net/r8169.c | 24 ++- drivers/net/sis190.c|3 ++ drivers/net/smc91x.h|4 +-- drivers/net/ucc_geth_ethtool.c |1 - drivers/net/ucc_geth_mii.c |3 +- drivers/net/wireless/bcm43xx/bcm43xx_phy.c |2 +- drivers/net/wireless/rtl8187_dev.c |2 +- drivers/net/wireless/zd1211rw/zd_mac.c |2 +- fs/compat_ioctl.c |3 -- net/ieee80211/softmac/ieee80211softmac_wx.c | 11 +-- 16 files changed, 69 insertions(+), 70 deletions(-) Brian King (1): ibmveth: Fix rx pool deactivate oops Domen Puncer (2): ucc_geth: fix section mismatch phy layer: fix phy_mii_ioctl for autonegotiation Francois Romieu (1): r8169: avoid needless NAPI poll scheduling Ingo Molnar (1): atl1: use spin_trylock_irqsave() Jan Altenberg (1): ucc_geth: remove get_perm_addr from ucc_geth_ethtool.c John W. Linville (1): Revert [PATCH] bcm43xx: Fix deviation from specifications in set_baseband_attenuation Mariusz Kozlowski (1): drivers/net/ibmveth.c: memset fix Masakazu Mokuno (1): remove duplicated ioctl entries in compat_ioctl.c Michael Buesch (1): softmac: Fix deadlock of wx_set_essid with assoc work Michael Wu (1): rtl8187: ensure priv-hwaddr is always valid Neil Muller (1): sis190 check for ISA bridge on SiS966 Paul Mundt (1): net: smc91x: Build fixes for general sh boards. Roger So (1): r8169: PHY power-on fix Thomas Klein (3): ehea: Fix workqueue handling ehea: Simplify resource usage check ehea: Eliminated some compiler warnings Ulrich Kunitz (1): zd1211rw: fix filter for PSPOLL frames diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index 56f6389..3c1984e 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c @@ -1704,10 +1704,8 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev) } } - local_irq_save(flags); - if (!spin_trylock(adapter-lock)) { + if (!spin_trylock_irqsave(adapter-lock, flags)) { /* Can't get lock - tell upper layer to requeue */ - local_irq_restore(flags); dev_printk(KERN_DEBUG, adapter-pdev-dev, tx locked\n); return NETDEV_TX_LOCKED; } diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index 8ee2c2c..d67f97b 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include asm/io.h #define DRV_NAME ehea -#define DRV_VERSIONEHEA_0072 +#define DRV_VERSIONEHEA_0073 /* eHEA capability flags */ #define DLPAR_PORT_ADD_REM 1 diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index 58702f5..9756211 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -1326,7 +1326,6 @@ static void write_swqe2_TSO(struct sk_buff *skb, u8 *imm_data = swqe-u.immdata_desc.immediate_data[0]; int skb_data_size = skb-len - skb-data_len; int headersize; - u64 tmp_addr; /* Packet is TCP with TSO enabled */ swqe-tx_control |= EHEA_SWQE_TSO; @@ -1347,9 +1346,8 @@ static void write_swqe2_TSO(struct sk_buff *skb, /* set sg1entry data */ sg1entry-l_key = lkey; sg1entry-len = skb_data_size - headersize; - - tmp_addr = (u64)(skb-data + headersize); - sg1entry-vaddr = ehea_map_vaddr(tmp_addr); + sg1entry-vaddr = + ehea_map_vaddr(skb-data + headersize); swqe-descriptors++; } } else @@ -1362,7 +1360,6 @@ static void write_swqe2_nonTSO(struct sk_buff *skb, int skb_data_size = skb-len - skb-data_len; u8 *imm_data = swqe-u.immdata_desc.immediate_data[0]; struct ehea_vsgentry *sg1entry = swqe-u.immdata_desc.sg_entry; - u64 tmp_addr; /* Packet is any nonTSO type * @@ -1379,8 +1376,8 @@ static void write_swqe2_nonTSO(struct sk_buff *skb, /* copy sg1entry data */ sg1entry-l_key = lkey; sg1entry-len = skb_data_size - SWQE2_MAX_IMM; - tmp_addr =
Re: [git patches] net driver fixes
On Mon, 30 Jul 2007, Jeff Garzik wrote: true, we should just remove the dev==NULL check Patch below: [PATCH] nmclan_cs: Remove bogus (dev==NULL) check in mace_interrupt() The (dev == NULL) check in drivers/net/pcmcia/nmclan_cs.c:mace_interrupt() handler is always false, so let's remove it. Signed-off-by: Satyam Sharma [EMAIL PROTECTED] --- drivers/net/pcmcia/nmclan_cs.c |6 -- 1 files changed, 0 insertions(+), 6 deletions(-) diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c index 73da611..3446be9 100644 --- a/drivers/net/pcmcia/nmclan_cs.c +++ b/drivers/net/pcmcia/nmclan_cs.c @@ -1000,12 +1000,6 @@ static irqreturn_t mace_interrupt(int irq, void *dev_id) int status; int IntrCnt = MACE_MAX_IR_ITERATIONS; - if (dev == NULL) { -DEBUG(2, mace_interrupt(): irq 0x%X for unknown device.\n, - irq); -return IRQ_NONE; - } - if (lp-tx_irq_disabled) { printk( (lp-tx_irq_disabled? - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Mon, Jul 02, 2007 at 10:54:01AM -0400, Jeff Garzik wrote: ... maximilian attems (1): starfire list alpha as 64 bit arch ... --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c @@ -152,7 +152,7 @@ static int full_duplex[MAX_UNITS] = {0, }; * This SUCKS. * We need a much better method to determine if dma_addr_t is 64-bit. */ -#if (defined(__i386__) defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) defined(CONFIG_HIGHMEM) defined(CONFIG_64BIT_PHYS_ADDR)) +#if (defined(__i386__) defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__alpha__) || defined(__mips64__) || (defined(__mips__) defined(CONFIG_HIGHMEM) defined(CONFIG_64BIT_PHYS_ADDR)) /* 64-bit dma_addr_t */ #define ADDR_64BITS /* This chip uses 64 bit addresses. */ #define netdrv_addr_t u64 ... The patch is correct and definitely the best solution at this time of the 2.6.22 development cycle. But the comment in the context exactly matches what I thought when I saw this code... Does anyone have a suggestion how to do this better? cu Adrian -- Is there not promise of rain? Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. Only a promise, Lao Er said. Pearl S. Buck - Dragon Seed - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On Tue, 3 Jul 2007 00:13:29 +0200 Adrian Bunk [EMAIL PROTECTED] wrote: On Mon, Jul 02, 2007 at 10:54:01AM -0400, Jeff Garzik wrote: ... maximilian attems (1): starfire list alpha as 64 bit arch ... --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c @@ -152,7 +152,7 @@ static int full_duplex[MAX_UNITS] = {0, }; * This SUCKS. * We need a much better method to determine if dma_addr_t is 64-bit. */ -#if (defined(__i386__) defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) defined(CONFIG_HIGHMEM) defined(CONFIG_64BIT_PHYS_ADDR)) +#if (defined(__i386__) defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__alpha__) || defined(__mips64__) || (defined(__mips__) defined(CONFIG_HIGHMEM) defined(CONFIG_64BIT_PHYS_ADDR)) /* 64-bit dma_addr_t */ #define ADDR_64BITS/* This chip uses 64 bit addresses. */ #define netdrv_addr_t u64 ... The patch is correct and definitely the best solution at this time of the 2.6.22 development cycle. But the comment in the context exactly matches what I thought when I saw this code... Does anyone have a suggestion how to do this better? cu Adrian Yeah, write code that handles it in compiler. Like: if (sizeof(dma_addr_t) sizeof(u32)) { do something... } That means that it gets checked even if optimizer removes it as unneeded. -- Stephen Hemminger [EMAIL PROTECTED] - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
This is a resend of the submission from June 9th, along with added stuff: * big update to new (in 2.6.22) wireless driver libertas * revert e100 's-bit' change; see commit message for more info * more myri, NetXen fixes Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/e100.c | 72 ++- drivers/net/ehea/ehea.h|2 +- drivers/net/ehea/ehea_main.c | 12 +- drivers/net/ibmveth.c | 80 +- drivers/net/myri10ge/myri10ge.c| 29 +- drivers/net/netxen/netxen_nic.h| 48 +- drivers/net/netxen/netxen_nic_ethtool.c|8 +- drivers/net/netxen/netxen_nic_hw.c | 12 +- drivers/net/netxen/netxen_nic_init.c | 44 +- drivers/net/netxen/netxen_nic_isr.c| 24 + drivers/net/netxen/netxen_nic_main.c |7 + drivers/net/netxen/netxen_nic_niu.c|8 +- drivers/net/phy/marvell.c | 62 +- drivers/net/usb/Kconfig|4 +- drivers/net/via-velocity.c |2 +- drivers/net/wireless/Kconfig | 19 +- drivers/net/wireless/libertas/11d.c| 152 ++-- drivers/net/wireless/libertas/11d.h|6 +- drivers/net/wireless/libertas/Makefile |4 +- drivers/net/wireless/libertas/README | 52 +- drivers/net/wireless/libertas/assoc.c | 358 +--- drivers/net/wireless/libertas/assoc.h | 10 +- drivers/net/wireless/libertas/cmd.c| 559 +-- drivers/net/wireless/libertas/cmdresp.c| 376 drivers/net/wireless/libertas/debugfs.c| 432 drivers/net/wireless/libertas/decl.h | 20 +- drivers/net/wireless/libertas/defs.h | 101 ++- drivers/net/wireless/libertas/dev.h| 99 +- drivers/net/wireless/libertas/ethtool.c| 55 +- drivers/net/wireless/libertas/fw.c | 111 +-- drivers/net/wireless/libertas/fw.h | 13 - drivers/net/wireless/libertas/host.h | 17 +- drivers/net/wireless/libertas/hostcmd.h| 392 drivers/net/wireless/libertas/if_bootcmd.c |6 +- drivers/net/wireless/libertas/if_usb.c | 448 + drivers/net/wireless/libertas/if_usb.h | 32 +- drivers/net/wireless/libertas/ioctl.c | 286 -- drivers/net/wireless/libertas/join.c | 464 - drivers/net/wireless/libertas/join.h | 13 +- drivers/net/wireless/libertas/main.c | 690 ++--- drivers/net/wireless/libertas/rx.c | 64 +- drivers/net/wireless/libertas/sbi.h| 40 - drivers/net/wireless/libertas/scan.c | 1529 +--- drivers/net/wireless/libertas/scan.h | 81 +- drivers/net/wireless/libertas/thread.h |8 +- drivers/net/wireless/libertas/tx.c | 74 +- drivers/net/wireless/libertas/types.h | 63 +- drivers/net/wireless/libertas/wext.c | 778 --- drivers/net/wireless/libertas/wext.h | 13 +- 49 files changed, 4001 insertions(+), 3778 deletions(-) delete mode 100644 drivers/net/wireless/libertas/fw.h delete mode 100644 drivers/net/wireless/libertas/sbi.h Brian King (2): ibmveth: Fix h_free_logical_lan error on pool resize ibmveth: Automatically enable larger rx buffer pools for larger mtu Brice Goglin (3): myri10ge: limit the number of recoveries myri10ge: report when the link partner is running in Myrinet mode myri10ge: update driver version Chris Ball (1): libertas: wakeup both mesh and normal wakeup when getting out of scan Dan Williams (26): libertas: call SET_NETDEV_DEV from common code libertas: replace 'macaddress' with 'bssid' libertas: correctly unregister mesh netdev on error libertas: don't tear down netdev in libertas_activate_card libertas: make scan result handling more flexible libertas: fix 'keep previous scan' behavior libertas: move channel changing into association framework libertas: make association paths consistent libertas: use MAC_FMT and MAC_ARG where appropriate libertas: use compare_ether_addr() rather than memcmp() where appropriate libertas: fix debug enter/leave prints for libertas_execute_next_command libertas: correctly balance locking in libertas_process_rx_command libertas: correct error report paths for wlan_fwt_list_ioctl libertas: fix deadlock SIOCGIWSCAN handler libertas: fix default adhoc channel libertas: honor specific channel requests during association libertas: send SIOCGIWSCAN event after partial scans too libertas: debug print spacing fixes in assoc.c libertas: add more verbose debugging to libertas_cmd_80211_authenticate libertas: Make WPA work through supplicant handshake libertas: sparse fixes
[git patches] net driver fixes
A big batch of fixes for the newly added libertas wireless driver is coming soon, too. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/ehea/ehea.h |2 +- drivers/net/ehea/ehea_main.c| 12 ++--- drivers/net/ibmveth.c | 80 +-- drivers/net/netxen/netxen_nic.h | 47 +- drivers/net/netxen/netxen_nic_ethtool.c |8 ++-- drivers/net/netxen/netxen_nic_hw.c | 12 ++-- drivers/net/netxen/netxen_nic_init.c| 23 + drivers/net/netxen/netxen_nic_main.c|7 +++ drivers/net/netxen/netxen_nic_niu.c |8 +-- drivers/net/phy/marvell.c | 62 +--- drivers/net/usb/Kconfig |4 +- drivers/net/via-velocity.c |2 +- 12 files changed, 172 insertions(+), 95 deletions(-) Brian King (2): ibmveth: Fix h_free_logical_lan error on pool resize ibmveth: Automatically enable larger rx buffer pools for larger mtu Dave Jones (1): typo in via-velocity.c Kim Phillips (1): phylib: add RGMII-ID mode to the Marvell m88e PHY to fix broken ucc_geth Mithlesh Thukral (2): NetXen: Fix ping issue after reboot on Blades with 3.4.19 firmware NetXen: Fix compile failure seen on PPC architecture Sam Ravnborg (1): net: fix typo in drivers/net/usb/Kconfig Thomas Klein (1): ehea: Fixed possible kernel panic on VLAN packet recv diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index e85a933..c0f81b5 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include asm/io.h #define DRV_NAME ehea -#define DRV_VERSIONEHEA_0061 +#define DRV_VERSIONEHEA_0064 #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \ | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index 152bb20..9e13433 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -451,7 +451,8 @@ static struct ehea_cqe *ehea_proc_rwqes(struct net_device *dev, processed_rq3++; } - if (cqe-status EHEA_CQE_VLAN_TAG_XTRACT) + if ((cqe-status EHEA_CQE_VLAN_TAG_XTRACT) +port-vgrp) vlan_hwaccel_receive_skb(skb, port-vgrp, cqe-vlan_tag); else @@ -1910,10 +1911,7 @@ static void ehea_vlan_rx_register(struct net_device *dev, goto out; } - if (grp) - memset(cb1-vlan_filter, 0, sizeof(cb1-vlan_filter)); - else - memset(cb1-vlan_filter, 0xFF, sizeof(cb1-vlan_filter)); + memset(cb1-vlan_filter, 0, sizeof(cb1-vlan_filter)); hret = ehea_h_modify_ehea_port(adapter-handle, port-logical_port_id, H_PORT_CB1, H_PORT_CB1_ALL, cb1); @@ -1947,7 +1945,7 @@ static void ehea_vlan_rx_add_vid(struct net_device *dev, unsigned short vid) } index = (vid / 64); - cb1-vlan_filter[index] |= ((u64)(1 (vid 0x3F))); + cb1-vlan_filter[index] |= ((u64)(0x8000 (vid 0x3F))); hret = ehea_h_modify_ehea_port(adapter-handle, port-logical_port_id, H_PORT_CB1, H_PORT_CB1_ALL, cb1); @@ -1982,7 +1980,7 @@ static void ehea_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) } index = (vid / 64); - cb1-vlan_filter[index] = ~((u64)(1 (vid 0x3F))); + cb1-vlan_filter[index] = ~((u64)(0x8000 (vid 0x3F))); hret = ehea_h_modify_ehea_port(adapter-handle, port-logical_port_id, H_PORT_CB1, H_PORT_CB1_ALL, cb1); diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index 3bec0f7..6ec3d50 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c @@ -915,17 +915,36 @@ static int ibmveth_change_mtu(struct net_device *dev, int new_mtu) { struct ibmveth_adapter *adapter = dev-priv; int new_mtu_oh = new_mtu + IBMVETH_BUFF_OH; - int i; + int reinit = 0; + int i, rc; if (new_mtu IBMVETH_MAX_MTU) return -EINVAL; + for (i = 0; i IbmVethNumBufferPools; i++) + if (new_mtu_oh adapter-rx_buff_pool[i].buff_size) + break; + + if (i == IbmVethNumBufferPools) + return -EINVAL; + /* Look for an active buffer pool that can hold the new MTU */ for(i = 0; iIbmVethNumBufferPools; i++) { - if (!adapter-rx_buff_pool[i].active) - continue; + if
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: MAINTAINERS |9 ++- drivers/net/8139cp.c | 17 +++--- drivers/net/acenic.c | 21 ++--- drivers/net/acenic.h |1 - drivers/net/amd8111e.c | 11 + drivers/net/atl1/atl1_main.c | 33 +--- drivers/net/bnx2.c | 14 drivers/net/chelsio/cxgb2.c | 10 drivers/net/cxgb3/cxgb3_main.c |6 - drivers/net/e1000/e1000_main.c | 11 ++--- drivers/net/forcedeth.c |8 +-- drivers/net/gianfar.c| 16 - drivers/net/myri10ge/myri10ge.c |1 + drivers/net/netxen/netxen_nic_main.c |2 - drivers/net/ns83820.c| 12 -- drivers/net/qla3xxx.c|2 +- drivers/net/r8169.c | 11 - drivers/net/s2io.c | 12 -- drivers/net/sky2.c | 31 +++--- drivers/net/smc91x.h |5 +--- drivers/net/spider_net.c | 40 -- drivers/net/tg3.c| 16 - drivers/net/typhoon.c| 11 + net/8021q/vlan.c | 10 ++-- 24 files changed, 45 insertions(+), 265 deletions(-) Auke Kok (1): e1000: disable polling before registering netdevice Brice Goglin (1): myri10ge: report link up/down in standard ethtool way Li Yang (1): NET: add MAINTAINERS entry for ucc_geth driver Mithlesh Thukral (1): NetXen: Removal of extra free_irq call Paul Mundt (1): smc91x: sh solution engine fixes. Stephen Hemminger (6): qla3xxx: device doesnt do hardware checksumming. VLAN: kill_vid is only useful for VLAN filtering devices sky2: Fix VLAN unregistration 8139cp: fix VLAN unregistration atl1: eliminate unneeded kill_vid code network drivers: eliminate unneeded kill_vid code Valerie Henson (1): Update tulip maintainer email address diff --git a/MAINTAINERS b/MAINTAINERS index 124b950..f3b5a39 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1487,6 +1487,13 @@ L: [EMAIL PROTECTED] L: [EMAIL PROTECTED] S: Maintained +FREESCALE QUICC ENGINE UCC ETHERNET DRIVER +P: Li Yang +M: [EMAIL PROTECTED] +L: netdev@vger.kernel.org +L: [EMAIL PROTECTED] +S: Maintained + FILE LOCKING (flock() and fcntl()/lockf()) P: Matthew Wilcox M: [EMAIL PROTECTED] @@ -3545,7 +3552,7 @@ S:Maintained TULIP NETWORK DRIVER P: Valerie Henson -M: [EMAIL PROTECTED] +M: [EMAIL PROTECTED] L: [EMAIL PROTECTED] W: http://sourceforge.net/projects/tulip/ S: Maintained diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c index e8c9f27..a804965 100644 --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c @@ -435,20 +435,12 @@ static void cp_vlan_rx_register(struct net_device *dev, struct vlan_group *grp) spin_lock_irqsave(cp-lock, flags); cp-vlgrp = grp; - cp-cpcmd |= RxVlanOn; - cpw16(CpCmd, cp-cpcmd); - spin_unlock_irqrestore(cp-lock, flags); -} - -static void cp_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) -{ - struct cp_private *cp = netdev_priv(dev); - unsigned long flags; + if (grp) + cp-cpcmd |= RxVlanOn; + else + cp-cpcmd = ~RxVlanOn; - spin_lock_irqsave(cp-lock, flags); - cp-cpcmd = ~RxVlanOn; cpw16(CpCmd, cp-cpcmd); - vlan_group_set_device(cp-vlgrp, vid, NULL); spin_unlock_irqrestore(cp-lock, flags); } #endif /* CP_VLAN_TAG_USED */ @@ -1944,7 +1936,6 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) #if CP_VLAN_TAG_USED dev-features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; dev-vlan_rx_register = cp_vlan_rx_register; - dev-vlan_rx_kill_vid = cp_vlan_rx_kill_vid; #endif if (pci_using_dac) diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c index 7122b7b..04382f9 100644 --- a/drivers/net/acenic.c +++ b/drivers/net/acenic.c @@ -480,12 +480,10 @@ static int __devinit acenic_probe_one(struct pci_dev *pdev, #if ACENIC_DO_VLAN dev-features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; dev-vlan_rx_register = ace_vlan_rx_register; - dev-vlan_rx_kill_vid = ace_vlan_rx_kill_vid; #endif - if (1) { - dev-tx_timeout = ace_watchdog; - dev-watchdog_timeo = 5*HZ; - } + + dev-tx_timeout = ace_watchdog; + dev-watchdog_timeo = 5*HZ; dev-open = ace_open; dev-stop = ace_close; @@ -2283,19 +2281,6 @@ static void
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/defxx.c |1 + drivers/net/e1000/e1000_main.c |9 +++- drivers/net/ehea/ehea.h |2 +- drivers/net/ehea/ehea_main.c|2 +- drivers/net/sky2.c |6 ++-- drivers/net/sky2.h | 24 +-- drivers/net/wireless/hostap/hostap_80211_tx.c | 13 +++ drivers/net/wireless/prism54/islpci_eth.c |5 ++- net/ieee80211/ieee80211_module.c|2 +- net/ieee80211/softmac/ieee80211softmac_module.c |5 +++- 10 files changed, 31 insertions(+), 38 deletions(-) Akinobu Mita (2): ieee80211: fix incomplete error message softmac: alloc_ieee80211() NULL check Björn Steinbrink (1): prism54: fix monitor mode oops Brandon Craig Rhodes (1): hostap: Allocate enough tailroom for TKIP Herbert Xu (1): e1000: restore netif_poll_enable call but make sure IRQs are off Maciej W. Rozycki (1): defxx: Fix the handling of ioremap() failures Stephen Hemminger (4): sky2: dont set bogus bit in PHY register sky2: checksum offload plus vlan bug sky2: program proper register for fiber PHY sky2: enable IRQ on duplex renegotiation Thomas Klein (1): ehea: Fixed multi queue RX bug diff --git a/drivers/net/defxx.c b/drivers/net/defxx.c index 571d82f..7df23dc 100644 --- a/drivers/net/defxx.c +++ b/drivers/net/defxx.c @@ -566,6 +566,7 @@ static int __devinit dfx_register(struct device *bdev) bp-base.mem = ioremap_nocache(bar_start, bar_len); if (!bp-base.mem) { printk(KERN_ERR %s: Cannot map MMIO\n, print_name); + err = -ENOMEM; goto err_out_region; } } else { diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index cbc7feb..9ec35b7 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -1325,7 +1325,10 @@ e1000_sw_init(struct e1000_adapter *adapter) spin_lock_init(adapter-tx_queue_lock); #endif - atomic_set(adapter-irq_sem, 1); + /* Explicitly disable IRQ since the NIC can be in any state. */ + atomic_set(adapter-irq_sem, 0); + e1000_irq_disable(adapter); + spin_lock_init(adapter-stats_lock); set_bit(__E1000_DOWN, adapter-flags); @@ -1431,6 +1434,10 @@ e1000_open(struct net_device *netdev) /* From here on the code is the same as e1000_up() */ clear_bit(__E1000_DOWN, adapter-flags); +#ifdef CONFIG_E1000_NAPI + netif_poll_enable(netdev); +#endif + e1000_irq_enable(adapter); /* fire a link status change interrupt to start the watchdog */ diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index 602872d..e85a933 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include asm/io.h #define DRV_NAME ehea -#define DRV_VERSIONEHEA_0058 +#define DRV_VERSIONEHEA_0061 #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \ | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index f6e0cb1..152bb20 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -428,7 +428,7 @@ static struct ehea_cqe *ehea_proc_rwqes(struct net_device *dev, } skb_copy_to_linear_data(skb, ((char*)cqe) + 64, cqe-num_bytes_transfered - 4); - ehea_fill_skb(dev, skb, cqe); + ehea_fill_skb(port-netdev, skb, cqe); } else if (rq == 2) { /* RQ2 */ skb = get_skb_by_index(skb_arr_rq2, skb_arr_rq2_len, cqe); diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 832fd69..adfbe81 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -364,7 +364,7 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port) /* for SFP-module set SIGDET polarity to low */ ctrl = gm_phy_read(hw, port, PHY_MARV_PHY_CTRL); ctrl |= PHY_M_FIB_SIGD_POL; - gm_phy_write(hw, port, PHY_MARV_CTRL, ctrl); + gm_phy_write(hw, port, PHY_MARV_PHY_CTRL, ctrl); } gm_phy_write(hw, port, PHY_MARV_EXT_ADR, pg); @@ -658,7 +658,7 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port) const u8 *addr = hw-dev[port]-dev_addr; sky2_write32(hw, SK_REG(port, GPHY_CTRL), GPC_RST_SET); -
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: arch/mips/sgi-ip32/Makefile |2 +- arch/mips/sgi-ip32/ip32-platform.c | 20 + drivers/net/Kconfig |2 +- drivers/net/chelsio/suni1x10gexp_regs.h |2 +- drivers/net/forcedeth.c |2 +- drivers/net/meth.c | 68 -- drivers/net/phy/fixed.c |4 ++ drivers/net/spider_net.c|6 +- drivers/net/ucc_geth.c |3 - drivers/net/ucc_geth_mii.c |2 - drivers/net/usb/asix.c |4 ++ drivers/net/wireless/libertas/decl.h|2 +- drivers/net/wireless/libertas/fw.c | 14 -- drivers/net/wireless/libertas/rx.c | 24 ++- 14 files changed, 95 insertions(+), 60 deletions(-) create mode 100644 arch/mips/sgi-ip32/ip32-platform.c Ayaz Abdulla (1): forcedeth: fix cpu irq mask David Hollis (1): asix.c - Add Belkin F5D5055 ids Denver Gingerich (1): fix compiler warning in fixed.c Eugene Teo (2): drivers/net/wireless/libertas/fw.c: fix use-before-check drivers/net/wireless/libertas/rx.c: fix use-after-free Florin Malita (2): libertas: skb dereferenced after netif_rx spidernet: skb used after netif_receive_skb Li Yang (2): ucc_geth: Fix MODULE_DEVICE_TABLE() duplication ucc_geth:trivial fix Mariusz Kozlowski (1): chelsio parenthesis fix Ralf Baechle (1): meth driver renovation Yoichi Yuasa (1): remove unnecessary dependency on VIA velocity config diff --git a/arch/mips/sgi-ip32/Makefile b/arch/mips/sgi-ip32/Makefile index 7e14167..60f0227 100644 --- a/arch/mips/sgi-ip32/Makefile +++ b/arch/mips/sgi-ip32/Makefile @@ -3,5 +3,5 @@ # under Linux. # -obj-y += ip32-berr.o ip32-irq.o ip32-setup.o ip32-reset.o \ +obj-y += ip32-berr.o ip32-irq.o ip32-platform.o ip32-setup.o ip32-reset.o \ crime.o ip32-memory.o diff --git a/arch/mips/sgi-ip32/ip32-platform.c b/arch/mips/sgi-ip32/ip32-platform.c new file mode 100644 index 000..120b159 --- /dev/null +++ b/arch/mips/sgi-ip32/ip32-platform.c @@ -0,0 +1,20 @@ +#include linux/init.h +#include linux/platform_device.h + +static __init int meth_devinit(void) +{ + struct platform_device *pd; + int ret; + + pd = platform_device_alloc(meth, -1); + if (!pd) + return -ENOMEM; + + ret = platform_device_add(pd); + if (ret) + platform_device_put(pd); + + return ret; +} + +device_initcall(meth_devinit); diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index c5baa19..30fd479 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -2218,7 +2218,7 @@ config SK98LIN config VIA_VELOCITY tristate VIA Velocity support - depends on NET_PCI PCI + depends on PCI select CRC32 select CRC_CCITT select MII diff --git a/drivers/net/chelsio/suni1x10gexp_regs.h b/drivers/net/chelsio/suni1x10gexp_regs.h index 269d097..d0f87d8 100644 --- a/drivers/net/chelsio/suni1x10gexp_regs.h +++ b/drivers/net/chelsio/suni1x10gexp_regs.h @@ -105,7 +105,7 @@ #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_LOW(filterId) (0x204A + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_MID(filterId) (0x204B + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_HIGH(filterId)(0x204C + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) -#define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_VID(filterId) (0x2062 + mSUNI1x10GEXP_MAC_VID_FILTER_OFFSET(filterId) +#define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_VID(filterId) (0x2062 + mSUNI1x10GEXP_MAC_VID_FILTER_OFFSET(filterId)) #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_LOW 0x204A #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_MID 0x204B #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_HIGH0x204C diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 7a01802..4154fd0 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -195,7 +195,7 @@ enum { #define NVREG_IRQ_TX_FORCED0x0100 #define NVREG_IRQ_RECOVER_ERROR0x8000 #define NVREG_IRQMASK_THROUGHPUT 0x00df -#define NVREG_IRQMASK_CPU 0x0040 +#define NVREG_IRQMASK_CPU 0x0060 #define NVREG_IRQ_TX_ALL (NVREG_IRQ_TX_ERR|NVREG_IRQ_TX_OK|NVREG_IRQ_TX_FORCED) #define NVREG_IRQ_RX_ALL (NVREG_IRQ_RX_ERROR|NVREG_IRQ_RX|NVREG_IRQ_RX_NOBUF|NVREG_IRQ_RX_FORCED) #define NVREG_IRQ_OTHER (NVREG_IRQ_TIMER|NVREG_IRQ_LINK|NVREG_IRQ_RECOVER_ERROR) diff --git a/drivers/net/meth.c b/drivers/net/meth.c index 0343ea1..92b403b 100644 ---
[git patches] net driver fixes
Two fixes and a one-line constant addition. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/declance.c |2 -- drivers/net/e1000/e1000_main.c |4 include/linux/if_ether.h |1 + 3 files changed, 1 insertions(+), 6 deletions(-) Auke Kok (2): e1000: Don't enable polling in open() (was: e1000: assertion hit in e1000_clean(), kernel 2.6.21.1) Add constant for FCS/CRC length (frame check sequence) Maciej W. Rozycki (1): declance: Remove a dangling spin_unlock_irq() thingy diff --git a/drivers/net/declance.c b/drivers/net/declance.c index 95d854e..b2577f4 100644 --- a/drivers/net/declance.c +++ b/drivers/net/declance.c @@ -932,8 +932,6 @@ static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev) /* Kick the lance: transmit now */ writereg(ll-rdp, LE_C0_INEA | LE_C0_TDMD); - spin_unlock_irq(lp-lock); - dev-trans_start = jiffies; dev_kfree_skb(skb); diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 49be393..cbc7feb 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -1431,10 +1431,6 @@ e1000_open(struct net_device *netdev) /* From here on the code is the same as e1000_up() */ clear_bit(__E1000_DOWN, adapter-flags); -#ifdef CONFIG_E1000_NAPI - netif_poll_enable(netdev); -#endif - e1000_irq_enable(adapter); /* fire a link status change interrupt to start the watchdog */ diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index 1db774c..3213f6f 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h @@ -33,6 +33,7 @@ #define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ #define ETH_DATA_LEN 1500/* Max. octets in payload*/ #define ETH_FRAME_LEN 1514/* Max. octets in frame sans FCS */ +#define ETH_FCS_LEN4 /* Octets in the FCS */ /* * These are the defined Ethernet Protocol ID's. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: Documentation/networking/netdevices.txt |2 +- drivers/net/e1000/e1000.h |4 +- drivers/net/e1000/e1000_main.c | 39 ++--- drivers/net/gianfar.c | 11 + drivers/net/ibm_emac/ibm_emac_core.c|2 +- drivers/net/ibm_emac/ibm_emac_mal.c |3 +- drivers/net/ibm_emac/ibm_emac_mal.h |3 +- drivers/net/ibm_emac/ibm_emac_phy.c | 60 --- drivers/net/ibm_emac/ibm_emac_rgmii.c |2 +- drivers/net/ibm_emac/ibm_emac_rgmii.h |2 +- drivers/net/ibm_emac/ibm_emac_tah.c |2 +- drivers/net/ibm_emac/ibm_emac_tah.h |2 +- drivers/net/ibm_emac/ibm_emac_zmii.c|2 +- drivers/net/ibm_emac/ibm_emac_zmii.h|2 +- drivers/net/ixgb/ixgb.h |2 - drivers/net/ixgb/ixgb_main.c| 36 +++- drivers/net/netxen/netxen_nic_init.c|2 +- drivers/net/sky2.c | 69 --- drivers/net/spider_net.c|3 +- 19 files changed, 125 insertions(+), 123 deletions(-) Auke Kok (2): ixgb: don't print error if pci_enable_msi() fails, cleanup minor leak e1000: Fix msi enable leak on error, don't print error message, cleanup Christoph Hellwig (2): small netdevices.txt fix spidernet: node-aware skbuff allocation Eugene Surovegin (3): ibm_emac: fix section mismatch warnings ibm_emac: improved PHY support ibm_emac: fix link speed detection change Mithlesh Thukral (1): NetXen: Fix NetXen driver ping on system-p Scott Wood (1): gianfar: Add I/O barriers when touching buffer descriptor ownership. Stephen Hemminger (6): sky2: remove Gigabyte 88e8056 restriction sky2: PHY register settings sky2: keep track of receive alloc failures sky2: MIB counter overflow handling sky2: remove dual port workaround sky2: memory barriers change diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt index 847cedb..ce1361f 100644 --- a/Documentation/networking/netdevices.txt +++ b/Documentation/networking/netdevices.txt @@ -49,7 +49,7 @@ dev-hard_start_xmit: for this and return -1 when the spin lock fails. The locking there should also properly protect against set_multicast_list - Context: BHs disabled + Context: Process with BHs disabled or BH (timer). Notes: netif_queue_stopped() is guaranteed false Interrupts must be enabled when calling hard_start_xmit. (Interrupts must also be enabled when enabling the BH handler.) diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h index a9ea67e..16a6edf 100644 --- a/drivers/net/e1000/e1000.h +++ b/drivers/net/e1000/e1000.h @@ -333,11 +333,9 @@ struct e1000_adapter { struct e1000_tx_ring test_tx_ring; struct e1000_rx_ring test_rx_ring; - int msg_enable; -#ifdef CONFIG_PCI_MSI boolean_t have_msi; -#endif + /* to not mess up cache alignment, always add to the bottom */ boolean_t tso_force; boolean_t smart_power_down; /* phy smart power down */ diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 637ae8f..49be393 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -158,9 +158,7 @@ static struct net_device_stats * e1000_get_stats(struct net_device *netdev); static int e1000_change_mtu(struct net_device *netdev, int new_mtu); static int e1000_set_mac(struct net_device *netdev, void *p); static irqreturn_t e1000_intr(int irq, void *data); -#ifdef CONFIG_PCI_MSI static irqreturn_t e1000_intr_msi(int irq, void *data); -#endif static boolean_t e1000_clean_tx_irq(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring); #ifdef CONFIG_E1000_NAPI @@ -300,31 +298,26 @@ module_exit(e1000_exit_module); static int e1000_request_irq(struct e1000_adapter *adapter) { struct net_device *netdev = adapter-netdev; - int flags, err = 0; + void (*handler) = e1000_intr; + int irq_flags = IRQF_SHARED; + int err; - flags = IRQF_SHARED; -#ifdef CONFIG_PCI_MSI if (adapter-hw.mac_type = e1000_82571) { - adapter-have_msi = TRUE; - if ((err = pci_enable_msi(adapter-pdev))) { - DPRINTK(PROBE, ERR, -Unable to allocate MSI interrupt Error: %d\n, err); - adapter-have_msi = FALSE; + adapter-have_msi = !pci_enable_msi(adapter-pdev); + if (adapter-have_msi) { + handler = e1000_intr_msi; + irq_flags = 0; } } -
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/pasemi_mac.c | 45 +++ drivers/net/pasemi_mac.h |4 +- drivers/net/smc911x.c |6 +--- drivers/net/ucc_geth.c | 40 +++--- drivers/net/ucc_geth_mii.c |9 --- drivers/net/ucc_geth_mii.h | 10 6 files changed, 58 insertions(+), 56 deletions(-) Kim Phillips (1): ucc_geth: eliminate max-speed, change interface-type to phy-connection-type Olof Johansson (1): pasemi_mac: Interrupt ack fixes Vitaly Wool (1): smc911x: fix compilation breakage [EMAIL PROTECTED] (3): pasemi_mac: Fix register defines pasemi_mac: Terminate PCI ID list pasemi_mac: Fix local-mac-address parsing diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index bc7f3de..8d38425 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c @@ -85,6 +85,7 @@ static int pasemi_get_mac_addr(struct pasemi_mac *mac) { struct pci_dev *pdev = mac-pdev; struct device_node *dn = pci_device_to_OF_node(pdev); + int len; const u8 *maddr; u8 addr[6]; @@ -94,9 +95,17 @@ static int pasemi_get_mac_addr(struct pasemi_mac *mac) return -ENOENT; } - maddr = of_get_property(dn, local-mac-address, NULL); + maddr = of_get_property(dn, local-mac-address, len); + + if (maddr len == 6) { + memcpy(mac-mac_addr, maddr, 6); + return 0; + } + + /* Some old versions of firmware mistakenly uses mac-address +* (and as a string) instead of a byte array in local-mac-address. +*/ - /* Fall back to mac-address for older firmware */ if (maddr == NULL) maddr = of_get_property(dn, mac-address, NULL); @@ -106,6 +115,7 @@ static int pasemi_get_mac_addr(struct pasemi_mac *mac) return -ENOENT; } + if (sscanf(maddr, %hhx:%hhx:%hhx:%hhx:%hhx:%hhx, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]) != 6) { dev_warn(pdev-dev, @@ -113,7 +123,8 @@ static int pasemi_get_mac_addr(struct pasemi_mac *mac) return -EINVAL; } - memcpy(mac-mac_addr, addr, sizeof(addr)); + memcpy(mac-mac_addr, addr, 6); + return 0; } @@ -384,17 +395,14 @@ static void pasemi_mac_replenish_rx_ring(struct net_device *dev) static void pasemi_mac_restart_rx_intr(struct pasemi_mac *mac) { - unsigned int reg, stat; + unsigned int reg, pcnt; /* Re-enable packet count interrupts: finally * ack the packet count interrupt we got in rx_intr. */ - pci_read_config_dword(mac-iob_pdev, - PAS_IOB_DMA_RXCH_STAT(mac-dma_rxch), - stat); + pcnt = *mac-rx_status PAS_STATUS_PCNT_M; - reg = PAS_IOB_DMA_RXCH_RESET_PCNT(stat PAS_IOB_DMA_RXCH_STAT_CNTDEL_M) - | PAS_IOB_DMA_RXCH_RESET_PINTC; + reg = PAS_IOB_DMA_RXCH_RESET_PCNT(pcnt) | PAS_IOB_DMA_RXCH_RESET_PINTC; pci_write_config_dword(mac-iob_pdev, PAS_IOB_DMA_RXCH_RESET(mac-dma_rxch), @@ -403,14 +411,12 @@ static void pasemi_mac_restart_rx_intr(struct pasemi_mac *mac) static void pasemi_mac_restart_tx_intr(struct pasemi_mac *mac) { - unsigned int reg, stat; + unsigned int reg, pcnt; /* Re-enable packet count interrupts */ - pci_read_config_dword(mac-iob_pdev, - PAS_IOB_DMA_TXCH_STAT(mac-dma_txch), stat); + pcnt = *mac-tx_status PAS_STATUS_PCNT_M; - reg = PAS_IOB_DMA_TXCH_RESET_PCNT(stat PAS_IOB_DMA_TXCH_STAT_CNTDEL_M) - | PAS_IOB_DMA_TXCH_RESET_PINTC; + reg = PAS_IOB_DMA_TXCH_RESET_PCNT(pcnt) | PAS_IOB_DMA_TXCH_RESET_PINTC; pci_write_config_dword(mac-iob_pdev, PAS_IOB_DMA_TXCH_RESET(mac-dma_txch), reg); @@ -591,21 +597,24 @@ static irqreturn_t pasemi_mac_tx_intr(int irq, void *data) { struct net_device *dev = data; struct pasemi_mac *mac = netdev_priv(dev); - unsigned int reg; + unsigned int reg, pcnt; if (!(*mac-tx_status PAS_STATUS_CAUSE_M)) return IRQ_NONE; pasemi_mac_clean_tx(mac); - reg = PAS_IOB_DMA_TXCH_RESET_PINTC; + pcnt = *mac-tx_status PAS_STATUS_PCNT_M; + + reg = PAS_IOB_DMA_TXCH_RESET_PCNT(pcnt) | PAS_IOB_DMA_TXCH_RESET_PINTC; if (*mac-tx_status PAS_STATUS_SOFT) reg |= PAS_IOB_DMA_TXCH_RESET_SINTC; if (*mac-tx_status PAS_STATUS_ERROR) reg |= PAS_IOB_DMA_TXCH_RESET_DINTC; - pci_write_config_dword(mac-iob_pdev, PAS_IOB_DMA_TXCH_RESET(mac-dma_txch), +
[git patches] net driver fixes
As mentioned previously, the big batch queued for 2.6.22 is coming after the dust settles. [EMAIL PROTECTED] folks: the sis900 patch should be in 2.6.21.x Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/sis900.c |9 + drivers/usb/net/pegasus.c | 10 -- drivers/usb/net/pegasus.h |3 +-- 3 files changed, 6 insertions(+), 16 deletions(-) Dan Williams (1): usb-net/pegasus: simplify carrier detection Neil Horman (1): sis900: Allocate rx replacement buffer before rx operation diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c index dea0126..2cb2e15 100644 --- a/drivers/net/sis900.c +++ b/drivers/net/sis900.c @@ -1753,6 +1753,7 @@ static int sis900_rx(struct net_device *net_dev) sis_priv-rx_ring[entry].cmdsts = RX_BUF_SIZE; } else { struct sk_buff * skb; + struct sk_buff * rx_skb; pci_unmap_single(sis_priv-pci_dev, sis_priv-rx_ring[entry].bufptr, RX_BUF_SIZE, @@ -1786,10 +1787,10 @@ static int sis900_rx(struct net_device *net_dev) } /* give the socket buffer to upper layers */ - skb = sis_priv-rx_skbuff[entry]; - skb_put(skb, rx_size); - skb-protocol = eth_type_trans(skb, net_dev); - netif_rx(skb); + rx_skb = sis_priv-rx_skbuff[entry]; + skb_put(rx_skb, rx_size); + rx_skb-protocol = eth_type_trans(rx_skb, net_dev); + netif_rx(rx_skb); /* some network statistics */ if ((rx_status BCAST) == MCAST) diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c index 1ad4ee5..a05fd97 100644 --- a/drivers/usb/net/pegasus.c +++ b/drivers/usb/net/pegasus.c @@ -847,16 +847,6 @@ static void intr_callback(struct urb *urb) * d[0].NO_CARRIER kicks in only with failed TX. * ... so monitoring with MII may be safest. */ - if (pegasus-features TRUST_LINK_STATUS) { - if (d[5] LINK_STATUS) - netif_carrier_on(net); - else - netif_carrier_off(net); - } else { - /* Never set carrier _on_ based on ! NO_CARRIER */ - if (d[0] NO_CARRIER) - netif_carrier_off(net); - } /* bytes 3-4 == rx_lostpkt, reg 2E/2F */ pegasus-stats.rx_missed_errors += ((d[3] 0x7f) 8) | d[4]; diff --git a/drivers/usb/net/pegasus.h b/drivers/usb/net/pegasus.h index c7aadb4..c746782 100644 --- a/drivers/usb/net/pegasus.h +++ b/drivers/usb/net/pegasus.h @@ -11,7 +11,6 @@ #definePEGASUS_II 0x8000 #defineHAS_HOME_PNA0x4000 -#defineTRUST_LINK_STATUS 0x2000 #definePEGASUS_MTU 1536 #defineRX_SKBS 4 @@ -204,7 +203,7 @@ PEGASUS_DEV( AEI USB Fast Ethernet Adapter, VENDOR_AEILAB, 0x1701, PEGASUS_DEV( Allied Telesyn Int. AT-USB100, VENDOR_ALLIEDTEL, 0xb100, DEFAULT_GPIO_RESET | PEGASUS_II ) PEGASUS_DEV( Belkin F5D5050 USB Ethernet, VENDOR_BELKIN, 0x0121, - DEFAULT_GPIO_RESET | PEGASUS_II | TRUST_LINK_STATUS ) + DEFAULT_GPIO_RESET | PEGASUS_II ) PEGASUS_DEV( Billionton USB-100, VENDOR_BILLIONTON, 0x0986, DEFAULT_GPIO_RESET ) PEGASUS_DEV( Billionton USBLP-100, VENDOR_BILLIONTON, 0x0987, - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/depca.c |3 +- drivers/net/hamradio/baycom_ser_fdx.c |6 +++- drivers/net/sis900.c | 44 +++-- drivers/usb/net/pegasus.c | 17 +--- drivers/usb/net/pegasus.h |3 +- 5 files changed, 40 insertions(+), 33 deletions(-) Andrea Righi (1): [netdrvr] depca: handle platform_device_add() failure Andrew Morton (1): drivers/net/hamradio/baycom_ser_fdx build fix Dan Williams (1): usb-net/pegasus: fix pegasus carrier detection Neil Horman (1): sis900: Allocate rx replacement buffer before rx operation diff --git a/drivers/net/depca.c b/drivers/net/depca.c index 5113eef..f3807aa 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -1491,8 +1491,9 @@ static void __init depca_platform_probe (void) depca_io_ports[i].device = pldev; if (platform_device_add(pldev)) { - platform_device_put(pldev); depca_io_ports[i].device = NULL; + pldev-dev.platform_data = NULL; + platform_device_put(pldev); continue; } diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c index 59214e7..30baf6e 100644 --- a/drivers/net/hamradio/baycom_ser_fdx.c +++ b/drivers/net/hamradio/baycom_ser_fdx.c @@ -75,12 +75,14 @@ #include linux/ioport.h #include linux/string.h #include linux/init.h -#include asm/uaccess.h -#include asm/io.h #include linux/hdlcdrv.h #include linux/baycom.h #include linux/jiffies.h +#include asm/uaccess.h +#include asm/io.h +#include asm/irq.h + /* - */ #define BAYCOM_DEBUG diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c index b3750f2..b2a3b19 100644 --- a/drivers/net/sis900.c +++ b/drivers/net/sis900.c @@ -1755,6 +1755,24 @@ static int sis900_rx(struct net_device *net_dev) } else { struct sk_buff * skb; + pci_unmap_single(sis_priv-pci_dev, + sis_priv-rx_ring[entry].bufptr, RX_BUF_SIZE, + PCI_DMA_FROMDEVICE); + + /* refill the Rx buffer, what if there is not enought +* memory for new socket buffer ?? */ + if ((skb = dev_alloc_skb(RX_BUF_SIZE)) == NULL) { + /* +* Not enough memory to refill the buffer +* so we need to recycle the old one so +* as to avoid creating a memory hole +* in the rx ring +*/ + skb = sis_priv-rx_skbuff[entry]; + sis_priv-stats.rx_dropped++; + goto refill_rx_ring; + } + /* This situation should never happen, but due to some unknow bugs, it is possible that we are working on NULL sk_buff :-( */ @@ -1768,9 +1786,6 @@ static int sis900_rx(struct net_device *net_dev) break; } - pci_unmap_single(sis_priv-pci_dev, - sis_priv-rx_ring[entry].bufptr, RX_BUF_SIZE, - PCI_DMA_FROMDEVICE); /* give the socket buffer to upper layers */ skb = sis_priv-rx_skbuff[entry]; skb_put(skb, rx_size); @@ -1783,33 +1798,14 @@ static int sis900_rx(struct net_device *net_dev) net_dev-last_rx = jiffies; sis_priv-stats.rx_bytes += rx_size; sis_priv-stats.rx_packets++; - - /* refill the Rx buffer, what if there is not enought -* memory for new socket buffer ?? */ - if ((skb = dev_alloc_skb(RX_BUF_SIZE)) == NULL) { - /* not enough memory for skbuff, this makes a -* hole on the buffer ring, it is not clear -* how the hardware will react to this kind -* of degenerated buffer */ - if (netif_msg_rx_status(sis_priv)) - printk(KERN_INFO %s: Memory squeeze, - deferring packet.\n, - net_dev-name); -
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/Kconfig |1 + drivers/net/cxgb3/cxgb3_defs.h|5 +- drivers/net/cxgb3/cxgb3_offload.c | 69 +++ drivers/net/cxgb3/t3_hw.c | 18 +++-- drivers/net/sky2.c| 176 +++-- drivers/net/sky2.h| 11 +++ drivers/net/spider_net.c |2 +- 7 files changed, 190 insertions(+), 92 deletions(-) Dave Jiang (1): gianfar needs crc32 lib dependency Divy Le Ray (2): cxgb3 - Fix low memory conditions cxgb3 - PHY interrupts and GPIO pins. Linas Vepstas (1): spidernet: Fix problem sending IP fragments Stephen Hemminger (6): sky2: disable support for 88E8056 sky2: handle descriptor errors sky2: disable ASF on all chip types sky2: EC-U performance and jumbo support sky2: no jumbo on Yukon FE sky2: version 1.14 diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index c3f9f59..a3d46ea 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -2263,6 +2263,7 @@ config GIANFAR tristate Gianfar Ethernet depends on 85xx || 83xx || PPC_86xx select PHYLIB + select CRC32 help This driver supports the Gigabit TSEC on the MPC83xx, MPC85xx, and MPC86xx family of chips, and the FEC on the 8540. diff --git a/drivers/net/cxgb3/cxgb3_defs.h b/drivers/net/cxgb3/cxgb3_defs.h index e14862b..483a594 100644 --- a/drivers/net/cxgb3/cxgb3_defs.h +++ b/drivers/net/cxgb3/cxgb3_defs.h @@ -67,7 +67,10 @@ static inline union listen_entry *stid2entry(const struct tid_info *t, static inline struct t3c_tid_entry *lookup_tid(const struct tid_info *t, unsigned int tid) { - return tid t-ntids ? (t-tid_tab[tid]) : NULL; + struct t3c_tid_entry *t3c_tid = tid t-ntids ? + (t-tid_tab[tid]) : NULL; + + return (t3c_tid t3c_tid-client) ? t3c_tid : NULL; } /* diff --git a/drivers/net/cxgb3/cxgb3_offload.c b/drivers/net/cxgb3/cxgb3_offload.c index 4864924..199e506 100644 --- a/drivers/net/cxgb3/cxgb3_offload.c +++ b/drivers/net/cxgb3/cxgb3_offload.c @@ -508,6 +508,7 @@ void cxgb3_queue_tid_release(struct t3cdev *tdev, unsigned int tid) spin_lock_bh(td-tid_release_lock); p-ctx = (void *)td-tid_release_list; + p-client = NULL; td-tid_release_list = p; if (!p-ctx) schedule_work(td-tid_release_task); @@ -623,7 +624,8 @@ static int do_act_open_rpl(struct t3cdev *dev, struct sk_buff *skb) struct t3c_tid_entry *t3c_tid; t3c_tid = lookup_atid((T3C_DATA(dev))-tid_maps, atid); - if (t3c_tid-ctx t3c_tid-client t3c_tid-client-handlers + if (t3c_tid t3c_tid-ctx t3c_tid-client + t3c_tid-client-handlers t3c_tid-client-handlers[CPL_ACT_OPEN_RPL]) { return t3c_tid-client-handlers[CPL_ACT_OPEN_RPL] (dev, skb, t3c_tid- @@ -642,7 +644,7 @@ static int do_stid_rpl(struct t3cdev *dev, struct sk_buff *skb) struct t3c_tid_entry *t3c_tid; t3c_tid = lookup_stid((T3C_DATA(dev))-tid_maps, stid); - if (t3c_tid-ctx t3c_tid-client-handlers + if (t3c_tid t3c_tid-ctx t3c_tid-client-handlers t3c_tid-client-handlers[p-opcode]) { return t3c_tid-client-handlers[p-opcode] (dev, skb, t3c_tid-ctx); @@ -660,7 +662,7 @@ static int do_hwtid_rpl(struct t3cdev *dev, struct sk_buff *skb) struct t3c_tid_entry *t3c_tid; t3c_tid = lookup_tid((T3C_DATA(dev))-tid_maps, hwtid); - if (t3c_tid-ctx t3c_tid-client-handlers + if (t3c_tid t3c_tid-ctx t3c_tid-client-handlers t3c_tid-client-handlers[p-opcode]) { return t3c_tid-client-handlers[p-opcode] (dev, skb, t3c_tid-ctx); @@ -689,6 +691,28 @@ static int do_cr(struct t3cdev *dev, struct sk_buff *skb) } } +/* + * Returns an sk_buff for a reply CPL message of size len. If the input + * sk_buff has no other users it is trimmed and reused, otherwise a new buffer + * is allocated. The input skb must be of size at least len. Note that this + * operation does not destroy the original skb data even if it decides to reuse + * the buffer. + */ +static struct sk_buff *cxgb3_get_cpl_reply_skb(struct sk_buff *skb, size_t len, + int gfp) +{ + if (likely(!skb_cloned(skb))) { + BUG_ON(skb-len len); + __skb_trim(skb, len); + skb_get(skb); + } else { + skb = alloc_skb(len, gfp); + if (skb) + __skb_put(skb, len); + } +
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/b44.c |2 +- drivers/net/cxgb3/common.h|9 +-- drivers/net/cxgb3/cxgb3_main.c| 35 +++- drivers/net/cxgb3/cxgb3_offload.c |4 ++- drivers/net/cxgb3/mc5.c |3 ++ drivers/net/cxgb3/regs.h |4 +++ drivers/net/cxgb3/sge.c |2 +- drivers/net/cxgb3/t3_hw.c | 24 ++- drivers/net/cxgb3/version.h |5 +++- drivers/net/cxgb3/xgmac.c |1 - drivers/net/r8169.c | 46 - 11 files changed, 89 insertions(+), 46 deletions(-) Bill Helfinstine (1): b44: fix IFF_ALLMULTI handling of CAM slots Divy Le Ray (4): cxgb3 - Safeguard TCAM size usage cxgb3 - detect NIC only adapters cxgb3 - Tighten xgmac workaround cxgb3 - Firwmare update Francois Romieu (2): r8169: issue request_irq after the private data are completely initialized r8169: fix suspend/resume for down interface diff --git a/drivers/net/b44.c b/drivers/net/b44.c index aaada57..d742bfe 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -1709,7 +1709,7 @@ static void __b44_set_rx_mode(struct net_device *dev) bw32(bp, B44_RXCONFIG, val); } else { unsigned char zero[6] = {0, 0, 0, 0, 0, 0}; - int i = 0; + int i = 1; __b44_set_mac_addr(bp); diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h index 85e5543..97128d8 100644 --- a/drivers/net/cxgb3/common.h +++ b/drivers/net/cxgb3/common.h @@ -112,8 +112,7 @@ enum { }; enum { - SUPPORTED_OFFLOAD = 1 24, - SUPPORTED_IRQ = 1 25 + SUPPORTED_IRQ = 1 24 }; enum { /* adapter interrupt-maintained statistics */ @@ -358,6 +357,9 @@ enum { MC5_MODE_72_BIT = 2 }; +/* MC5 min active region size */ +enum { MC5_MIN_TIDS = 16 }; + struct vpd_params { unsigned int cclk; unsigned int mclk; @@ -402,6 +404,7 @@ struct adapter_params { unsigned int stats_update_period; /* MAC stats accumulation period */ unsigned int linkpoll_period; /* link poll period in 0.1s */ unsigned int rev; /* chip revision */ + unsigned int offload; }; enum { /* chip revisions */ @@ -602,7 +605,7 @@ static inline int is_10G(const struct adapter *adap) static inline int is_offload(const struct adapter *adap) { - return adapter_info(adap)-caps SUPPORTED_OFFLOAD; + return adap-params.offload; } static inline unsigned int core_ticks_per_usec(const struct adapter *adap) diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index d553836..26240fd 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c @@ -185,16 +185,26 @@ void t3_os_link_changed(struct adapter *adapter, int port_id, int link_stat, int speed, int duplex, int pause) { struct net_device *dev = adapter-port[port_id]; + struct port_info *pi = netdev_priv(dev); + struct cmac *mac = pi-mac; /* Skip changes from disabled ports. */ if (!netif_running(dev)) return; if (link_stat != netif_carrier_ok(dev)) { - if (link_stat) + if (link_stat) { + t3_set_reg_field(adapter, +A_XGM_TXFIFO_CFG + mac-offset, +F_ENDROPPKT, 0); netif_carrier_on(dev); - else + } else { netif_carrier_off(dev); + t3_set_reg_field(adapter, +A_XGM_TXFIFO_CFG + mac-offset, +F_ENDROPPKT, F_ENDROPPKT); + } + link_report(dev); } } @@ -407,7 +417,7 @@ static void quiesce_rx(struct adapter *adap) static int setup_sge_qsets(struct adapter *adap) { int i, j, err, irq_idx = 0, qset_idx = 0, dummy_dev_idx = 0; - unsigned int ntxq = is_offload(adap) ? SGE_TXQ_PER_SET : 1; + unsigned int ntxq = SGE_TXQ_PER_SET; if (adap-params.rev 0 !(adap-flags USING_MSI)) irq_idx = -1; @@ -485,12 +495,14 @@ static ssize_t show_##name(struct device *d, struct device_attribute *attr, \ static ssize_t set_nfilters(struct net_device *dev, unsigned int val) { struct adapter *adap = dev-priv; + int min_tids = is_offload(adap) ? MC5_MIN_TIDS : 0; if (adap-flags FULL_INIT_DONE) return -EBUSY; if (val adap-params.rev == 0) return -EINVAL; - if (val
Re: [git patches] net driver fixes
On Thu, 29 Mar 2007, Jeff Garzik wrote: Guennadi Liakhovetski wrote: Jeff, might be worth getting the sk_buff leak fix in ppp from http://www.spinics.net/lists/netdev/msg27706.html in 2.6.21 too? Don't know how important it is for stable. It was present in 2.6.18 too. Can you resend the patch to me, please? Easier for the system to apply than the URL... Sure, attached below. I think, though, this patch is already in someone's tree. Andrew has applied it to -mm under the name ppp-dont-leak-an-sk_buff-on-interface-destruction.patch but then dropped with the reasoning This patch was dropped because it was merged into mainline or a subsystem tree. So, maybe it is now in Samuel's IrDA tree. Samuel?So, maybe all you have to do is to pull it from his tree. Thanks Guennadi - Guennadi Liakhovetski, Ph.D. DSA Daten- und Systemtechnik GmbH Pascalstr. 28 D-52076 Aachen Germany Don't leak an sk_buff on interface destruction. Signed-off-by: G. Liakhovetski [EMAIL PROTECTED] --- a/drivers/net/ppp_generic.c 2007-03-23 13:04:04.0 +0100 +++ b/drivers/net/ppp_generic.c 2007-03-23 13:05:29.0 +0100 @@ -2544,6 +2544,9 @@ ppp-active_filter = NULL; #endif /* CONFIG_PPP_FILTER */ + if (ppp-xmit_pending) + kfree_skb(ppp-xmit_pending); + kfree(ppp); } - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On 3/30/2007, Guennadi Liakhovetski [EMAIL PROTECTED] wrote: On Thu, 29 Mar 2007, Jeff Garzik wrote: Guennadi Liakhovetski wrote: Jeff, might be worth getting the sk_buff leak fix in ppp from http://www.spinics.net/lists/netdev/msg27706.html in 2.6.21 too? Don't know how important it is for stable. It was present in 2.6.18 too. Can you resend the patch to me, please? Easier for the system to apply than the URL... Sure, attached below. I think, though, this patch is already in someone's tree. Andrew has applied it to -mm under the name ppp-dont-leak-an-sk_buff-on-interface-destruction.patch but then dropped with the reasoning This patch was dropped because it was merged into mainline or a subsystem tree. So, maybe it is now in Samuel's IrDA tree. Samuel?So, maybe all you have to do is to pull it from his tree. It's already in Linus tree, and has landed there through davem's net-2.6 tree. So, this is all taken care of, Jeff doesn't need to worry about this one. Cheers, Samuel. Thanks Guennadi - Guennadi Liakhovetski, Ph.D. DSA Daten- und Systemtechnik GmbH Pascalstr. 28 D-52076 Aachen Germany Don't leak an sk_buff on interface destruction. Signed-off-by: G. Liakhovetski [EMAIL PROTECTED] --- a/drivers/net/ppp_generic.c2007-03-23 13:04:04.0 +0100 +++ b/drivers/net/ppp_generic.c2007-03-23 13:05:29.0 +0100 @@ -2544,6 +2544,9 @@ ppp-active_filter = NULL; #endif /* CONFIG_PPP_FILTER */ + if (ppp-xmit_pending) + kfree_skb(ppp-xmit_pending); + kfree(ppp); } - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Guennadi Liakhovetski wrote: Jeff, might be worth getting the sk_buff leak fix in ppp from http://www.spinics.net/lists/netdev/msg27706.html in 2.6.21 too? Don't know how important it is for stable. It was present in 2.6.18 too. Can you resend the patch to me, please? Easier for the system to apply than the URL... Jeff - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/atl1/atl1_main.c | 10 ++ drivers/net/netxen/netxen_nic_init.c |3 ++- drivers/net/sis190.c |1 + 3 files changed, 13 insertions(+), 1 deletions(-) Chris Snook (1): atl1: save mac address on remove Francois Romieu (1): sis190: new PHY support Linsys Contractor Adhiraj Joshi (1): NetXen: Fix hardware access for ppc architecture. diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index dee3638..8606eac 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c @@ -2320,6 +2320,16 @@ static void __devexit atl1_remove(struct pci_dev *pdev) return; adapter = netdev_priv(netdev); + + /* Some atl1 boards lack persistent storage for their MAC, and get it +* from the BIOS during POST. If we've been messing with the MAC +* address, we need to save the permanent one. +*/ + if (memcmp(adapter-hw.mac_addr, adapter-hw.perm_mac_addr, ETH_ALEN)) { + memcpy(adapter-hw.mac_addr, adapter-hw.perm_mac_addr, ETH_ALEN); + atl1_set_mac_addr(adapter-hw); + } + iowrite16(0, adapter-hw.hw_addr + REG_GPHY_ENABLE); unregister_netdev(netdev); pci_iounmap(pdev, adapter-hw.hw_addr); diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 229aa1c..eff965d 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c @@ -438,6 +438,7 @@ do_rom_fast_read_words(struct netxen_adapter *adapter, int addr, for (addridx = addr; addridx (addr + size); addridx += 4) { ret = do_rom_fast_read(adapter, addridx, (int *)bytes); + *(int *)bytes = cpu_to_le32(*(int *)bytes); if (ret != 0) break; bytes += 4; @@ -497,7 +498,7 @@ static inline int do_rom_fast_write_words(struct netxen_adapter *adapter, int timeout = 0; int data; - data = *(u32*)bytes; + data = le32_to_cpu((*(u32*)bytes)); ret = do_rom_fast_write(adapter, addridx, data); if (ret 0) diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c index b08508b..34463ce 100644 --- a/drivers/net/sis190.c +++ b/drivers/net/sis190.c @@ -324,6 +324,7 @@ static struct mii_chip_info { u32 feature; } mii_chip_table[] = { { Broadcom PHY BCM5461, { 0x0020, 0x60c0 }, LAN, F_PHY_BCM5461 }, + { Broadcom PHY AC131, { 0x0143, 0xbc70 }, LAN, 0 }, { Agere PHY ET1101B,{ 0x0282, 0xf010 }, LAN, 0 }, { Marvell PHY 88E, { 0x0141, 0x0cc0 }, LAN, F_PHY_88E }, { Realtek PHY RTL8201, { 0x, 0x8200 }, LAN, 0 }, - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/atl1/atl1_hw.c |1 - drivers/net/forcedeth.c |8 ++- drivers/net/mv643xx_eth.c|4 +- drivers/net/myri10ge/myri10ge.c |7 +- drivers/net/qla3xxx.c| 110 +++-- drivers/net/qla3xxx.h|3 +- drivers/net/sun3lance.c | 16 - drivers/net/wireless/bcm43xx/bcm43xx_phy.c |4 +- drivers/net/wireless/bcm43xx/bcm43xx_radio.c | 12 ++-- fs/compat_ioctl.c|9 ++ include/linux/wireless.h | 21 - include/net/iw_handler.h | 30 +-- net/core/rtnetlink.c |3 +- net/core/wireless.c | 82 14 files changed, 182 insertions(+), 128 deletions(-) Ayaz Abdulla (2): forcedeth: fix nic poll forcedeth: fix tx timeout Brice Goglin (1): myri10ge: correctly detect when TSO should be used Cyrill V. Gorcunov (1): SUN3/3X Lance trivial fix improved David Woodhouse (1): bcm43xx: Fix machine check on PPC for version 1 PHY Gabriel Paubert (1): mv643xx_eth: Fix use of uninitialized port_num field Jay Cliburn (1): atl1: remove unnecessary crc inversion Jean Tourrilhes (2): wext: Add missing ioctls to 64-32 conversion WE-22 : prevent information leak on 64 bit Larry Finger (1): bcm43xx: Fix code for confusion between PHY revision and PHY version Ron Mercer (4): qla3xxx: bugfix: Add tx control block memset. qla3xxx: bugfix: Multi segment sends were getting whacked. qla3xxx: bugfix: Dropping interrupt under heavy network load. qla3xxx: bugfix: Jumbo frame handling. Stefano Brivio (1): bcm43xx: fix radio_set_tx_iq diff --git a/drivers/net/atl1/atl1_hw.c b/drivers/net/atl1/atl1_hw.c index 314dbaa..69482e0 100644 --- a/drivers/net/atl1/atl1_hw.c +++ b/drivers/net/atl1/atl1_hw.c @@ -334,7 +334,6 @@ u32 atl1_hash_mc_addr(struct atl1_hw *hw, u8 *mc_addr) int i; crc32 = ether_crc_le(6, mc_addr); - crc32 = ~crc32; for (i = 0; i 32; i++) value |= (((crc32 i) 1) (31 - i)); diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 46e1697..d04214e 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -2050,9 +2050,10 @@ static void nv_tx_timeout(struct net_device *dev) nv_drain_tx(dev); nv_init_tx(dev); setup_hw_rings(dev, NV_SETUP_TX_RING); - netif_wake_queue(dev); } + netif_wake_queue(dev); + /* 4) restart tx engine */ nv_start_tx(dev); spin_unlock_irq(np-lock); @@ -3536,7 +3537,10 @@ static void nv_do_nic_poll(unsigned long data) pci_push(base); if (!using_multi_irqs(dev)) { - nv_nic_irq(0, dev); + if (np-desc_ver == DESC_VER_3) + nv_nic_irq_optimized(0, dev); + else + nv_nic_irq(0, dev); if (np-msi_flags NV_MSI_X_ENABLED) enable_irq_lockdep(np-msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); else diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index c9f55bc..8015a7c 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c @@ -1379,7 +1379,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev) spin_lock_init(mp-lock); - port_num = pd-port_number; + port_num = mp-port_num = pd-port_number; /* set default config values */ eth_port_uc_addr_get(dev, dev-dev_addr); @@ -1411,8 +1411,6 @@ static int mv643xx_eth_probe(struct platform_device *pdev) duplex = pd-duplex; speed = pd-speed; - mp-port_num = port_num; - /* Hook up MII support for ethtool */ mp-mii.dev = dev; mp-mii.mdio_read = mv643xx_mdio_read; diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index b05b20e..c216e6a 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -71,7 +71,7 @@ #include myri10ge_mcp.h #include myri10ge_mcp_gen_header.h -#define MYRI10GE_VERSION_STR 1.3.0-1.226 +#define MYRI10GE_VERSION_STR 1.3.0-1.227 MODULE_DESCRIPTION(Myricom 10G driver (10GbE)); MODULE_AUTHOR(Maintainer: [EMAIL PROTECTED]); @@ -2015,10 +2015,9 @@ again: mss = 0; max_segments = MXGEFW_MAX_SEND_DESC; - if (skb-len (dev-mtu + ETH_HLEN)) { + if (skb_is_gso(skb)) { mss = skb_shinfo(skb)-gso_size; - if (mss != 0) - max_segments = MYRI10GE_MAX_SEND_DESC_TSO; + max_segments =
Re: [git patches] net driver fixes
Jeff, might be worth getting the sk_buff leak fix in ppp from http://www.spinics.net/lists/netdev/msg27706.html in 2.6.21 too? Don't know how important it is for stable. It was present in 2.6.18 too. Thanks Guennadi --- Guennadi Liakhovetski - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/Kconfig | 25 ++-- drivers/net/cxgb3/common.h | 15 ++ drivers/net/cxgb3/cxgb3_main.c | 90 -- drivers/net/cxgb3/regs.h | 22 +++ drivers/net/cxgb3/t3_hw.c| 15 ++- drivers/net/cxgb3/xgmac.c| 133 +-- drivers/net/ewrk3.c |3 +- drivers/net/mv643xx_eth.c| 14 ++ drivers/net/myri10ge/myri10ge.c | 22 +++- drivers/net/pci-skeleton.c |4 +- drivers/net/saa9730.c| 177 +- drivers/net/skge.c | 110 +--- drivers/net/skge.h |6 +- drivers/net/ucc_geth.c |3 +- drivers/net/wireless/airo.c |4 +- drivers/net/wireless/bcm43xx/bcm43xx_radio.c | 14 +- 16 files changed, 460 insertions(+), 197 deletions(-) Anton Blanchard (1): Fix return code in pci-skeleton.c Brice Goglin (4): myri10ge: Serverworks HT2100 provides aligned PCIe completion myri10ge: update wcfifo and intr_coal_delay default values myri10ge: fix management of 4kB allocated pages myri10ge: update driver version to 1.3.0-1.226 Dale Farnsworth (1): mv643xx_eth: add mv643xx_eth_shutdown function Divy Le Ray (5): cxgb3 - fix ethtool cmd on multiple queues port cxgb3 - Auto-load FW if mismatch detected cxgb3 - Fix potential MAC hang cxgb3 - T3B2 pcie config space cxgb3 - fix white spaces in drivers/net/Kconfig Jeff Garzik (1): [netdrvr] ewrk3: correct card detection bug Larry Finger (1): bcm43xx: MANUALWLAN fixes Li Yang (1): Revert ucc_geth: returns NETDEV_TX_BUSY when BD ring is full Michal Schmidt (1): airo: Fix an error path memory leak Ralf Baechle (1): SAA9730: Fix large pile of warnings Stephen Hemminger (3): skge: deadlock on tx timeout skge: mask irqs when device down skge: use per-port phy locking diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 5ff0922..c3f9f59 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -2372,22 +2372,23 @@ config CHELSIO_T1_NAPI when the driver is receiving lots of packets from the card. config CHELSIO_T3 -tristate Chelsio Communications T3 10Gb Ethernet support -depends on PCI -help - This driver supports Chelsio T3-based gigabit and 10Gb Ethernet - adapters. + tristate Chelsio Communications T3 10Gb Ethernet support + depends on PCI + select FW_LOADER + help + This driver supports Chelsio T3-based gigabit and 10Gb Ethernet + adapters. - For general information about Chelsio and our products, visit - our website at http://www.chelsio.com. + For general information about Chelsio and our products, visit + our website at http://www.chelsio.com. - For customer support, please visit our customer support page at - http://www.chelsio.com/support.htm. + For customer support, please visit our customer support page at + http://www.chelsio.com/support.htm. - Please send feedback to [EMAIL PROTECTED]. + Please send feedback to [EMAIL PROTECTED]. - To compile this driver as a module, choose M here: the module - will be called cxgb3. + To compile this driver as a module, choose M here: the module + will be called cxgb3. config EHEA tristate eHEA Ethernet support diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h index e23deeb..85e5543 100644 --- a/drivers/net/cxgb3/common.h +++ b/drivers/net/cxgb3/common.h @@ -260,6 +260,10 @@ struct mac_stats { unsigned long serdes_signal_loss; unsigned long xaui_pcs_ctc_err; unsigned long xaui_pcs_align_change; + + unsigned long num_toggled; /* # times toggled TxEn due to stuck TX */ + unsigned long num_resets; /* # times reset due to stuck TX */ + }; struct tp_mib_stats { @@ -400,6 +404,12 @@ struct adapter_params { unsigned int rev; /* chip revision */ }; +enum { /* chip revisions */ + T3_REV_A = 0, + T3_REV_B = 2, + T3_REV_B2 = 3, +}; + struct trace_params { u32 sip; u32 sip_mask; @@ -465,6 +475,10 @@ struct cmac { struct adapter *adapter; unsigned int offset; unsigned int nucast;/* # of address filters for unicast MACs */ + unsigned int tcnt; + unsigned int xcnt; + unsigned int toggle_cnt; + unsigned int txen; struct mac_stats stats; }; @@
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/natsemi.c | 58 -- drivers/net/netxen/netxen_nic.h |1 + drivers/net/netxen/netxen_nic_ethtool.c |1 + drivers/net/netxen/netxen_nic_hw.c |5 ++- drivers/net/netxen/netxen_nic_init.c| 11 +- drivers/net/skge.c | 28 +-- 6 files changed, 63 insertions(+), 41 deletions(-) [EMAIL PROTECTED] (3): natsemi: Consistently use interrupt enable/disable functions natsemi: Fix NAPI for interrupt sharing natsemi: Avoid IntrStatus lossage if RX state machine resets. Linsys Contractor Mithlesh Thukral (2): NetXen: Bug fix for Jumbo frames on XG card NetXen: Fix softlockup seen during hardware access Stephen Hemminger (1): skge: set mac address bonding fix diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index c6172a7..349b96a 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -1712,7 +1712,7 @@ static void init_registers(struct net_device *dev) /* Enable interrupts by setting the interrupt mask. */ writel(DEFAULT_INTR, ioaddr + IntrMask); - writel(1, ioaddr + IntrEnable); + natsemi_irq_enable(dev); writel(RxOn | TxOn, ioaddr + ChipCmd); writel(StatsClear, ioaddr + StatsCtrl); /* Clear Stats */ @@ -2119,28 +2119,35 @@ static irqreturn_t intr_handler(int irq, void *dev_instance) struct netdev_private *np = netdev_priv(dev); void __iomem * ioaddr = ns_ioaddr(dev); - if (np-hands_off) + /* Reading IntrStatus automatically acknowledges so don't do +* that while interrupts are disabled, (for example, while a +* poll is scheduled). */ + if (np-hands_off || !readl(ioaddr + IntrEnable)) return IRQ_NONE; - /* Reading automatically acknowledges. */ np-intr_status = readl(ioaddr + IntrStatus); + if (!np-intr_status) + return IRQ_NONE; + if (netif_msg_intr(np)) printk(KERN_DEBUG %s: Interrupt, status %#08x, mask %#08x.\n, dev-name, np-intr_status, readl(ioaddr + IntrMask)); - if (!np-intr_status) - return IRQ_NONE; - prefetch(np-rx_skbuff[np-cur_rx % RX_RING_SIZE]); if (netif_rx_schedule_prep(dev)) { /* Disable interrupts and register for poll */ natsemi_irq_disable(dev); __netif_rx_schedule(dev); - } + } else + printk(KERN_WARNING + %s: Ignoring interrupt, status %#08x, mask %#08x.\n, + dev-name, np-intr_status, + readl(ioaddr + IntrMask)); + return IRQ_HANDLED; } @@ -2156,6 +2163,20 @@ static int natsemi_poll(struct net_device *dev, int *budget) int work_done = 0; do { + if (netif_msg_intr(np)) + printk(KERN_DEBUG + %s: Poll, status %#08x, mask %#08x.\n, + dev-name, np-intr_status, + readl(ioaddr + IntrMask)); + + /* netdev_rx() may read IntrStatus again if the RX state +* machine falls over so do it first. */ + if (np-intr_status + (IntrRxDone | IntrRxIntr | RxStatusFIFOOver | +IntrRxErr | IntrRxOverrun)) { + netdev_rx(dev, work_done, work_to_do); + } + if (np-intr_status (IntrTxDone | IntrTxIntr | IntrTxIdle | IntrTxErr)) { spin_lock(np-lock); @@ -2167,12 +2188,6 @@ static int natsemi_poll(struct net_device *dev, int *budget) if (np-intr_status IntrAbnormalSummary) netdev_error(dev, np-intr_status); - if (np-intr_status - (IntrRxDone | IntrRxIntr | RxStatusFIFOOver | -IntrRxErr | IntrRxOverrun)) { - netdev_rx(dev, work_done, work_to_do); - } - *budget -= work_done; dev-quota -= work_done; @@ -2399,19 +2414,8 @@ static struct net_device_stats *get_stats(struct net_device *dev) #ifdef CONFIG_NET_POLL_CONTROLLER static void natsemi_poll_controller(struct net_device *dev) { - struct netdev_private *np = netdev_priv(dev); - disable_irq(dev-irq); - - /* -* A real interrupt might have already reached us at this point -* but NAPI might still haven't called us back. As the interrupt -* status register is cleared by reading, we should prevent an -* interrupt loss in this case... -*/ - if (!np-intr_status) -
Re: [git patches] net driver fixes
On Tue, 6 Mar 2007, Jeff Garzik wrote: Jay Vosburgh (3): bonding: Improve IGMP join processing ip_mc_rejoin_group: Kill warning about unused variable `in_dev' when CONFIG_IP_MULTICAST is not set. Signed-off-by: Geert Uytterhoeven [EMAIL PROTECTED] diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 1c6a084..8cedb2a 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c @@ -1255,9 +1255,9 @@ out: */ void ip_mc_rejoin_group(struct ip_mc_list *im) { +#ifdef CONFIG_IP_MULTICAST struct in_device *in_dev = im-interface; -#ifdef CONFIG_IP_MULTICAST if (im-multiaddr == IGMP_ALL_HOSTS) return; Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- Sony Network and Software Technology Center Europe (NSCE) [EMAIL PROTECTED] --- The Corporate Village, Da Vincilaan 7-D1 Voice +32-2-7008453 Fax +32-2-7008622 B-1935 Zaventem, Belgium - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
From: Geert Uytterhoeven [EMAIL PROTECTED] Date: Mon, 12 Mar 2007 11:02:43 +0100 (CET) On Tue, 6 Mar 2007, Jeff Garzik wrote: Jay Vosburgh (3): bonding: Improve IGMP join processing ip_mc_rejoin_group: Kill warning about unused variable `in_dev' when CONFIG_IP_MULTICAST is not set. Signed-off-by: Geert Uytterhoeven [EMAIL PROTECTED] Applied, thanks Geert. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/3c59x.c | 28 - drivers/net/mv643xx_eth.c | 10 -- drivers/net/myri10ge/myri10ge.c | 42 +-- drivers/net/netxen/netxen_nic_hw.c |5 ++- drivers/net/r8169.c | 14 drivers/net/sky2.c | 24 +-- drivers/net/tokenring/ibmtr.c | 25 +++ drivers/net/via-rhine.c | 32 +++- drivers/net/wan/z85230.c|2 +- drivers/net/wireless/bcm43xx/bcm43xx_main.c |6 ++-- drivers/net/wireless/bcm43xx/bcm43xx_phy.c | 10 +- drivers/net/wireless/bcm43xx/bcm43xx_wx.c | 10 +- 12 files changed, 145 insertions(+), 63 deletions(-) Alan Cox (1): z85230: Fix FIFO handling Brice Goglin (4): myri10ge: fix error checking and return value in myri10ge_allocate_rings myri10ge: use pci_map_page to prepare the dmatest buffer myri10ge: prevent 4k rdma on SGI TIOCE chipset myri10ge: add a wc_enabled flag to myri10ge_priv Dale Farnsworth (1): mv643xx: Clear pending interrupts before calling request_irq Francois Romieu (2): r8169: revert bogus BMCR reset r8169: fix a race between PCI probe and dev_open Joerg Sommer (1): bcm43xx: Fix bug in frequency to channel conversion Larry Finger (1): bcm43xx: Fix errors in specs to code translation in B6PHY init Pavel Roskin (1): bcm43xx: Fix assertion failures in interrupt handler Ralf Baechle (3): netxen: fix warnings 3c59x: Fix several modpost warnings ibmtr: Drain rich supply of modpost warnings. Roger Luethi (1): via-rhine: set avoid_D3 for broken BIOSes Stephen Hemminger (1): sky2: turn off Rx checksum on bad hardware diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 7299577..b406ecf 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -858,19 +858,7 @@ static struct eisa_device_id vortex_eisa_ids[] = { }; MODULE_DEVICE_TABLE(eisa, vortex_eisa_ids); -static int vortex_eisa_probe(struct device *device); -static int vortex_eisa_remove(struct device *device); - -static struct eisa_driver vortex_eisa_driver = { - .id_table = vortex_eisa_ids, - .driver = { - .name= 3c59x, - .probe = vortex_eisa_probe, - .remove = vortex_eisa_remove - } -}; - -static int vortex_eisa_probe(struct device *device) +static int __init vortex_eisa_probe(struct device *device) { void __iomem *ioaddr; struct eisa_device *edev; @@ -893,7 +881,7 @@ static int vortex_eisa_probe(struct device *device) return 0; } -static int vortex_eisa_remove(struct device *device) +static int __devexit vortex_eisa_remove(struct device *device) { struct eisa_device *edev; struct net_device *dev; @@ -918,7 +906,17 @@ static int vortex_eisa_remove(struct device *device) free_netdev(dev); return 0; } -#endif + +static struct eisa_driver vortex_eisa_driver = { + .id_table = vortex_eisa_ids, + .driver = { + .name= 3c59x, + .probe = vortex_eisa_probe, + .remove = __devexit_p(vortex_eisa_remove) + } +}; + +#endif /* CONFIG_EISA */ /* returns count found (= 0), or negative on error */ static int __init vortex_eisa_init(void) diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 9ba21e0..1ee27c3 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c @@ -787,6 +787,12 @@ static int mv643xx_eth_open(struct net_device *dev) unsigned int size; int err; + /* Clear any pending ethernet port interrupts */ + mv_write(MV643XX_ETH_INTERRUPT_CAUSE_REG(port_num), 0); + mv_write(MV643XX_ETH_INTERRUPT_CAUSE_EXTEND_REG(port_num), 0); + /* wait for previous write to complete */ + mv_read (MV643XX_ETH_INTERRUPT_CAUSE_EXTEND_REG(port_num)); + err = request_irq(dev-irq, mv643xx_eth_int_handler, IRQF_SHARED | IRQF_SAMPLE_RANDOM, dev-name, dev); if (err) { @@ -875,10 +881,6 @@ static int mv643xx_eth_open(struct net_device *dev) mv643xx_eth_rx_refill_descs(dev); /* Fill RX ring with skb's */ - /* Clear any pending ethernet port interrupts */ - mv_write(MV643XX_ETH_INTERRUPT_CAUSE_REG(port_num), 0); - mv_write(MV643XX_ETH_INTERRUPT_CAUSE_EXTEND_REG(port_num), 0); - eth_port_start(dev); /* Interrupt Coalescing */ diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index b05dc6e..ac02b3b 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -181,6 +181,7 @@
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: arch/mips/momentum/jaguar_atx/platform.c |8 +- arch/mips/momentum/ocelot_3/platform.c|8 +- arch/mips/momentum/ocelot_c/platform.c|4 + arch/powerpc/platforms/chrp/pegasos_eth.c |2 + arch/ppc/syslib/mv64x60.c | 12 ++- drivers/net/3c59x.c |8 +- drivers/net/bonding/bond_main.c | 86 + drivers/net/mv643xx_eth.c | 53 drivers/net/natsemi.c | 24 +++- drivers/net/pcnet32.c |4 +- drivers/net/sis900.c | 10 +- drivers/net/tulip/de2104x.c |6 +- drivers/net/tulip/dmfe.c | 204 +++- drivers/net/ucc_geth.c| 17 ++- include/linux/igmp.h |2 + include/linux/mv643xx.h |1 + net/ipv4/igmp.c | 23 17 files changed, 302 insertions(+), 170 deletions(-) Andrew Morton (2): revert drivers/net/tulip/dmfe: support basic carrier detection sis900 warning fixes Dale Farnsworth (1): mv643xx_eth: Place explicit port number in mv643xx_eth_platform_data Dmitriy Monakhov (1): 3c59x: Handle pci_enable_device() failure while resuming Don Fry (1): pcnet32: Fix PCnet32 performance bug on non-coherent architecutres Jay Vosburgh (3): bonding: fix double dev_add_pack bonding: only receive ARPs for us bonding: Improve IGMP join processing Li Yang (2): ucc_geth: Fix BD processing ucc_geth: returns NETDEV_TX_BUSY when BD ring is full Maxim Levitsky (3): dmfe: trivial/spelling fixes dmfe: fix two bugs dmfe: Fix link detection Prarit Bhargava (1): __devinit __devexit cleanups for de2104x driver Sergei Shtylyov (1): natsemi: netpoll fixes diff --git a/arch/mips/momentum/jaguar_atx/platform.c b/arch/mips/momentum/jaguar_atx/platform.c index 771e55f..5618448 100644 --- a/arch/mips/momentum/jaguar_atx/platform.c +++ b/arch/mips/momentum/jaguar_atx/platform.c @@ -48,6 +48,8 @@ static struct resource mv64x60_eth0_resources[] = { }; static struct mv643xx_eth_platform_data eth0_pd = { + .port_number= 0, + .tx_sram_addr = MV_SRAM_BASE_ETH0, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -77,6 +79,8 @@ static struct resource mv64x60_eth1_resources[] = { }; static struct mv643xx_eth_platform_data eth1_pd = { + .port_number= 1, + .tx_sram_addr = MV_SRAM_BASE_ETH1, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -105,7 +109,9 @@ static struct resource mv64x60_eth2_resources[] = { }, }; -static struct mv643xx_eth_platform_data eth2_pd; +static struct mv643xx_eth_platform_data eth2_pd = { + .port_number= 2, +}; static struct platform_device eth2_device = { .name = MV643XX_ETH_NAME, diff --git a/arch/mips/momentum/ocelot_3/platform.c b/arch/mips/momentum/ocelot_3/platform.c index b80733f..44e4c3f 100644 --- a/arch/mips/momentum/ocelot_3/platform.c +++ b/arch/mips/momentum/ocelot_3/platform.c @@ -48,6 +48,8 @@ static struct resource mv64x60_eth0_resources[] = { }; static struct mv643xx_eth_platform_data eth0_pd = { + .port_number= 0, + .tx_sram_addr = MV_SRAM_BASE_ETH0, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -77,6 +79,8 @@ static struct resource mv64x60_eth1_resources[] = { }; static struct mv643xx_eth_platform_data eth1_pd = { + .port_number= 1, + .tx_sram_addr = MV_SRAM_BASE_ETH1, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -105,7 +109,9 @@ static struct resource mv64x60_eth2_resources[] = { }, }; -static struct mv643xx_eth_platform_data eth2_pd; +static struct mv643xx_eth_platform_data eth2_pd = { + .port_number= 2, +}; static struct platform_device eth2_device = { .name = MV643XX_ETH_NAME, diff --git a/arch/mips/momentum/ocelot_c/platform.c b/arch/mips/momentum/ocelot_c/platform.c index f7cd303..7780aa0 100644 --- a/arch/mips/momentum/ocelot_c/platform.c +++ b/arch/mips/momentum/ocelot_c/platform.c @@ -47,6 +47,8 @@ static struct resource mv64x60_eth0_resources[] = { }; static struct mv643xx_eth_platform_data eth0_pd = { + .port_number= 0, + .tx_sram_addr = MV_SRAM_BASE_ETH0, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -76,6 +78,8 @@ static struct resource mv64x60_eth1_resources[] = { }; static struct mv643xx_eth_platform_data eth1_pd = { + .port_number
Re: [git patches] net driver fixes
On Thu, 1 Mar 2007, Kok, Auke wrote: Linus Torvalds wrote: Ok, here's an interesting one: my e1000 card no longer worked for a while. The green link-light blinks on/off once a second, and in time to that, my dmesg fills up with an endless supply of e1000: eth0: e1000_watchdog: NIC Link is Down e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: None e1000: eth0: e1000_watchdog: 10/100 speed: disabling TSO and networking obviously doesn't actually work. Just out of curiosity, which e1000 chipset+motherboard are you running this on? The kernel prints out: e1000: :00:19.0: e1000_probe: (PCI Express:2.5Gb/s:Width x1) 00:16:76:c7:eb:fe e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection and lspci says: 00:19.0 Ethernet controller: Intel Corporation 82566DM Gigabit Network Connection (rev 02) Subsystem: Intel Corporation Unknown device 0001 Flags: bus master, fast devsel, latency 0, IRQ 506 Memory at e040 (32-bit, non-prefetchable) [size=128K] Memory at e0424000 (32-bit, non-prefetchable) [size=4K] I/O ports at 20c0 [size=32] Capabilities: access denied 00: 86 80 4a 10 07 04 10 00 02 00 00 02 00 00 00 00 10: 00 00 40 e0 00 40 42 e0 c1 20 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 01 00 30: 00 00 00 00 c8 00 00 00 00 00 00 00 0b 01 00 00 It's an Intel system (Host bridge: Intel Corporation 82Q963/Q965) with integrated graphics: PCI ID 8086:2990 (rev 02) for the host bridge. DMI info isn't very interesting, but it's an all-Intel board: OEM-specific Type Strings: Intel_ASF Intel_ASF_001 .. Base Board Information Manufacturer: Intel Corporation Product Name: DQ965GF Version: AAD41676-305 Serial Number: BQGF635009R2 ... BIOS Information Vendor: Intel Corp. Version: CO96510J.86A.4462.2006.0804.2059 Release Date: 08/04/2006 so it's all-intel chipset, all-intel board, and all-intel BIOS ;) there have been problems reported with AMT2 on several chipsets (AMT2 is not supported under linux, unlike AMT1), and having it enabled in the BIOS produces this phenomenon. Is there some way to at least disable AMT2 from the Linux driver (ie I assume this is some issue of Intel not documenting it all - but maybe you can add a turn off that bit to the affected chip). If I'm not the only one to see it, it's obviously not just my personal ethernet switch bug, but apparently the e1000 becoming confused by some link detection event (and powering down the switch probably just gets it out of its confusion). Linus - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Linus Torvalds wrote: On Thu, 1 Mar 2007, Kok, Auke wrote: and lspci says: 00:19.0 Ethernet controller: Intel Corporation 82566DM Gigabit Network Connection (rev 02) DMI info isn't very interesting, but it's an all-Intel board: so it's all-intel chipset, all-intel board, and all-intel BIOS ;) It's like the devil plays with it. We just discussed adding a piece of text about this issue to our README. there have been problems reported with AMT2 on several chipsets (AMT2 is not supported under linux, unlike AMT1), and having it enabled in the BIOS produces this phenomenon. Is there some way to at least disable AMT2 from the Linux driver (ie I assume this is some issue of Intel not documenting it all - but maybe you can add a turn off that bit to the affected chip). Our suggestion is (IOW will be in the README) to turn AMT2 off completely in the BIOS, but I'll investigate if your suggestion is possible. It may be another workaround but this one indeed hurts. If I'm not the only one to see it, it's obviously not just my personal ethernet switch bug, but apparently the e1000 becoming confused by some link detection event (and powering down the switch probably just gets it out of its confusion). No, this fits the description perfectly of this issue. I'll get right on it and owe you a patch for the `e1000: not ready for irq` problem too, which seems to hold out after tests... Cheers, Auke - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Fixes du jour. Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: arch/mips/jmr3927/rbhma3100/setup.c |4 - arch/mips/momentum/jaguar_atx/platform.c| 20 +--- arch/mips/momentum/ocelot_3/platform.c | 20 +--- arch/mips/momentum/ocelot_c/platform.c | 12 +-- drivers/net/cxgb3/version.h |2 +- drivers/net/mv643xx_eth.c |2 +- drivers/net/mv643xx_eth.h |4 +- drivers/net/myri10ge/myri10ge.c | 22 ++-- drivers/net/netxen/netxen_nic.h |4 +- drivers/net/netxen/netxen_nic_ethtool.c | 144 +-- drivers/net/netxen/netxen_nic_hw.c |5 +- drivers/net/netxen/netxen_nic_init.c| 23 +++-- drivers/net/netxen/netxen_nic_main.c| 13 +-- drivers/net/netxen/netxen_nic_phan_reg.h|3 + drivers/net/qla3xxx.c |2 +- drivers/net/tc35815.c | 13 --- drivers/net/tulip/de2104x.c |2 +- drivers/net/tulip/tulip_core.c |2 +- drivers/net/wireless/bcm43xx/bcm43xx_main.c |5 +- include/linux/mv643xx.h |2 +- 20 files changed, 87 insertions(+), 217 deletions(-) Brice Goglin (1): myri10ge: fix copyright and license Dale Farnsworth (1): mv643xx_eth: move mac_addr inside mv643xx_eth_platform_data Dave Jones (1): Fix mv643xx_eth compilation. Divy Le Ray (1): cxgb3 - Tag driver version Jeff Garzik (1): [netdrvr] tulip, de2104x: fix typo: s/__sparc_/__sparc__/ Linsys Contractor Mithlesh Thukral (2): NetXen: Updates, removal of unsupported features and minor bug fixes. NetXen: Fix second rmmod failure observed on PowerPC machines. Ralf Baechle (1): jmr3927: do not call tc35815_killall(). Ron Mercer (1): qla3xxx: bugfix for line omitted in previous patch. Stefano Brivio (1): bcm43xx: fix for 4309 diff --git a/arch/mips/jmr3927/rbhma3100/setup.c b/arch/mips/jmr3927/rbhma3100/setup.c index 7ca3d6d..ecabe5b 100644 --- a/arch/mips/jmr3927/rbhma3100/setup.c +++ b/arch/mips/jmr3927/rbhma3100/setup.c @@ -137,10 +137,6 @@ int jmr3927_ccfg_toeon = 0; static inline void do_reset(void) { -#ifdef CONFIG_TC35815 - extern void tc35815_killall(void); - tc35815_killall(); -#endif #if 1 /* Resetting PCI bus */ jmr3927_ioc_reg_out(0, JMR3927_IOC_RESET_ADDR); jmr3927_ioc_reg_out(JMR3927_IOC_RESET_PCI, JMR3927_IOC_RESET_ADDR); diff --git a/arch/mips/momentum/jaguar_atx/platform.c b/arch/mips/momentum/jaguar_atx/platform.c index 3df36ed..771e55f 100644 --- a/arch/mips/momentum/jaguar_atx/platform.c +++ b/arch/mips/momentum/jaguar_atx/platform.c @@ -47,11 +47,7 @@ static struct resource mv64x60_eth0_resources[] = { }, }; -static char eth0_mac_addr[ETH_ALEN]; - static struct mv643xx_eth_platform_data eth0_pd = { - .mac_addr = eth0_mac_addr, - .tx_sram_addr = MV_SRAM_BASE_ETH0, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -80,11 +76,7 @@ static struct resource mv64x60_eth1_resources[] = { }, }; -static char eth1_mac_addr[ETH_ALEN]; - static struct mv643xx_eth_platform_data eth1_pd = { - .mac_addr = eth1_mac_addr, - .tx_sram_addr = MV_SRAM_BASE_ETH1, .tx_sram_size = MV_SRAM_TXRING_SIZE, .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, @@ -113,11 +105,7 @@ static struct resource mv64x60_eth2_resources[] = { }, }; -static char eth2_mac_addr[ETH_ALEN]; - -static struct mv643xx_eth_platform_data eth2_pd = { - .mac_addr = eth2_mac_addr, -}; +static struct mv643xx_eth_platform_data eth2_pd; static struct platform_device eth2_device = { .name = MV643XX_ETH_NAME, @@ -200,9 +188,9 @@ static int __init mv643xx_eth_add_pds(void) int ret; get_mac(mac); - eth_mac_add(eth0_mac_addr, mac, 0); - eth_mac_add(eth1_mac_addr, mac, 1); - eth_mac_add(eth2_mac_addr, mac, 2); + eth_mac_add(eth0_pd.mac_addr, mac, 0); + eth_mac_add(eth1_pd.mac_addr, mac, 1); + eth_mac_add(eth2_pd.mac_addr, mac, 2); ret = platform_add_devices(mv643xx_eth_pd_devs, ARRAY_SIZE(mv643xx_eth_pd_devs)); diff --git a/arch/mips/momentum/ocelot_3/platform.c b/arch/mips/momentum/ocelot_3/platform.c index 024aef2..b80733f 100644 --- a/arch/mips/momentum/ocelot_3/platform.c +++ b/arch/mips/momentum/ocelot_3/platform.c @@ -47,11 +47,7 @@ static struct resource mv64x60_eth0_resources[] = { }, }; -static char eth0_mac_addr[ETH_ALEN]; - static struct mv643xx_eth_platform_data eth0_pd = { - .mac_addr = eth0_mac_addr, - .tx_sram_addr = MV_SRAM_BASE_ETH0, .tx_sram_size = MV_SRAM_TXRING_SIZE,
Re: [git patches] net driver fixes
Ok, here's an interesting one: my e1000 card no longer worked for a while. The green link-light blinks on/off once a second, and in time to that, my dmesg fills up with an endless supply of e1000: eth0: e1000_watchdog: NIC Link is Down e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: None e1000: eth0: e1000_watchdog: 10/100 speed: disabling TSO and networking obviously doesn't actually work. I tried to do bisection, but my log made no sense, since it seemed to say that the problem was introduced between git commits 2442d310 and bff288c1, and there aren't even any commits to drivers/net/ in that range! SO... It seems to be that what actually happened is that my switch got confused (I ended up just power-cycling the switch when I hit the impossible situation, and that seems to be what made it start working again, rather than any kernel changes due to bisection ;) Regardless, the spam the logs every second is a *bad* idea. I'll try to see if I can re-create the problem (probably not), but I thought I'd report this message spamming regardless. If there really is some link problem, no way do I want to see a message about it every second for all eternity. Hmm? Does this once a second link issue ring any bells for anybody? Suggested fixes? I realize people do want to know about link problems, but that was a bit excessive and since it happened with a reboot, I thought it was a kernel bug (it may still be - I'll have to try to recreate it, but my suspicion right now is that the reboot just caused some noise and/or link renegotiation on the ethernet link that was what actually confused my switch). Linus - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
On 3/1/07, Linus Torvalds [EMAIL PROTECTED] wrote: Ok, here's an interesting one: my e1000 card no longer worked for a while. The green link-light blinks on/off once a second, and in time to that, my dmesg fills up with an endless supply of e1000: eth0: e1000_watchdog: NIC Link is Down e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: None e1000: eth0: e1000_watchdog: 10/100 speed: disabling TSO and networking obviously doesn't actually work. I tried to do bisection, but my log made no sense, since it seemed to say that the problem was introduced between git commits 2442d310 and bff288c1, and there aren't even any commits to drivers/net/ in that range! SO... It seems to be that what actually happened is that my switch got confused (I ended up just power-cycling the switch when I hit the impossible situation, and that seems to be what made it start working again, rather than any kernel changes due to bisection ;) Regardless, the spam the logs every second is a *bad* idea. I'll try to see if I can re-create the problem (probably not), but I thought I'd report this message spamming regardless. If there really is some link problem, no way do I want to see a message about it every second for all eternity. Hmm? Does this once a second link issue ring any bells for anybody? Suggested fixes? I realize people do want to know about link problems, but that was a bit excessive and since it happened with a reboot, I thought it was a kernel bug (it may still be - I'll have to try to recreate it, but my suspicion right now is that the reboot just caused some noise and/or link renegotiation on the ethernet link that was what actually confused my switch). I have seen this occasionally with the e1000 on Xscale IOP development boards. The driver prints the up/down messages and makes no progress. I can also confirm that resetting the switch (SMC8505T) fixed things for me. It might be nice to just print e1000 link can not be established try resetting your switch? after some time. It's not clear what the steps are to reproduce this, and it doesn't happen frequently enough to be a show stopper in my environment. The IOP boards in the lab typically run an NFS root and are often power cycled without running shutdown. So at least an I see it too for what it's worth. Linus -- Dan - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Linus Torvalds wrote: Ok, here's an interesting one: my e1000 card no longer worked for a while. The green link-light blinks on/off once a second, and in time to that, my dmesg fills up with an endless supply of e1000: eth0: e1000_watchdog: NIC Link is Down e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: None e1000: eth0: e1000_watchdog: 10/100 speed: disabling TSO and networking obviously doesn't actually work. Just out of curiosity, which e1000 chipset+motherboard are you running this on? there have been problems reported with AMT2 on several chipsets (AMT2 is not supported under linux, unlike AMT1), and having it enabled in the BIOS produces this phenomenon. I have to dig up which nic was affected, don't know by heart. Cheers, Auke - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/e100.c |7 +-- drivers/net/netxen/netxen_nic.h | 136 +++ drivers/net/netxen/netxen_nic_ethtool.c | 22 +++--- drivers/net/netxen/netxen_nic_hw.c | 43 -- drivers/net/netxen/netxen_nic_hw.h | 74 +- drivers/net/netxen/netxen_nic_init.c| 15 ++-- drivers/net/netxen/netxen_nic_isr.c |4 +- drivers/net/netxen/netxen_nic_main.c|8 +- drivers/net/netxen/netxen_nic_niu.c | 106 drivers/net/spider_net.c|2 + 10 files changed, 199 insertions(+), 218 deletions(-) Al Viro (1): netxen patches (trivial sparse annotations) Auke Kok (1): e100: fix napi ifdefs removing needed code Jens Osterkamp (1): spidernet : fix memory leak in spider_net_stop diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 3208dac..0cefef5 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c @@ -2718,14 +2718,12 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state) struct net_device *netdev = pci_get_drvdata(pdev); struct nic *nic = netdev_priv(netdev); -#ifdef CONFIG_E100_NAPI if (netif_running(netdev)) netif_poll_disable(nic-netdev); -#endif del_timer_sync(nic-watchdog); netif_carrier_off(nic-netdev); - netif_device_detach(netdev); + pci_save_state(pdev); if ((nic-flags wol_magic) | e100_asf(nic)) { @@ -2761,16 +2759,13 @@ static int e100_resume(struct pci_dev *pdev) } #endif /* CONFIG_PM */ - static void e100_shutdown(struct pci_dev *pdev) { struct net_device *netdev = pci_get_drvdata(pdev); struct nic *nic = netdev_priv(netdev); -#ifdef CONFIG_E100_NAPI if (netif_running(netdev)) netif_poll_disable(nic-netdev); -#endif del_timer_sync(nic-watchdog); netif_carrier_off(nic-netdev); diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 59324b1..e8598b8 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h @@ -239,49 +239,39 @@ extern unsigned long long netxen_dma_mask; typedef u32 netxen_ctx_msg; -#define _netxen_set_bits(config_word, start, bits, val){\ - unsigned long long mask = (((1ULL (bits)) - 1) (start)); \ - unsigned long long value = (val); \ - (config_word) = ~mask; \ - (config_word) |= (((value) (start)) mask); \ -} - #define netxen_set_msg_peg_id(config_word, val)\ - _netxen_set_bits(config_word, 0, 2, val) + ((config_word) = ~3, (config_word) |= val 3) #define netxen_set_msg_privid(config_word) \ - set_bit(2, (unsigned long*)config_word) + ((config_word) |= 1 2) #define netxen_set_msg_count(config_word, val) \ - _netxen_set_bits(config_word, 3, 15, val) + ((config_word) = ~(0x7fff3), (config_word) |= (val 0x7fff) 3) #define netxen_set_msg_ctxid(config_word, val) \ - _netxen_set_bits(config_word, 18, 10, val) + ((config_word) = ~(0x3ff18), (config_word) |= (val 0x3ff) 18) #define netxen_set_msg_opcode(config_word, val)\ - _netxen_set_bits(config_word, 28, 4, val) + ((config_word) = ~(0xf24), (config_word) |= (val 0xf) 24) struct netxen_rcv_context { - u32 rcv_ring_addr_lo; - u32 rcv_ring_addr_hi; - u32 rcv_ring_size; - u32 rsrvd; + __le64 rcv_ring_addr; + __le32 rcv_ring_size; + __le32 rsrvd; }; struct netxen_ring_ctx { /* one command ring */ - u64 cmd_consumer_offset; - u32 cmd_ring_addr_lo; - u32 cmd_ring_addr_hi; - u32 cmd_ring_size; - u32 rsrvd; + __le64 cmd_consumer_offset; + __le64 cmd_ring_addr; + __le32 cmd_ring_size; + __le32 rsrvd; /* three receive rings */ struct netxen_rcv_context rcv_ctx[3]; /* one status ring */ - u32 sts_ring_addr_lo; - u32 sts_ring_addr_hi; - u32 sts_ring_size; + __le64 sts_ring_addr; + __le32 sts_ring_size; - u32 ctx_id; + __le32 ctx_id; } __attribute__ ((aligned(64))); /* @@ -305,81 +295,85 @@ struct netxen_ring_ctx { ((cmd_desc)-port_ctxid |= ((var) 0x0F)) #define netxen_set_cmd_desc_flags(cmd_desc, val) \ - _netxen_set_bits((cmd_desc)-flags_opcode, 0, 7, val) + ((cmd_desc)-flags_opcode = ~cpu_to_le16(0x7f), \ + (cmd_desc)-flags_opcode |= cpu_to_le16((val) 0x7f)) #define netxen_set_cmd_desc_opcode(cmd_desc, val) \ - _netxen_set_bits((cmd_desc)-flags_opcode, 7, 6, val) + ((cmd_desc)-flags_opcode = ~cpu_to_le16(0x3f7), \ + (cmd_desc)-flags_opcode |= cpu_to_le16((val) (0x3f7))) #define
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/82596.c |7 +++-- drivers/net/b44.c | 52 ++-- drivers/net/bonding/bonding.h |7 +++-- drivers/net/e100.c|2 + drivers/net/ehea/ehea.h |2 +- drivers/net/ehea/ehea_main.c | 31 +++- drivers/net/fs_enet/mac-fec.c | 13 +++--- drivers/net/fs_enet/mac-scc.c |6 +++- drivers/net/ifb.c |3 +- drivers/net/phy/fixed.c |2 +- 10 files changed, 84 insertions(+), 41 deletions(-) Al Viro (1): b44: src_desc-addr is little-endian Andrew Morton (1): 82596 warning fixes Andy Gospodarek (1): bonding: ARP monitoring broken on x86_64 Auke Kok (1): e100: fix irq leak on suspend/resume Dmitriy Monakhov (1): Broadcom 4400 resume small fix Mariusz Kozlowski (1): net: ifb error path loop fix Michael Chan (1): b44: Fix frequent link changes Thomas Klein (2): ehea: Fixed wrong jumbo frames status query ehea: Fixed missing tasklet_kill() call Vitaly Bordug (1): FS_ENET: OF-related fixup for FEC and SCC MAC's diff --git a/drivers/net/82596.c b/drivers/net/82596.c index 8236f26..640d7ca 100644 --- a/drivers/net/82596.c +++ b/drivers/net/82596.c @@ -1066,8 +1066,8 @@ static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev) short length = skb-len; dev-trans_start = jiffies; - DEB(DEB_STARTTX,printk(KERN_DEBUG %s: i596_start_xmit(%x,%x) called\n, dev-name, - skb-len, (unsigned int)skb-data)); + DEB(DEB_STARTTX,printk(KERN_DEBUG %s: i596_start_xmit(%x,%p) called\n, + dev-name, skb-len, skb-data)); if (skb-len ETH_ZLEN) { if (skb_padto(skb, ETH_ZLEN)) @@ -1246,7 +1246,8 @@ struct net_device * __init i82596_probe(int unit) dev-priv = (void *)(dev-mem_start); lp = dev-priv; - DEB(DEB_INIT,printk(KERN_DEBUG %s: lp at 0x%08lx (%d bytes), lp-scb at 0x%08lx\n, + DEB(DEB_INIT,printk(KERN_DEBUG %s: lp at 0x%08lx (%zd bytes), + lp-scb at 0x%08lx\n, dev-name, (unsigned long)lp, sizeof(struct i596_private), (unsigned long)lp-scb)); memset((void *) lp, 0, sizeof(struct i596_private)); diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 5eb2ec6..303a8d9 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -110,6 +110,11 @@ MODULE_DEVICE_TABLE(pci, b44_pci_tbl); static void b44_halt(struct b44 *); static void b44_init_rings(struct b44 *); + +#define B44_FULL_RESET 1 +#define B44_FULL_RESET_SKIP_PHY2 +#define B44_PARTIAL_RESET 3 + static void b44_init_hw(struct b44 *, int); static int dma_desc_align_mask; @@ -752,7 +757,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) dest_idx * sizeof(dest_desc), DMA_BIDIRECTIONAL); - pci_dma_sync_single_for_device(bp-pdev, src_desc-addr, + pci_dma_sync_single_for_device(bp-pdev, le32_to_cpu(src_desc-addr), RX_PKT_BUF_SZ, PCI_DMA_FROMDEVICE); } @@ -884,7 +889,7 @@ static int b44_poll(struct net_device *netdev, int *budget) spin_lock_irqsave(bp-lock, flags); b44_halt(bp); b44_init_rings(bp); - b44_init_hw(bp, 1); + b44_init_hw(bp, B44_FULL_RESET_SKIP_PHY); netif_wake_queue(bp-dev); spin_unlock_irqrestore(bp-lock, flags); done = 1; @@ -954,7 +959,7 @@ static void b44_tx_timeout(struct net_device *dev) b44_halt(bp); b44_init_rings(bp); - b44_init_hw(bp, 1); + b44_init_hw(bp, B44_FULL_RESET); spin_unlock_irq(bp-lock); @@ -1071,7 +1076,7 @@ static int b44_change_mtu(struct net_device *dev, int new_mtu) b44_halt(bp); dev-mtu = new_mtu; b44_init_rings(bp); - b44_init_hw(bp, 1); + b44_init_hw(bp, B44_FULL_RESET); spin_unlock_irq(bp-lock); b44_enable_ints(bp); @@ -1368,12 +1373,12 @@ static int b44_set_mac_addr(struct net_device *dev, void *p) * packet processing. Invoked with bp-lock held. */ static void __b44_set_rx_mode(struct net_device *); -static void b44_init_hw(struct b44 *bp, int full_reset) +static void b44_init_hw(struct b44 *bp, int reset_kind) { u32 val; b44_chip_reset(bp); - if (full_reset) { + if (reset_kind == B44_FULL_RESET) { b44_phy_reset(bp); b44_setup_phy(bp); } @@ -1390,7 +1395,10 @@ static void b44_init_hw(struct b44 *bp, int
Re: [git patches] net driver fixes
Auke Kok wrote: Jeff Garzik wrote: Auke Kok wrote: Jeff Garzik wrote: Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus Jeff, is there a reason that you didn't pull the e1000 tree from us? I send you all the information 5 days ago, WITH the changes that you requested. I did pull the tree. The fixes were far more than just obvious one-liners, so they got pulled into #upstream. Forgive me for not seeing the 'pulled' message! I still don't see them in your tree on kernel.org either. Is it just slow again? hrm, no, at the time of your message everything has been mirrored out. So, WYSIWYG. I ACK'd your latest update of the patch series, so resend the pull info and I'll pull. Sorry about that. Jeff - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[git patches] net driver fixes
Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus to receive the following updates: drivers/net/8139cp.c|7 +- drivers/net/myri10ge/myri10ge.c | 23 - drivers/net/sis190.c|2 +- drivers/net/ucc_geth.c | 12 ++- drivers/net/ucc_geth_phy.c | 134 +-- drivers/net/wireless/bcm43xx/bcm43xx_main.c | 11 ++- 6 files changed, 103 insertions(+), 86 deletions(-) Brice Goglin (3): myri10ge: make wc_fifo usage load-time tunable myri10ge: check that we can get an irq myri10ge: update driver version to 1.2.0 Chris Lalancette (1): 8139cp: Don't blindly enable interrupts Francois Romieu (1): sis190: failure to set the MAC address from EEPROM Larry Finger (1): bcm43xx: Fix failure to deliver PCI-E interrupts Timur Tabi (2): Update ucc_geth.c for new workqueue structure Fix phy_read/write redefinition errors in ucc_geth_phy.c diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c index e2cb19b..6f93a76 100644 --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c @@ -765,17 +765,18 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev) struct cp_private *cp = netdev_priv(dev); unsigned entry; u32 eor, flags; + unsigned long intr_flags; #if CP_VLAN_TAG_USED u32 vlan_tag = 0; #endif int mss = 0; - spin_lock_irq(cp-lock); + spin_lock_irqsave(cp-lock, intr_flags); /* This is a hard error, log it. */ if (TX_BUFFS_AVAIL(cp) = (skb_shinfo(skb)-nr_frags + 1)) { netif_stop_queue(dev); - spin_unlock_irq(cp-lock); + spin_unlock_irqrestore(cp-lock, intr_flags); printk(KERN_ERR PFX %s: BUG! Tx Ring full when queue awake!\n, dev-name); return 1; @@ -908,7 +909,7 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev) if (TX_BUFFS_AVAIL(cp) = (MAX_SKB_FRAGS + 1)) netif_stop_queue(dev); - spin_unlock_irq(cp-lock); + spin_unlock_irqrestore(cp-lock, intr_flags); cpw8(TxPoll, NormalTxPoll); dev-trans_start = jiffies; diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 07cf574..61cbd4a 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -71,7 +71,7 @@ #include myri10ge_mcp.h #include myri10ge_mcp_gen_header.h -#define MYRI10GE_VERSION_STR 1.1.0 +#define MYRI10GE_VERSION_STR 1.2.0 MODULE_DESCRIPTION(Myricom 10G driver (10GbE)); MODULE_AUTHOR(Maintainer: [EMAIL PROTECTED]); @@ -274,6 +274,10 @@ static int myri10ge_fill_thresh = 256; module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(myri10ge_fill_thresh, Number of empty rx slots allowed\n); +static int myri10ge_wcfifo = 1; +module_param(myri10ge_wcfifo, int, S_IRUGO); +MODULE_PARM_DESC(myri10ge_wcfifo, Enable WC Fifo when WC is enabled\n); + #define MYRI10GE_FW_OFFSET 1024*1024 #define MYRI10GE_HIGHPART_TO_U32(X) \ (sizeof (X) == 8) ? ((u32)((u64)(X) 32)) : (0) @@ -1714,7 +1718,7 @@ static int myri10ge_open(struct net_device *dev) goto abort_with_irq; } - if (mgp-mtrr = 0) { + if (myri10ge_wcfifo mgp-mtrr = 0) { mgp-tx.wc_fifo = (u8 __iomem *) mgp-sram + MXGEFW_ETH_SEND_4; mgp-rx_small.wc_fifo = (u8 __iomem *) mgp-sram + MXGEFW_ETH_RECV_SMALL; @@ -2878,7 +2882,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) netdev-hard_start_xmit = myri10ge_xmit; netdev-get_stats = myri10ge_get_stats; netdev-base_addr = mgp-iomem_base; - netdev-irq = pdev-irq; netdev-change_mtu = myri10ge_change_mtu; netdev-set_multicast_list = myri10ge_set_multicast_list; netdev-set_mac_address = myri10ge_set_mac_address; @@ -2888,6 +2891,15 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) netdev-poll = myri10ge_poll; netdev-weight = myri10ge_napi_weight; + /* make sure we can get an irq, and that MSI can be +* setup (if available). Also ensure netdev-irq +* is set to correct value if MSI is enabled */ + status = myri10ge_request_irq(mgp); + if (status != 0) + goto abort_with_firmware; + netdev-irq = pdev-irq; + myri10ge_free_irq(mgp); + /* Save configuration space to be restored if the * nic resets due to a parity error */ pci_save_state(pdev); @@ -2903,8 +2915,9 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) dev_err(pdev-dev, register_netdev failed: %d\n, status); goto abort_with_state;
Re: [git patches] net driver fixes
Jeff Garzik wrote: Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus Jeff, is there a reason that you didn't pull the e1000 tree from us? I send you all the information 5 days ago, WITH the changes that you requested. Cheers, Auke - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [git patches] net driver fixes
Auke Kok wrote: Jeff Garzik wrote: Please pull from 'upstream-linus' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream-linus Jeff, is there a reason that you didn't pull the e1000 tree from us? I send you all the information 5 days ago, WITH the changes that you requested. I did pull the tree. The fixes were far more than just obvious one-liners, so they got pulled into #upstream. Given the past history of breakage during -rc from huge Intel fix patchsets, there's no way I'm going to push those fixes to Linus without plenty of testing in -mm first. Jeff - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html