1. 04 10月, 2014 1 次提交
  2. 14 5月, 2014 1 次提交
  3. 25 3月, 2014 1 次提交
    • E
      xgmac: Call dev_kfree/consume_skb_any instead of dev_kfree_skb. · f5cf76ba
      Eric W. Biederman 提交于
      Replace dev_kfree_skb with dev_consume_skb_any in xgmac_tx_complete
      that can be called in hard irq and other contexts.
      
      Replace dev_kfree_skb with dev_kfree_skb_any in xgmac_xmit that can
      be called in hard irq and other contexts.
      
      dev_consume_skb_any is used in xgamc_tx_complete as skbs that reach
      there have been successfully transmitted, dev_kfree_skby_any is used
      in xgmac_xmit as skbs that are freed there are being dropped.
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      f5cf76ba
  4. 17 1月, 2014 1 次提交
  5. 08 11月, 2013 1 次提交
    • A
      net: calxedaxgmac: Fix panic caused by MTU change of active interface · b5ad795e
      Andreas Herrmann 提交于
      Changing MTU size of an xgmac network interface while it is active can
      cause a panic like
      
        skbuff: skb_over_panic: text:c03bc62c len:1090 put:1090 head:edfb6900 data:edfb6942 tail:0xedfb6d84 end:0xedfb6bc0 dev:eth0
        ------------[ cut here ]------------
        kernel BUG at net/core/skbuff.c:126!
        Internal error: Oops - BUG: 0 [#1] SMP ARM
        Modules linked in:
        CPU: 0 PID: 762 Comm: python Tainted: G        W    3.10.0-00015-g3e33cd7 #309
        task: edcfe000 ti: ed67e000 task.ti: ed67e000
        PC is at skb_panic+0x64/0x70
        LR is at wake_up_klogd+0x5c/0x68
      
      This happens because xgmac_change_mtu modifies dev->mtu before the
      network interface is quiesced. And thus there still might be buffers
      in use which have a buffer size based on the old MTU.
      
      To fix this I moved the change of dev->mtu after the call to
      xgmac_stop.
      
      Another modification is required (in xgmac_stop) to ensure that
      xgmac_xmit is really not called anymore (xgmac_tx_complete might wake
      up the queue again).
      
      I've tested the fix by switching MTU size every second between 600 and
      1500 while network traffic was going on. The test box survived a test
      of several hours (until I've stopped it) whereas w/o this fix above
      panic occurs after several minutes (at most).
      
      Change since v1:
      - remove call to netif_stop_queue at beginning of xgmac_stop
      - use netif_tx_disable instead of locking+netif_stop_queue
      Signed-off-by: NAndreas Herrmann <andreas.herrmann@calxeda.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b5ad795e
  6. 03 10月, 2013 3 次提交
  7. 04 9月, 2013 11 次提交
  8. 28 5月, 2013 1 次提交
  9. 25 4月, 2013 1 次提交
  10. 17 4月, 2013 1 次提交
  11. 30 3月, 2013 2 次提交
  12. 19 1月, 2013 1 次提交
  13. 04 1月, 2013 1 次提交
  14. 07 11月, 2012 6 次提交
  15. 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
  16. 11 7月, 2012 4 次提交
    • R
      net: calxedaxgmac: enable rx cut-thru mode · f62a23a7
      Rob Herring 提交于
      Enabling RX cut-thru mode yields better performance as received frames
      start getting written to memory before a whole frame is received.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f62a23a7
    • R
      net: calxedaxgmac: set outstanding AXI bus transactions to 8 · e36ce6eb
      Rob Herring 提交于
      Increase the number of outstanding read and write AXI transactions from 1
      to 8 for better performance.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e36ce6eb
    • R
      net: calxedaxgmac: fix hang on rx refill · 7c400919
      Rob Herring 提交于
      Fix intermittent hangs in xgmac_rx_refill. If a ring buffer entry already
      had an skb allocated, then xgmac_rx_refill would get stuck in a loop. This
      can happen on a rx error when we just leave the skb allocated to the entry.
      
      [ 7884.510000] INFO: rcu_preempt detected stall on CPU 0 (t=727315 jiffies)
      [ 7884.510000] [<c0010a59>] (unwind_backtrace+0x1/0x98) from [<c006fd93>] (__rcu_pending+0x11b/0x2c4)
      [ 7884.510000] [<c006fd93>] (__rcu_pending+0x11b/0x2c4) from [<c0070b95>] (rcu_check_callbacks+0xed/0x1a8)
      [ 7884.510000] [<c0070b95>] (rcu_check_callbacks+0xed/0x1a8) from [<c0036abb>] (update_process_times+0x2b/0x48)
      [ 7884.510000] [<c0036abb>] (update_process_times+0x2b/0x48) from [<c004e8fd>] (tick_sched_timer+0x51/0x94)
      [ 7884.510000] [<c004e8fd>] (tick_sched_timer+0x51/0x94) from [<c0045527>] (__run_hrtimer+0x4f/0x1e8)
      [ 7884.510000] [<c0045527>] (__run_hrtimer+0x4f/0x1e8) from [<c0046003>] (hrtimer_interrupt+0xd7/0x1e4)
      [ 7884.510000] [<c0046003>] (hrtimer_interrupt+0xd7/0x1e4) from [<c00101d3>] (twd_handler+0x17/0x24)
      [ 7884.510000] [<c00101d3>] (twd_handler+0x17/0x24) from [<c006be39>] (handle_percpu_devid_irq+0x59/0x114)
      [ 7884.510000] [<c006be39>] (handle_percpu_devid_irq+0x59/0x114) from [<c0069aab>] (generic_handle_irq+0x17/0x2c)
      [ 7884.510000] [<c0069aab>] (generic_handle_irq+0x17/0x2c) from [<c000cc8d>] (handle_IRQ+0x35/0x7c)
      [ 7884.510000] [<c000cc8d>] (handle_IRQ+0x35/0x7c) from [<c033b153>] (__irq_svc+0x33/0xb8)
      [ 7884.510000] [<c033b153>] (__irq_svc+0x33/0xb8) from [<c0244b06>] (xgmac_rx_refill+0x3a/0x140)
      [ 7884.510000] [<c0244b06>] (xgmac_rx_refill+0x3a/0x140) from [<c02458ed>] (xgmac_poll+0x265/0x3bc)
      [ 7884.510000] [<c02458ed>] (xgmac_poll+0x265/0x3bc) from [<c029fcbf>] (net_rx_action+0xc3/0x200)
      [ 7884.510000] [<c029fcbf>] (net_rx_action+0xc3/0x200) from [<c0030cab>] (__do_softirq+0xa3/0x1bc)
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7c400919
    • R
      net: calxedaxgmac: fix net timeout recovery · eb5e1b29
      Rob Herring 提交于
      Fix net tx watchdog timeout recovery. The descriptor ring was reset,
      but the DMA engine was not reset to the beginning of the ring.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      eb5e1b29
  17. 16 2月, 2012 1 次提交
  18. 06 1月, 2012 1 次提交
  19. 29 11月, 2011 1 次提交