1. 12 Jan, 2011 1 commit
  2. 12 Nov, 2010 2 commits
    • Joakim Tjernlund's avatar
      ucc_geth: Fix deadlock · 75e60474
      Joakim Tjernlund authored
      
      
      This script:
       while [ 1==1 ] ; do ifconfig eth0 up; usleep 1950000 ;ifconfig eth0 down; dmesg -c ;done
      causes in just a second or two:
      INFO: task ifconfig:572 blocked for more than 120 seconds.
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      ifconfig      D 0ff65760     0   572    369 0x00000000
      Call Trace:
      [c6157be0] [c6008460] 0xc6008460 (unreliable)
      [c6157ca0] [c0008608] __switch_to+0x4c/0x6c
      [c6157cb0] [c028fecc] schedule+0x184/0x310
      [c6157ce0] [c0290e54] __mutex_lock_slowpath+0xa4/0x150
      [c6157d20] [c0290c48] mutex_lock+0x44/0x48
      [c6157d30] [c01aba74] phy_stop+0x20/0x70
      [c6157d40] [c01aef40] ucc_geth_stop+0x30/0x98
      [c6157d60] [c01b18fc] ucc_geth_close+0x9c/0xdc
      [c6157d80] [c01db0cc] __dev_close+0xa0/0xd0
      [c6157d90] [c01deddc] __dev_change_flags+0x8c/0x148
      [c6157db0] [c01def54] dev_change_flags+0x1c/0x64
      [c6157dd0] [c0237ac8] devinet_ioctl+0x678/0x784
      [c6157e50] [c0239a58] inet_ioctl+0xb0/0xbc
      [c6157e60] [c01cafa8] sock_ioctl+0x174/0x2a0
      [c6157e80] [c009a16c] vfs_ioctl+0xcc/0xe0
      [c6157ea0] [c009a998] do_vfs_ioctl+0xc4/0x79c
      [c6157f10] [c009b0b0] sys_ioctl+0x40/0x74
      [c6157f40] [c00117c4] ret_from_syscall+0x0/0x38
      
      The reason appears to be ucc_geth_stop meets adjust_link as the
      PHY reports PHY changes. I belive adjust_link hangs somewhere,
      holding the PHY lock, because ucc_geth_stop disabled the
      controller HW.
      Fix is to stop the PHY before disabling the controller.
      Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Reviewed-by: default avatarAnton Vorontsov <cbouatmailru@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      75e60474
    • Joakim Tjernlund's avatar
      ucc_geth: Do not bring the whole IF down when TX failure. · 2040bd57
      Joakim Tjernlund authored
      
      
      ucc_geth_close lacks a cancel_work_sync(&ugeth->timeout_work)
      to stop any outstanding processing of TX fail. However, one
      can not call cancel_work_sync without fixing the timeout function
      otherwise it will deadlock. This patch brings ucc_geth in line with
      gianfar:
      
      Don't bring the interface down and up, just reinit controller HW
      and PHY.
      Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Reviewed-by: default avatarAnton Vorontsov <cbouatmailru@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2040bd57
  3. 06 Aug, 2010 1 commit
  4. 30 Jul, 2010 1 commit
  5. 18 Jul, 2010 1 commit
  6. 16 Jun, 2010 1 commit
  7. 12 Jun, 2010 1 commit
  8. 22 May, 2010 1 commit
    • Grant Likely's avatar
      of: Remove duplicate fields from of_platform_driver · 4018294b
      Grant Likely authored
      
      
      .name, .match_table and .owner are duplicated in both of_platform_driver
      and device_driver.  This patch is a removes the extra copies from struct
      of_platform_driver and converts all users to the device_driver members.
      
      This patch is a pretty mechanical change.  The usage model doesn't change
      and if any drivers have been missed, or if anything has been fixed up
      incorrectly, then it will fail with a compile time error, and the fixup
      will be trivial.  This patch looks big and scary because it touches so
      many files, but it should be pretty safe.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Acked-by: default avatarSean MacLennan <smaclennan@pikatech.com>
      4018294b
  9. 18 May, 2010 1 commit
  10. 10 May, 2010 1 commit
  11. 03 Apr, 2010 1 commit
    • Jiri Pirko's avatar
      net: convert multicast list to list_head · 22bedad3
      Jiri Pirko authored
      
      
      Converts the list and the core manipulating with it to be the same as uc_list.
      
      +uses two functions for adding/removing mc address (normal and "global"
       variant) instead of a function parameter.
      +removes dev_mcast.c completely.
      +exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for
       manipulation with lists on a sandbox (used in bonding and 80211 drivers)
      Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      22bedad3
  12. 24 Mar, 2010 1 commit
  13. 26 Feb, 2010 1 commit
  14. 12 Feb, 2010 1 commit
  15. 09 Feb, 2010 1 commit
  16. 21 Jan, 2010 1 commit
  17. 19 Jan, 2010 1 commit
  18. 30 Dec, 2009 1 commit
    • Anton Vorontsov's avatar
      ucc_geth: Fix netdev watchdog triggering on suspend · 29fb00e0
      Anton Vorontsov authored
      
      
      Sometimes ucc_geth fails to suspend with the following trace:
      
       ucc_geth e0103000.ucc: suspend
       ucc_geth e0102000.ucc: suspend
       NETDEV WATCHDOG: eth0 (ucc_geth): transmit queue 0 timed out
       ------------[ cut here ]------------
       Badness at net/sched/sch_generic.c:255
       NIP: c021cb5c LR: c021cb5c CTR: c01ab4b4
       [...]
       NIP [c021cb5c] dev_watchdog+0x298/0x2a8
       LR [c021cb5c] dev_watchdog+0x298/0x2a8
       Call Trace:
       [c0389da0] [c021cb5c] dev_watchdog+0x298/0x2a8 (unreliable)
       [c0389e00] [c0031ed8] run_timer_softirq+0x16c/0x1dc
       [c0389e50] [c002c638] __do_softirq+0xa4/0x11c
       [...]
      
      This patch fixes the issue by properly detaching the device on
      suspend, and attaching it back on resume.
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      29fb00e0
  19. 26 Dec, 2009 3 commits
    • Anton Vorontsov's avatar
      ucc_geth: Don't needlessly change MAC settings in adjust_link() · 08fafd84
      Anton Vorontsov authored
      
      
      If PHY doesn't have an IRQ, phylib would poll for link changes, and
      would call adjust_link() every second. In that case we disable and
      enable the controller every second.
      
      Let's better check if there is actually anything changed, and, if so,
      change the MAC settings.
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      08fafd84
    • Anton Vorontsov's avatar
      ucc_geth: Fix netdev watchdog triggering on link changes · 08b5e1c9
      Anton Vorontsov authored
      Since commit 864fdf88
      
       ("ucc_geth:
      Fix hangs after switching from full to half duplex") ucc_geth driver
      disables the controller during MAC configuration changes. Though,
      disabling the controller might take quite awhile, and so the netdev
      watchdog might get upset:
      
       NETDEV WATCHDOG: eth2 (ucc_geth): transmit queue 0 timed out
       ------------[ cut here ]------------
       Badness at c02729a8 [verbose debug info unavailable]
       NIP: c02729a8 LR: c02729a8 CTR: c01b6088
       REGS: c0451c40 TRAP: 0700   Not tainted  (2.6.32-trunk-8360e)
       [...]
       NIP [c02729a8] dev_watchdog+0x280/0x290
       LR [c02729a8] dev_watchdog+0x280/0x290
       Call Trace:
       [c0451cf0] [c02729a8] dev_watchdog+0x280/0x290 (unreliable)
       [c0451d50] [c00377c4] run_timer_softirq+0x164/0x224
       [c0451da0] [c0032a38] __do_softirq+0xb8/0x13c
       [c0451df0] [c00065cc] do_softirq+0xa0/0xac
       [c0451e00] [c003280c] irq_exit+0x7c/0x9c
       [c0451e10] [c00640c4] __ipipe_sync_stage+0x248/0x24c
       [...]
      
      This patch fixes the issue by detaching the netdev during the
      time we change the configuration.
      Reported-by: default avatarLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: default avatarLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Cc: Stable <stable@vger.kernel.org> [2.6.32]
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      08b5e1c9
    • Anton Vorontsov's avatar
      ucc_geth: Fix empty TX queue processing · 7583605b
      Anton Vorontsov authored
      
      
      Following oops was seen with the ucc_geth driver:
      
       Unable to handle kernel paging request for data at address 0x00000058
       Faulting instruction address: 0xc024f2fc
       Oops: Kernel access of bad area, sig: 11 [#1]
       [...]
       NIP [c024f2fc] skb_recycle_check+0x14/0x100
       LR [e30aa0a4] ucc_geth_poll+0xd8/0x4e0 [ucc_geth_driver]
       Call Trace:
       [df857d50] [c000b03c] __ipipe_grab_irq+0x3c/0xa4 (unreliable)
       [df857d60] [e30aa0a4] ucc_geth_poll+0xd8/0x4e0 [ucc_geth_driver]
       [df857dd0] [c0258cf8] net_rx_action+0xf8/0x1b8
       [df857e10] [c0032a38] __do_softirq+0xb8/0x13c
       [df857e60] [c00065cc] do_softirq+0xa0/0xac
       [...]
      
      This is because ucc_geth_tx() tries to process an empty queue when
      queues are logically stopped. Stopping the queues doesn't disable
      polling, and since nowadays ucc_geth_tx() is actually called from
      the polling routine, the oops above might pop up.
      
      Fix this by removing 'netif_queue_stopped() == 0' check.
      Reported-by: default avatarLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: default avatarLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Cc: Stable <stable@vger.kernel.org> [2.6.32]
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7583605b
  20. 04 Dec, 2009 1 commit
  21. 03 Dec, 2009 1 commit
  22. 11 Sep, 2009 2 commits
  23. 30 Aug, 2009 3 commits
  24. 14 Aug, 2009 1 commit
  25. 22 Jul, 2009 1 commit
  26. 07 Jul, 2009 1 commit
  27. 05 Jul, 2009 1 commit
  28. 17 Jun, 2009 2 commits
  29. 03 Jun, 2009 1 commit
  30. 26 May, 2009 1 commit
  31. 18 May, 2009 2 commits
  32. 28 Apr, 2009 1 commit