1. 07 10月, 2012 1 次提交
    • E
      net: remove skb recycling · acb600de
      Eric Dumazet 提交于
      Over time, skb recycling infrastructure got litle interest and
      many bugs. Generic rx path skb allocation is now using page
      fragments for efficient GRO / TCP coalescing, and recyling
      a tx skb for rx path is not worth the pain.
      
      Last identified bug is that fat skbs can be recycled
      and it can endup using high order pages after few iterations.
      
      With help from Maxime Bizon, who pointed out that commit
      87151b86 (net: allow pskb_expand_head() to get maximum tailroom)
      introduced this regression for recycled skbs.
      
      Instead of fixing this bug, lets remove skb recycling.
      
      Drivers wanting really hot skbs should use build_skb() anyway,
      to allocate/populate sk_buff right before netif_receive_skb()
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Maxime Bizon <mbizon@freebox.fr>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      acb600de
  2. 31 8月, 2012 1 次提交
  3. 07 6月, 2012 1 次提交
    • J
      ethernet: Remove casts to same type · 64699336
      Joe Perches 提交于
      Adding casts of objects to the same type is unnecessary
      and confusing for a human reader.
      
      For example, this cast:
      
              int y;
              int *p = (int *)&y;
      
      I used the coccinelle script below to find and remove these
      unnecessary casts.  I manually removed the conversions this
      script produces of casts with __force, __iomem and __user.
      
      @@
      type T;
      T *p;
      @@
      
      -       (T *)p
      +       p
      
      A function in atl1e_main.c was passed a const pointer
      when it actually modified elements of the structure.
      
      Change the argument to a non-const pointer.
      
      A function in stmmac needed a __force to avoid a sparse
      warning.  Added it.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      64699336
  4. 03 5月, 2012 1 次提交
  5. 29 3月, 2012 1 次提交
  6. 05 3月, 2012 1 次提交
  7. 07 2月, 2012 1 次提交
  8. 17 11月, 2011 1 次提交
  9. 01 11月, 2011 1 次提交
  10. 18 8月, 2011 1 次提交
  11. 12 8月, 2011 1 次提交
    • J
      freescale: Move the Freescale drivers · ec21e2ec
      Jeff Kirsher 提交于
      Move the Freescale drivers into drivers/net/ethernet/freescale/ and
      make the necessary Kconfig and Makefile changes.
      
      CC: Sandeep Gopalpet <sandeep.kumar@freescale.com>
      CC: Andy Fleming <afleming@freescale.com>
      CC: Shlomi Gridish <gridish@freescale.com>
      CC: Li Yang <leoli@freescale.com>
      CC: Pantelis Antoniou <pantelis.antoniou@gmail.com>
      CC: Vitaly Bordug <vbordug@ru.mvista.com>
      CC: Dan Malek <dmalek@jlc.net>
      CC: Sylvain Munaut <tnt@246tNt.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ec21e2ec
  12. 08 8月, 2011 1 次提交
  13. 01 7月, 2011 1 次提交
  14. 21 6月, 2011 1 次提交
  15. 01 3月, 2011 1 次提交
  16. 13 1月, 2011 1 次提交
  17. 13 11月, 2010 2 次提交
    • J
      ucc_geth: Fix deadlock · 75e60474
      Joakim Tjernlund 提交于
      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: NJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Reviewed-by: NAnton Vorontsov <cbouatmailru@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      75e60474
    • J
      ucc_geth: Do not bring the whole IF down when TX failure. · 2040bd57
      Joakim Tjernlund 提交于
      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: NJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Reviewed-by: NAnton Vorontsov <cbouatmailru@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2040bd57
  18. 01 11月, 2010 1 次提交
  19. 06 8月, 2010 1 次提交
  20. 31 7月, 2010 1 次提交
  21. 19 7月, 2010 1 次提交
  22. 17 6月, 2010 1 次提交
  23. 13 6月, 2010 1 次提交
  24. 22 5月, 2010 1 次提交
    • G
      of: Remove duplicate fields from of_platform_driver · 4018294b
      Grant Likely 提交于
      .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: NGrant Likely <grant.likely@secretlab.ca>
      Acked-by: NSean MacLennan <smaclennan@pikatech.com>
      4018294b
  25. 19 5月, 2010 1 次提交
  26. 10 5月, 2010 1 次提交
  27. 04 4月, 2010 1 次提交
    • J
      net: convert multicast list to list_head · 22bedad3
      Jiri Pirko 提交于
      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: NJiri Pirko <jpirko@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22bedad3
  28. 25 3月, 2010 1 次提交
  29. 26 2月, 2010 1 次提交
  30. 13 2月, 2010 1 次提交
  31. 09 2月, 2010 1 次提交
  32. 21 1月, 2010 1 次提交
  33. 19 1月, 2010 1 次提交
  34. 31 12月, 2009 1 次提交
    • A
      ucc_geth: Fix netdev watchdog triggering on suspend · 29fb00e0
      Anton Vorontsov 提交于
      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: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      29fb00e0
  35. 27 12月, 2009 3 次提交
    • A
      ucc_geth: Don't needlessly change MAC settings in adjust_link() · 08fafd84
      Anton Vorontsov 提交于
      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: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      08fafd84
    • A
      ucc_geth: Fix netdev watchdog triggering on link changes · 08b5e1c9
      Anton Vorontsov 提交于
      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: NLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: NLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Cc: Stable <stable@vger.kernel.org> [2.6.32]
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      08b5e1c9
    • A
      ucc_geth: Fix empty TX queue processing · 7583605b
      Anton Vorontsov 提交于
      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: NLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: NLennart Sorensen <lsorense@csclub.uwaterloo.ca>
      Cc: Stable <stable@vger.kernel.org> [2.6.32]
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7583605b
  36. 04 12月, 2009 2 次提交