diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-21 16:40:29 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-21 16:40:29 -0400 |
| commit | dcf234f3b0cbc4d2b73f5ee02405b117c5d77fbd (patch) | |
| tree | 1c2c3e2dbfcc709d6b5187ec311706aab76025c3 | |
| parent | 946b92437e550d6ed80213bf54a1f383e141aede (diff) | |
| parent | 5826cade4341a6298eb10d476dccc5f403ca7ad8 (diff) | |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (22 commits)
[PATCH] ibmveth: Fix index increment calculation
[PATCH] Fix timer race
[PATCH] Remove useless comment from sb1250
[PATCH] ucc_geth: changes to ucc_geth driver as a result of qe_lib changes and bugfixes
[PATCH] sky2: 88E803X transmit lockup
[PATCH] e1000: Reset all functions after a PCI error
[PATCH] WAN/pc300: handle, propagate minor errors
[PATCH] Update smc91x driver with ARM Versatile board info
[PATCH] wireless: WE-20 compatibility for ESSID and NICKN ioctls
[PATCH] zd1211rw: fix build-break caused by association race fix
[PATCH] sotftmac: fix a slab corruption in WEP restricted key association
[PATCH] airo: check if need to freeze
[PATCH] wireless: More WE-21 potential overflows...
[PATCH] zd1201: Possible NULL dereference
[PATCH] orinoco: fix WE-21 buffer overflow
[PATCH] airo.c: check returned values
[PATCH] bcm43xx-softmac: Fix system hang for x86-64 with >1GB RAM
[PATCH] bcm43xx-softmac: check returned value from pci_enable_device
[PATCH] softmac: Fix WX and association related races
[PATCH] bcm43xx: fix race condition in periodic work handler
...
29 files changed, 803 insertions, 622 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index ab92cc794c64..e2ed24918a58 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -2288,7 +2288,7 @@ config UGETH_TX_ON_DEMOND | |||
| 2288 | 2288 | ||
| 2289 | config UGETH_HAS_GIGA | 2289 | config UGETH_HAS_GIGA |
| 2290 | bool | 2290 | bool |
| 2291 | depends on UCC_GETH && MPC836x | 2291 | depends on UCC_GETH && PPC_MPC836x |
| 2292 | 2292 | ||
| 2293 | config MV643XX_ETH | 2293 | config MV643XX_ETH |
| 2294 | tristate "MV-643XX Ethernet support" | 2294 | tristate "MV-643XX Ethernet support" |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index ce0d35fe3947..fa849831d099 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
| @@ -4914,10 +4914,6 @@ static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev) | |||
| 4914 | pci_enable_wake(pdev, PCI_D3hot, 0); | 4914 | pci_enable_wake(pdev, PCI_D3hot, 0); |
| 4915 | pci_enable_wake(pdev, PCI_D3cold, 0); | 4915 | pci_enable_wake(pdev, PCI_D3cold, 0); |
| 4916 | 4916 | ||
| 4917 | /* Perform card reset only on one instance of the card */ | ||
| 4918 | if (PCI_FUNC (pdev->devfn) != 0) | ||
| 4919 | return PCI_ERS_RESULT_RECOVERED; | ||
| 4920 | |||
| 4921 | e1000_reset(adapter); | 4917 | e1000_reset(adapter); |
| 4922 | E1000_WRITE_REG(&adapter->hw, WUS, ~0); | 4918 | E1000_WRITE_REG(&adapter->hw, WUS, ~0); |
| 4923 | 4919 | ||
diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c index e963dbf816be..f56b00ee385e 100644 --- a/drivers/net/ioc3-eth.c +++ b/drivers/net/ioc3-eth.c | |||
| @@ -1017,7 +1017,7 @@ static void ioc3_init(struct net_device *dev) | |||
| 1017 | struct ioc3_private *ip = netdev_priv(dev); | 1017 | struct ioc3_private *ip = netdev_priv(dev); |
| 1018 | struct ioc3 *ioc3 = ip->regs; | 1018 | struct ioc3 *ioc3 = ip->regs; |
| 1019 | 1019 | ||
| 1020 | del_timer(&ip->ioc3_timer); /* Kill if running */ | 1020 | del_timer_sync(&ip->ioc3_timer); /* Kill if running */ |
| 1021 | 1021 | ||
| 1022 | ioc3_w_emcr(EMCR_RST); /* Reset */ | 1022 | ioc3_w_emcr(EMCR_RST); /* Reset */ |
| 1023 | (void) ioc3_r_emcr(); /* Flush WB */ | 1023 | (void) ioc3_r_emcr(); /* Flush WB */ |
| @@ -1081,7 +1081,7 @@ static int ioc3_close(struct net_device *dev) | |||
| 1081 | { | 1081 | { |
| 1082 | struct ioc3_private *ip = netdev_priv(dev); | 1082 | struct ioc3_private *ip = netdev_priv(dev); |
| 1083 | 1083 | ||
| 1084 | del_timer(&ip->ioc3_timer); | 1084 | del_timer_sync(&ip->ioc3_timer); |
| 1085 | 1085 | ||
| 1086 | netif_stop_queue(dev); | 1086 | netif_stop_queue(dev); |
| 1087 | 1087 | ||
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index f1c75751cab7..d132fe7d475e 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
| @@ -214,6 +214,7 @@ static struct pci_device_id rtl8169_pci_tbl[] = { | |||
| 214 | { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_2 }, | 214 | { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_2 }, |
| 215 | { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 }, | 215 | { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 }, |
| 216 | { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 }, | 216 | { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 }, |
| 217 | { PCI_DEVICE(0x1259, 0xc107), 0, 0, RTL_CFG_0 }, | ||
| 217 | { PCI_DEVICE(0x16ec, 0x0116), 0, 0, RTL_CFG_0 }, | 218 | { PCI_DEVICE(0x16ec, 0x0116), 0, 0, RTL_CFG_0 }, |
| 218 | { PCI_VENDOR_ID_LINKSYS, 0x1032, | 219 | { PCI_VENDOR_ID_LINKSYS, 0x1032, |
| 219 | PCI_ANY_ID, 0x0024, 0, 0, RTL_CFG_0 }, | 220 | PCI_ANY_ID, 0x0024, 0, 0, RTL_CFG_0 }, |
| @@ -2700,6 +2701,7 @@ static void rtl8169_down(struct net_device *dev) | |||
| 2700 | struct rtl8169_private *tp = netdev_priv(dev); | 2701 | struct rtl8169_private *tp = netdev_priv(dev); |
| 2701 | void __iomem *ioaddr = tp->mmio_addr; | 2702 | void __iomem *ioaddr = tp->mmio_addr; |
| 2702 | unsigned int poll_locked = 0; | 2703 | unsigned int poll_locked = 0; |
| 2704 | unsigned int intrmask; | ||
| 2703 | 2705 | ||
| 2704 | rtl8169_delete_timer(dev); | 2706 | rtl8169_delete_timer(dev); |
| 2705 | 2707 | ||
| @@ -2738,8 +2740,11 @@ core_down: | |||
| 2738 | * 2) dev->change_mtu | 2740 | * 2) dev->change_mtu |
| 2739 | * -> rtl8169_poll can not be issued again and re-enable the | 2741 | * -> rtl8169_poll can not be issued again and re-enable the |
| 2740 | * interruptions. Let's simply issue the IRQ down sequence again. | 2742 | * interruptions. Let's simply issue the IRQ down sequence again. |
| 2743 | * | ||
| 2744 | * No loop if hotpluged or major error (0xffff). | ||
| 2741 | */ | 2745 | */ |
| 2742 | if (RTL_R16(IntrMask)) | 2746 | intrmask = RTL_R16(IntrMask); |
| 2747 | if (intrmask && (intrmask != 0xffff)) | ||
| 2743 | goto core_down; | 2748 | goto core_down; |
| 2744 | 2749 | ||
| 2745 | rtl8169_tx_clear(tp); | 2750 | rtl8169_tx_clear(tp); |
diff --git a/drivers/net/sb1250-mac.c b/drivers/net/sb1250-mac.c index db2324939b69..1eae16b72b4b 100644 --- a/drivers/net/sb1250-mac.c +++ b/drivers/net/sb1250-mac.c | |||
| @@ -2903,7 +2903,7 @@ sbmac_init_module(void) | |||
| 2903 | 2903 | ||
| 2904 | dev = alloc_etherdev(sizeof(struct sbmac_softc)); | 2904 | dev = alloc_etherdev(sizeof(struct sbmac_softc)); |
| 2905 | if (!dev) | 2905 | if (!dev) |
| 2906 | return -ENOMEM; /* return ENOMEM */ | 2906 | return -ENOMEM; |
| 2907 | 2907 | ||
| 2908 | printk(KERN_DEBUG "sbmac: configuring MAC at %lx\n", port); | 2908 | printk(KERN_DEBUG "sbmac: configuring MAC at %lx\n", port); |
| 2909 | 2909 | ||
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 67ecd66f26d6..95efdb5bbbe1 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
| @@ -699,16 +699,10 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port) | |||
| 699 | 699 | ||
| 700 | } | 700 | } |
| 701 | 701 | ||
| 702 | /* Assign Ram Buffer allocation. | 702 | /* Assign Ram Buffer allocation in units of 64bit (8 bytes) */ |
| 703 | * start and end are in units of 4k bytes | 703 | static void sky2_ramset(struct sky2_hw *hw, u16 q, u32 start, u32 end) |
| 704 | * ram registers are in units of 64bit words | ||
| 705 | */ | ||
| 706 | static void sky2_ramset(struct sky2_hw *hw, u16 q, u8 startk, u8 endk) | ||
| 707 | { | 704 | { |
| 708 | u32 start, end; | 705 | pr_debug(PFX "q %d %#x %#x\n", q, start, end); |
| 709 | |||
| 710 | start = startk * 4096/8; | ||
| 711 | end = (endk * 4096/8) - 1; | ||
| 712 | 706 | ||
| 713 | sky2_write8(hw, RB_ADDR(q, RB_CTRL), RB_RST_CLR); | 707 | sky2_write8(hw, RB_ADDR(q, RB_CTRL), RB_RST_CLR); |
| 714 | sky2_write32(hw, RB_ADDR(q, RB_START), start); | 708 | sky2_write32(hw, RB_ADDR(q, RB_START), start); |
| @@ -717,7 +711,7 @@ static void sky2_ramset(struct sky2_hw *hw, u16 q, u8 startk, u8 endk) | |||
| 717 | sky2_write32(hw, RB_ADDR(q, RB_RP), start); | 711 | sky2_write32(hw, RB_ADDR(q, RB_RP), start); |
| 718 | 712 | ||
| 719 | if (q == Q_R1 || q == Q_R2) { | 713 | if (q == Q_R1 || q == Q_R2) { |
| 720 | u32 space = (endk - startk) * 4096/8; | 714 | u32 space = end - start + 1; |
| 721 | u32 tp = space - space/4; | 715 | u32 tp = space - space/4; |
| 722 | 716 | ||
| 723 | /* On receive queue's set the thresholds | 717 | /* On receive queue's set the thresholds |
| @@ -1199,19 +1193,16 @@ static int sky2_up(struct net_device *dev) | |||
| 1199 | 1193 | ||
| 1200 | sky2_mac_init(hw, port); | 1194 | sky2_mac_init(hw, port); |
| 1201 | 1195 | ||
| 1202 | /* Determine available ram buffer space (in 4K blocks). | 1196 | /* Determine available ram buffer space in qwords. */ |
| 1203 | * Note: not sure about the FE setting below yet | 1197 | ramsize = sky2_read8(hw, B2_E_0) * 4096/8; |
| 1204 | */ | ||
| 1205 | if (hw->chip_id == CHIP_ID_YUKON_FE) | ||
| 1206 | ramsize = 4; | ||
| 1207 | else | ||
| 1208 | ramsize = sky2_read8(hw, B2_E_0); | ||
| 1209 | 1198 | ||
| 1210 | /* Give transmitter one third (rounded up) */ | 1199 | if (ramsize > 6*1024/8) |
| 1211 | rxspace = ramsize - (ramsize + 2) / 3; | 1200 | rxspace = ramsize - (ramsize + 2) / 3; |
