An error occurred fetching the project authors.
  1. 20 May, 2018 1 commit
  2. 01 Apr, 2018 1 commit
  3. 26 Mar, 2018 5 commits
  4. 27 Feb, 2018 1 commit
  5. 26 Feb, 2018 2 commits
  6. 31 Jan, 2017 2 commits
  7. 09 Jan, 2017 4 commits
  8. 04 Jan, 2017 1 commit
  9. 11 Aug, 2016 1 commit
  10. 26 Apr, 2016 1 commit
  11. 04 Jan, 2016 1 commit
  12. 22 Dec, 2015 1 commit
  13. 14 Dec, 2015 1 commit
  14. 03 Nov, 2015 1 commit
  15. 04 Mar, 2015 2 commits
  16. 27 Jan, 2015 1 commit
    • Ben Hutchings's avatar
      sh_eth: Fix serialisation of interrupt disable with interrupt & NAPI handlers · 283e38db
      Ben Hutchings authored
      In order to stop the RX path accessing the RX ring while it's being
      stopped or resized, we clear the interrupt mask (EESIPR) and then call
      free_irq() or synchronise_irq().  This is insufficient because the
      interrupt handler or NAPI poller may set EESIPR again after we clear
      it.  Also, in sh_eth_set_ringparam() we currently don't disable NAPI
      polling at all.
      
      I could easily trigger a crash by running the loop:
      
         while ethtool -G eth0 rx 128 && ethtool -G eth0 rx 64; do echo -n .; done
      
      and 'ping -f' toward the sh_eth port from another machine.
      
      To fix this:
      - Add a software flag (irq_enabled) to signal whether interrupts
        should be enabled
      - In the interrupt handler, if the flag is clear then clear EESIPR
        and return
      - In the NAPI poller, if the flag is clear then don't set EESIPR
      - Set the flag before enabling interrupts in sh_eth_dev_init() and
        sh_eth_set_ringparam()
      - Clear the flag and serialise with the interrupt and NAPI
        handlers before clearing EESIPR in sh_eth_close() and
        sh_eth_set_ringparam()
      
      After this, I could run the loop for 100,000 iterations successfully.
      Signed-off-by: default avatarBen Hutchings <ben.hutchings@codethink.co.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      283e38db
  17. 15 Jan, 2015 1 commit
  18. 09 Jan, 2015 1 commit
  19. 30 Nov, 2014 2 commits
    • Mitsuhiro Kimura's avatar
      sh_eth: Fix sleeping function called from invalid context · 7fa2955f
      Mitsuhiro Kimura authored
      This resolves the following bug which can be reproduced by building the
      kernel with CONFIG_DEBUG_ATOMIC_SLEEP=y and reading network statistics
      while the network interface is down.
      
      e.g.:
      
      ifconfig eth0 down
      cat /sys/class/net/eth0/statistics/tx_errors
      
      ----
      [ 1238.161349] BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:952
      [ 1238.188279] in_atomic(): 1, irqs_disabled(): 0, pid: 1388, name: cat
      [ 1238.207425] CPU: 0 PID: 1388 Comm: cat Not tainted 3.10.31-ltsi-00046-gefa0b46 #1087
      [ 1238.230737] Backtrace:
      [ 1238.238123] [<c0012e64>] (dump_backtrace+0x0/0x10c) from [<c0013000>] (show_stack+0x18/0x1c)
      [ 1238.263499]  r6:000003b8 r5:c06160c0 r4:c0669e00 r3:00404000
      [ 1238.280583] [<c0012fe8>] (show_stack+0x0/0x1c) from [<c04515a4>] (dump_stack+0x20/0x28)
      [ 1238.304631] [<c0451584>] (dump_stack+0x0/0x28) from [<c004970c>] (__might_sleep+0xf8/0x118)
      [ 1238.329734] [<c0049614>] (__might_sleep+0x0/0x118) from [<c02465ac>] (__pm_runtime_resume+0x38/0x90)
      [ 1238.357170]  r7:d616f000 r6:c049c458 r5:00000004 r4:d6a17210
      [ 1238.374251] [<c0246574>] (__pm_runtime_resume+0x0/0x90) from [<c029b1c4>] (sh_eth_get_stats+0x44/0x280)
      [ 1238.402468]  r7:d616f000 r6:c049c458 r5:d5c21000 r4:d5c21000
      [ 1238.419552] [<c029b180>] (sh_eth_get_stats+0x0/0x280) from [<c03ae39c>] (dev_get_stats+0x54/0x88)
      [ 1238.446204]  r5:d5c21000 r4:d5ed7e08
      [ 1238.456980] [<c03ae348>] (dev_get_stats+0x0/0x88) from [<c03c677c>] (netstat_show.isra.15+0x54/0x9c)
      [ 1238.484413]  r6:d5c21000 r5:d5c21238 r4:00000028 r3:00000001
      [ 1238.501495] [<c03c6728>] (netstat_show.isra.15+0x0/0x9c) from [<c03c69b8>] (show_tx_errors+0x18/0x1c)
      [ 1238.529196]  r7:d5f945d8 r6:d5f945c0 r5:c049716c r4:c0650e7c
      [ 1238.546279] [<c03c69a0>] (show_tx_errors+0x0/0x1c) from [<c023963c>] (dev_attr_show+0x24/0x50)
      [ 1238.572157] [<c0239618>] (dev_attr_show+0x0/0x50) from [<c010c148>] (sysfs_read_file+0xb0/0x140)
      [ 1238.598554]  r5:c049716c r4:d5c21240
      [ 1238.609326] [<c010c098>] (sysfs_read_file+0x0/0x140) from [<c00b9ee4>] (vfs_read+0xb0/0x13c)
      [ 1238.634679] [<c00b9e34>] (vfs_read+0x0/0x13c) from [<c00ba0ac>] (SyS_read+0x44/0x74)
      [ 1238.657944]  r8:bef45bf0 r7:00000000 r6:d6ac0600 r5:00000000 r4:00000000
      [ 1238.678172] [<c00ba068>] (SyS_read+0x0/0x74) from [<c000eec0>] (ret_fast_syscall+0x0/0x30)
      ----
      Signed-off-by: default avatarMitsuhiro Kimura <mitsuhiro.kimura.kc@renesas.com>
      Signed-off-by: default avatarYoshihiro Kaneko <ykaneko0929@gmail.com>
      Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7fa2955f
    • Mitsuhiro Kimura's avatar
      sh_eth: Fix skb alloc size and alignment adjust rule. · 4d6a949c
      Mitsuhiro Kimura authored
      In the current driver, allocation size of skb does not care the alignment
      adjust after allocation.
      And also, in the current implementation, buffer alignment method by
      sh_eth_set_receive_align function has a bug that this function displace
      buffer start address forcedly when the alignment is corrected.
      In the result, tail of the skb will exceed allocated area and kernel panic
      will be occurred.
      This patch fix this issue.
      Signed-off-by: default avatarMitsuhiro Kimura <mitsuhiro.kimura.kc@renesas.com>
      Signed-off-by: default avatarYoshihiro Kaneko <ykaneko0929@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4d6a949c
  20. 04 Jun, 2014 1 commit
  21. 13 Feb, 2014 1 commit
  22. 18 Jan, 2014 1 commit
  23. 04 Jan, 2014 1 commit
    • Sergei Shtylyov's avatar
      sh_eth: coding style fixes · 128296fc
      Sergei Shtylyov authored
      Running 'scripts/checkpatch.pl' on the driver files gives numerous warnings:
      
      - block comments using empty /* line;
      
      - unneeded \ at end of lines;
      
      - message string split across lines;
      
      - use of __attribute__((aligned(n))) instead of __aligned(n) macro;
      
      - use of __attribute__((packed)) instead of __packed macro.
      
      Additionally, running 'scripts/checkpatch.pl --strict' gives more complaints:
      
      - including the paragraph about writing to FSF into the heading comment;
      
      - alignment not matching open paren;
      
      - multiple assignments on one line;
      
      - use of CamelCase names;
      
      - missing {} on one of the *if* arms where another has them;
      
      - spinlock definition without a comment.
      
      While fixing these, also do some more style cleanups:
      
      - remove useless () around expressions;
      
      - add {} around multi-line *if* operator's arm;
      
      - remove space before comma;
      
      - add spaces after /* and before */;
      
      - properly align continuation lines of broken up expressions;
      
      - realign comments to the structure fields.
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      128296fc
  24. 23 Oct, 2013 1 commit
  25. 21 Aug, 2013 2 commits
  26. 24 Jul, 2013 1 commit
  27. 24 Jun, 2013 1 commit
    • Sergei Shtylyov's avatar
      sh_eth: fix unhandled RFE interrupt · ca8c3585
      Sergei Shtylyov authored
      EESR.RFE (receive FIFO overflow) interrupt is enabled by the driver on all SoCs
      and sh_eth_error() handles it but it's not present in any initializer/assignment
      of the 'eesr_err_check' field of 'struct sh_eth_cpu_data'. This leads to that
      interrupt not being handled and cleared, and finally to disabling IRQ and the
      driver being non-functional.
      
      Modify DEFAULT_EESR_ERR_CHECK macro and all explicit initializers of the above
      mentioned field to contain the EESR.RFE bit. Remove useless backslashes from the
      initializers, while at it.
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ca8c3585
  28. 20 Jun, 2013 1 commit