1. 24 9月, 2010 1 次提交
  2. 17 9月, 2010 3 次提交
  3. 16 9月, 2010 2 次提交
    • M
      r8169: Handle rxfifo errors on 8168 chips · 801e147c
      Matthew Garrett 提交于
      The Thinkpad X100e seems to have some odd behaviour when the display is
      powered off - the onboard r8169 starts generating rxfifo overflow errors.
      The root cause of this has not yet been identified and may well be a
      hardware design bug on the platform, but r8169 should be more resiliant to
      this. This patch enables the rxfifo interrupt on 8168 devices and removes
      the MAC version check in the interrupt handler, and the machine no longer
      crashes when under network load while the screen turns off.
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      Acked-by: NFrancois Romieu <romieu@fr.zoreil.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      801e147c
    • D
      3c59x: Remove atomic context inside vortex_{set|get}_wol · 84176b7b
      Denis Kirjanov 提交于
      There is no need to use spinlocks in vortex_{set|get}_wol.
      This also fixes a bug:
      [  254.214993] 3c59x 0000:00:0d.0: PME# enabled
      [  254.215021] BUG: sleeping function called from invalid context at kernel/mutex.c:94
      [  254.215030] in_atomic(): 0, irqs_disabled(): 1, pid: 4875, name: ethtool
      [  254.215042] Pid: 4875, comm: ethtool Tainted: G        W   2.6.36-rc3+ #7
      [  254.215049] Call Trace:
      [  254.215050]  [] __might_sleep+0xb1/0xb6
      [  254.215050]  [] mutex_lock+0x17/0x30
      [  254.215050]  [] acpi_enable_wakeup_device_power+0x2b/0xb1
      [  254.215050]  [] acpi_pm_device_sleep_wake+0x42/0x7f
      [  254.215050]  [] acpi_pci_sleep_wake+0x5d/0x63
      [  254.215050]  [] platform_pci_sleep_wake+0x1d/0x20
      [  254.215050]  [] __pci_enable_wake+0x90/0xd0
      [  254.215050]  [] acpi_set_WOL+0x8e/0xf5 [3c59x]
      [  254.215050]  [] vortex_set_wol+0x4e/0x5e [3c59x]
      [  254.215050]  [] dev_ethtool+0x1cf/0xb61
      [  254.215050]  [] ? debug_mutex_free_waiter+0x45/0x4a
      [  254.215050]  [] ? __mutex_lock_common+0x204/0x20e
      [  254.215050]  [] ? __mutex_lock_slowpath+0x12/0x15
      [  254.215050]  [] ? mutex_lock+0x23/0x30
      [  254.215050]  [] dev_ioctl+0x42c/0x533
      [  254.215050]  [] ? _cond_resched+0x8/0x1c
      [  254.215050]  [] ? lock_page+0x1c/0x30
      [  254.215050]  [] ? page_address+0x15/0x7c
      [  254.215050]  [] ? filemap_fault+0x187/0x2c4
      [  254.215050]  [] sock_ioctl+0x1d4/0x1e0
      [  254.215050]  [] ? sock_ioctl+0x0/0x1e0
      [  254.215050]  [] vfs_ioctl+0x19/0x33
      [  254.215050]  [] do_vfs_ioctl+0x424/0x46f
      [  254.215050]  [] ? selinux_file_ioctl+0x3c/0x40
      [  254.215050]  [] sys_ioctl+0x40/0x5a
      [  254.215050]  [] sysenter_do_call+0x12/0x22
      
      vortex_set_wol protected with a spinlock, but nested  acpi_set_WOL acquires a mutex inside atomic context.
      Ethtool operations are already serialized by RTNL mutex, so it is safe to drop the locks.
      Signed-off-by: NDenis Kirjanov <dkirjanov@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      84176b7b
  4. 15 9月, 2010 3 次提交
  5. 14 9月, 2010 1 次提交
  6. 10 9月, 2010 1 次提交
    • D
      ipheth: remove incorrect devtype to WWAN · c9cedbba
      Dan Williams 提交于
      The 'wwan' devtype is meant for devices that require preconfiguration
      and *every* time setup before the ethernet interface can be used, like
      cellular modems which require a series of setup commands on serial ports
      or other mechanisms before the ethernet interface will handle packets.
      
      As ipheth only requires one-per-hotplug pairing setup with no
      preconfiguration (like APN, phone #, etc) and the network interface is
      usable at any time after that initial setup, remove the incorrect
      devtype wwan.
      Signed-off-by: NDan Williams <dcbw@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c9cedbba
  7. 09 9月, 2010 2 次提交
  8. 08 9月, 2010 5 次提交
    • D
      via-velocity: Turn scatter-gather support back off. · de2b96f1
      David S. Miller 提交于
      It causes all kinds of DMA API debugging assertions and
      all straight-forward attempts to fix it have failed.
      
      So turn off SG, and we'll tackle making this work
      properly in net-next-2.6
      Reported-by: NDave Jones <davej@redhat.com>
      Tested-by: NDave Jones <davej@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de2b96f1
    • M
      PATCH: b44 Handle RX FIFO overflow better (simplified) · 32737e93
      Mark Lord 提交于
      This patch is a simplified version of the original patch from James Courtier-Dutton.
      
      >From: James Courtier-Dutton
      >Subject: [PATCH] Fix b44 RX FIFO overflow recovery.
      >Date: Wednesday, June 30, 2010 - 1:11 pm
      >
      >This patch improves the recovery after a RX FIFO overflow on the b44
      >Ethernet NIC.
      >Before it would do a complete chip reset, resulting is loss of link
      >for a few seconds.
      >This patch improves this to do recovery in about 20ms without loss of link.
      >
      >Signed off by: James@superbug.co.uk
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      32737e93
    • B
      3c59x: Fix deadlock in vortex_error() · 89b12fab
      Ben Hutchings 提交于
      This fixes a bug introduced in commit
      de847272
      "3c59x: Use fine-grained locks for MII and windowed register access".
      
      vortex_interrupt() holds vp->window_lock over multiple register
      accesses to reduce locking overhead.  However it also needs to call
      vortex_error() sometimes, and that uses the regular functions for
      access to windowed registers, which will try to acquire window_lock
      again.
      
      Therefore, drop window_lock around the call to vortex_error() and set
      the window afterward reacquiring the lock.  Since vortex_error() may
      call vortex_rx(), which *does* require its caller to hold window_lock,
      lift that call up into vortex_interrupt().  This also removes the
      potential for calling vortex_rx() on a later-generation NIC.
      
      Reported-and-tested-by: Jens Schüßler <jgs@trash.net> [in Debian's 2.6.32]
      Signed-off-by: NBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      89b12fab
    • J
      bonding: Fix jiffies overflow problems (again) · cb32f2a0
      Jiri Bohac 提交于
      The time_before_eq()/time_after_eq() functions operate on unsigned
      long and only work if the difference between the two compared values
      is smaller than half the range of unsigned long (31 bits on i386).
      
      Some of the variables (slave->jiffies, dev->trans_start, dev->last_rx)
      used by bonding store a copy of jiffies and may not be updated for a
      long time. With HZ=1000, time_before_eq()/time_after_eq() will start
      giving bad results after ~25 days.
      
      jiffies will never be before slave->jiffies, dev->trans_start,
      dev->last_rx by more than possibly a couple ticks caused by preemption
      of this code. This allows us to detect/prevent these overflows by
      replacing time_before_eq()/time_after_eq() with time_in_range().
      Signed-off-by: NJiri Bohac <jbohac@suse.cz>
      Signed-off-by: NJean Delvare <jdelvare@suse.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cb32f2a0
    • G
      stmmac: fix sleep inside atomic · c4433be6
      Giuseppe Cavallaro 提交于
      We cannot use spinlock when kmalloc is invoked with
      GFP_KERNEL flag because it can sleep.
      So this patch reviews the usage of spinlock within the
      stmmac_resume function avoing this bug.
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Reported-by: NJiri Slaby <jirislaby@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c4433be6
  9. 04 9月, 2010 3 次提交
  10. 03 9月, 2010 1 次提交
  11. 02 9月, 2010 3 次提交
  12. 01 9月, 2010 3 次提交
  13. 31 8月, 2010 2 次提交
  14. 29 8月, 2010 1 次提交
  15. 28 8月, 2010 1 次提交
  16. 27 8月, 2010 1 次提交
  17. 25 8月, 2010 6 次提交
    • D
      pxa168_eth: silence gcc warnings · b2bc8563
      Dan Carpenter 提交于
      Casting "pep->tx_desc_dma" to to a struct tx_desc pointer makes gcc
      complain:
      
      drivers/net/pxa168_eth.c:657: warning:
      	cast to pointer from integer of different size
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b2bc8563
    • D
      pxa168_eth: update call to phy_mii_ioctl() · 4f2c8510
      Dan Carpenter 提交于
      The phy_mii_ioctl() function changed recently.  It now takes a struct
      ifreq pointer directly.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4f2c8510
    • D
      pxa168_eth: fix error handling in prope · 945c7c73
      Dan Carpenter 提交于
      A couple issues here:
      * Some resources weren't released.
      * If alloc_etherdev() failed it would have caused a NULL dereference
        because "pep" would be null when we checked "if (pep->clk)".
      * Also it's better to propagate the error codes from mdiobus_register()
        instead of just returning -ENOMEM.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      945c7c73
    • D
      pxa168_eth: remove unneeded null check · 4169591f
      Dan Carpenter 提交于
      "pep->pd" isn't checked consistently in this function.  For example it's
      dereferenced unconditionally on the next line after the end of the if
      condition.  This function is only called from pxa168_eth_probe() and
      pep->pd is always non-NULL so I removed the check.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4169591f
    • A
      phylib: Fix race between returning phydev and calling adjust_link · ef24b16b
      Anton Vorontsov 提交于
      It is possible that phylib will call adjust_link before returning
      from {,of_}phy_connect(), which may cause the following [very rare,
      though] oops upon reopening the device:
      
        Unable to handle kernel paging request for data at address 0x0000024c
        Oops: Kernel access of bad area, sig: 11 [#1]
        PREEMPT SMP NR_CPUS=2 LTT NESTING LEVEL : 0
        P1021 RDB
        Modules linked in:
        NIP: c0345dac LR: c0345dac CTR: c0345d84
        TASK = dffab6b0[30] 'events/0' THREAD: c0d24000 CPU: 0
        [...]
        NIP [c0345dac] adjust_link+0x28/0x19c
        LR [c0345dac] adjust_link+0x28/0x19c
        Call Trace:
        [c0d25f00] [000045e1] 0x45e1 (unreliable)
        [c0d25f30] [c036c158] phy_state_machine+0x3ac/0x554
        [...]
      
      Here is why. Drivers store phydev in their private structures, e.g.
      gianfar driver:
      
      static int init_phy(struct net_device *dev)
      {
      	...
      	priv->phydev = of_phy_connect(...);
      	...
      }
      
      So that adjust_link could retrieve it back:
      
      static void adjust_link(struct net_device *dev)
      {
      	...
      	struct phy_device *phydev = priv->phydev;
      	...
      }
      
      If the device has been opened before, then phydev->state is set to
      PHY_HALTED (or undefined if the driver didn't call phy_stop()).
      
      Now, phy_connect starts the PHY state machine before returning phydev to
      the driver:
      
      	phy_start_machine(phydev, NULL);
      
      	if (phydev->irq > 0)
      		phy_start_interrupts(phydev);
      
      	return phydev;
      
      The time between 'phy_start_machine()' and 'return phydev' is undefined.
      The start machine routine delays execution for 1 second, which is enough
      for most cases. But under heavy load, or if you're unlucky, it is quite
      possible that PHY state machine will execute before phy_connect()
      returns, and so adjust_link callback will try to dereference phydev,
      which is not yet ready.
      
      To fix the issue, simply initialize the PHY's state to PHY_READY during
      phy_attach(). This will ensure that phylib won't call adjust_link before
      phy_start().
      Signed-off-by: NAnton Vorontsov <avorontsov@mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ef24b16b
    • H
      caif-driver: add HAS_DMA dependency · 9dc002d8
      Heiko Carstens 提交于
      Fix this error on an s390 allyesconfig build:
      
      linux-2.6/drivers/net/caif/caif_spi.c:98:
          undefined reference to `dma_free_coherent'
      
      Cc: Sjur Braendeland <sjur.brandeland@stericsson.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9dc002d8
  18. 24 8月, 2010 1 次提交
    • N
      3c59x: Fix deadlock between boomerang_interrupt and boomerang_start_tx · aa25ab7d
      Neil Horman 提交于
      If netconsole is in use, there is a possibility for deadlock in 3c59x between
      boomerang_interrupt and boomerang_start_xmit.  Both routines take the vp->lock,
      and if netconsole is in use, a pr_* call from the boomerang_interrupt routine
      will result in the netconsole code attempting to trnasmit an skb, which can try
      to take the same spin lock, resulting in deadlock.
      
      The fix is pretty straightforward.  This patch allocats a bit in the 3c59x
      private structure to indicate that its handling an interrupt.  If we get into
      the transmit routine and that bit is set, we can be sure that we have recursed
      and will deadlock if we continue, so instead we just return NETDEV_TX_BUSY, so
      the stack requeues the skb to try again later.
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aa25ab7d