1. 15 Nov, 2019 4 commits
  2. 06 Sep, 2019 4 commits
  3. 18 Aug, 2019 1 commit
  4. 29 May, 2019 1 commit
    • Yoshihiro Shimoda's avatar
      net: sh_eth: fix mdio access in sh_eth_close() for R-Car Gen2 and RZ/A1 SoCs · 315ca92d
      Yoshihiro Shimoda authored
      
      
      The sh_eth_close() resets the MAC and then calls phy_stop()
      so that mdio read access result is incorrect without any error
      according to kernel trace like below:
      
      ifconfig-216   [003] .n..   109.133124: mdio_access: ee700000.ethernet-ffffffff read  phy:0x01 reg:0x00 val:0xffff
      
      According to the hardware manual, the RMII mode should be set to 1
      before operation the Ethernet MAC. However, the previous code was not
      set to 1 after the driver issued the soft_reset in sh_eth_dev_exit()
      so that the mdio read access result seemed incorrect. To fix the issue,
      this patch adds a condition and set the RMII mode register in
      sh_eth_dev_exit() for R-Car Gen2 and RZ/A1 SoCs.
      
      Note that when I have tried to move the sh_eth_dev_exit() calling
      after phy_stop() on sh_eth_close(), but it gets worse (kernel panic
      happened and it seems that a register is accessed while the clock is
      off).
      
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      315ca92d
  5. 10 May, 2019 1 commit
    • Petr Štetiar's avatar
      net: ethernet: fix similar warning reported by kbuild test robot · 2d2924af
      Petr Štetiar authored
      This patch fixes following (similar) warning reported by kbuild test robot:
      
       In function ‘memcpy’,
        inlined from ‘smsc75xx_init_mac_address’ at drivers/net/usb/smsc75xx.c:778:3,
        inlined from ‘smsc75xx_bind’ at drivers/net/usb/smsc75xx.c:1501:2:
        ./include/linux/string.h:355:9: warning: argument 2 null where non-null expected [-Wnonnull]
        return __builtin_memcpy(p, q, size);
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
        drivers/net/usb/smsc75xx.c: In function ‘smsc75xx_bind’:
        ./include/linux/string.h:355:9: note: in a call to built-in function ‘__builtin_memcpy’
      
      I've replaced the offending memcpy with ether_addr_copy, because I'm
      100% sure, that of_get_mac_address can't return NULL as it returns valid
      pointer or ERR_PTR encoded value, nothing else.
      
      I'm hesitant to just change IS_ERR into IS_ERR_OR_NULL check, as this
      would make the warning disappear also, but it would be confusing to
      check for impossible return value just to make a compiler happy.
      
      I'm now changing all occurencies of memcpy to ether_addr_copy after the
      of_get_mac_address call, as it's very likely, that we're going to get
      similar reports from kbuild test robot in the future.
      
      Fixes: a51645f7
      
       ("net: ethernet: support of_get_mac_address new ERR_PTR error")
      Reported-by: default avatarkbuild test robot <lkp@intel.com>
      Signed-off-by: default avatarPetr Štetiar <ynezz@true.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2d2924af
  6. 07 May, 2019 1 commit
  7. 24 Apr, 2019 1 commit
  8. 08 Apr, 2019 1 commit
    • Will Deacon's avatar
      drivers: Remove explicit invocations of mmiowb() · fb24ea52
      Will Deacon authored
      
      
      mmiowb() is now implied by spin_unlock() on architectures that require
      it, so there is no reason to call it from driver code. This patch was
      generated using coccinelle:
      
      	@mmiowb@
      	@@
      	- mmiowb();
      
      and invoked as:
      
      $ for d in drivers include/linux/qed sound; do \
      spatch --include-headers --sp-file mmiowb.cocci --dir $d --in-place; done
      
      NOTE: mmiowb() has only ever guaranteed ordering in conjunction with
      spin_unlock(). However, pairing each mmiowb() removal in this patch with
      the corresponding call to spin_unlock() is not at all trivial, so there
      is a small chance that this change may regress any drivers incorrectly
      relying on mmiowb() to order MMIO writes between CPUs using lock-free
      synchronisation. If you've ended up bisecting to this commit, you can
      reintroduce the mmiowb() calls using wmb() instead, which should restore
      the old behaviour on all architectures other than some esoteric ia64
      systems.
      
      Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      fb24ea52
  9. 20 Mar, 2019 1 commit
    • Paolo Abeni's avatar
      net: remove 'fallback' argument from dev->ndo_select_queue() · a350ecce
      Paolo Abeni authored
      
      
      After the previous patch, all the callers of ndo_select_queue()
      provide as a 'fallback' argument netdev_pick_tx.
      The only exceptions are nested calls to ndo_select_queue(),
      which pass down the 'fallback' available in the current scope
      - still netdev_pick_tx.
      
      We can drop such argument and replace fallback() invocation with
      netdev_pick_tx(). This avoids an indirect call per xmit packet
      in some scenarios (TCP syn, UDP unconnected, XDP generic, pktgen)
      with device drivers implementing such ndo. It also clean the code
      a bit.
      
      Tested with ixgbe and CONFIG_FCOE=m
      
      With pktgen using queue xmit:
      threads		vanilla 	patched
      		(kpps)		(kpps)
      1		2334		2428
      2		4166		4278
      4		7895		8100
      
       v1 -> v2:
       - rebased after helper's name change
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a350ecce
  10. 12 Mar, 2019 1 commit
  11. 07 Mar, 2019 1 commit
  12. 04 Feb, 2019 7 commits
    • Sergei Shtylyov's avatar
      sh_eth: offload RX checksum on SH7763 · 997feb11
      Sergei Shtylyov authored
      
      
      The SH7763 SoC manual describes the Ether MAC's RX checksum offload
      the same way as it's implemented in the EtherAVB MACs...
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      997feb11
    • Sergei Shtylyov's avatar
      sh_eth: offload RX checksum on SH7734 · 06240e1b
      Sergei Shtylyov authored
      
      
      The SH7734 SoC manual describes the Ether MAC's RX checksum offload
      the same way as it's implemented in the EtherAVB MACs...
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      06240e1b
    • Sergei Shtylyov's avatar
      sh_eth: offload RX checksum on R8A77980 · 0da843ad
      Sergei Shtylyov authored
      
      
      The R-Car V3H (R8A77980) SoC manual describes the Ether MAC's RX checksum
      offload the same way as it's implemented in the EtherAVB MAC...
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0da843ad
    • Sergei Shtylyov's avatar
      sh_eth: offload RX checksum on R8A7740 · 040c16fd
      Sergei Shtylyov authored
      
      
      The R-Mobile A1 (R8A7740) SoC manual describes the Ether MAC's RX checksum
      offload the same way as it's implemented in the EtherAVB MAC...
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Tested-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      040c16fd
    • Sergei Shtylyov's avatar
      sh_eth: offload RX checksum on R7S72100 · 48132cd0
      Sergei Shtylyov authored
      
      
      The RZ/A1H (R7S721000) SoC manual describes the Ether MAC's RX checksum
      offload the same way as it's implemented in the EtherAVB MACs...
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      48132cd0
    • Sergei Shtylyov's avatar
      sh_eth: RX checksum offload support · f8e022db
      Sergei Shtylyov authored
      Add support for the RX checksum offload. This is enabled by default and
      may be disabled and re-enabled using 'ethtool':
      
      # ethtool -K eth0 rx off
      # ethtool -K eth0 rx on
      
      Some Ether MACs provide a simple checksumming scheme which appears to be
      completely compatible with CHECKSUM_COMPLETE: sum of all packet data after
      the L2 header is appended to packet data; this may be trivially read by
      the driver and used to update the skb accordingly. The same checksumming
      scheme is implemented in the EtherAVB MACs and now supported by the 'ravb'
      driver.
      
      In terms of performance, throughput is close to gigabit line rate with the
      RX checksum offload both enabled and disabled.  The 'perf' output, however,
      appears to indicate that significantly less time is spent in do_csum() --
      this is as expected.
      
      Test results with RX checksum offload enabled:
      
      ~/netperf-2.2pl4# perf record -a ./netperf -t TCP_MAERTS -H 192.168.2.4
      TCP MAERTS TEST to 192.168.2.4
      Recv   Send    Send
      Socket Socket  Message  Elapsed
      Size   Size    Size     Time     Throughput
      bytes  bytes   bytes    secs.    10^6bits/sec
      
      131072  16384  16384    10.01     933.93
      [ perf record: Woken up 8 times to write data ]
      [ perf record: Captured and wrote 1.955 MB perf.data (41940 samples) ]
      ~/netperf-2.2pl4# perf report
      Samples: 41K of event 'cycles:ppp', Event count (approx.): 9915302763
      Overhead  Command          Shared Object             Symbol
         9.44%  netperf          [kernel.kallsyms]         [k] __arch_copy_to_user
         7.75%  swapper          [kernel.kallsyms]         [k] _raw_spin_unlock_irq
         6.31%  swapper          [kernel.kallsyms]         [k] default_idle_call
         5.89%  swapper          [kernel.kallsyms]         [k] arch_cpu_idle
         4.37%  swapper          [kernel.kallsyms]         [k] tick_nohz_idle_exit
         4.02%  netperf          [kernel.kallsyms]         [k] _raw_spin_unlock_irq
         2.52%  netperf          [kernel.kallsyms]         [k] preempt_count_sub
         1.81%  netperf          [kernel.kallsyms]         [k] tcp_recvmsg
         1.80%  netperf          [kernel.kallsyms]         [k] _raw_spin_unlock_irqres
         1.78%  netperf          [kernel.kallsyms]         [k] preempt_count_add
         1.36%  netperf          [kernel.kallsyms]         [k] __tcp_transmit_skb
         1.20%  netperf          [kernel.kallsyms]         [k] __local_bh_enable_ip
         1.10%  netperf          [kernel.kallsyms]         [k] sh_eth_start_xmit
      
      Test results with RX checksum offload disabled:
      
      ~/netperf-2.2pl4# perf record -a ./netperf -t TCP_MAERTS -H 192.168.2.4
      TCP MAERTS TEST to 192.168.2.4
      Recv   Send    Send
      Socket Socket  Message  Elapsed
      Size   Size    Size     Time     Throughput
      bytes  bytes   bytes    secs.    10^6bits/sec
      131072  16384  16384    10.01     932.04
      [ perf record: Woken up 14 times to write data ]
      [ perf record: Captured and wrote 3.642 MB perf.data (78817 samples) ]
      ~/netperf-2.2pl4# perf report
      Samples: 78K of event 'cycles:ppp', Event count (approx.): 18091442796
      Overhead  Command          Shared Object       Symbol
         7.00%  swapper          [kernel.kallsyms]   [k] do_csum
         3.94%  swapper          [kernel.kallsyms]   [k] sh_eth_poll
         3.83%  ksoftirqd/0      [kernel.kallsyms]   [k] do_csum
         3.23%  swapper          [kernel.kallsyms]   [k] _raw_spin_unlock_irq
         2.87%  netperf          [kernel.kallsyms]   [k] __arch_copy_to_user
         2.86%  swapper          [kernel.kallsyms]   [k] arch_cpu_idle
         2.13%  swapper          [kernel.kallsyms]   [k] default_idle_call
         2.12%  ksoftirqd/0      [kernel.kallsyms]   [k] sh_eth_poll
         2.02%  swapper          [kernel.kallsyms]   [k] _raw_spin_unlock_irqrestore
         1.84%  swapper          [kernel.kallsyms]   [k] __softirqentry_text_start
         1.64%  swapper          [kernel.kallsyms]   [k] tick_nohz_idle_exit
         1.53%  netperf          [kernel.kallsyms]   [k] _raw_spin_unlock_irq
         1.32%  netperf          [kernel.kallsyms]   [k] preempt_count_sub
         1.27%  swapper          [kernel.kallsyms]   [k] __pi___inval_dcache_area
         1.22%  swapper          [kernel.kallsyms]   [k] check_preemption_disabled
         1.01%  ksoftirqd/0      [kernel.kallsyms]   [k] _raw_spin_unlock_irqrestore
      
      The above results collected on the R-Car V3H Starter Kit board.
      
      Based on the commit 4d86d381
      
       ("ravb: RX checksum offload")...
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f8e022db
    • Sergei Shtylyov's avatar
      sh_eth: rename sh_eth_cpu_data::hw_checksum · 2c2ab5af
      Sergei Shtylyov authored
      Commit 62e04b7e
      
       ("sh_eth: rename 'sh_eth_cpu_data::hw_crc'") renamed
      the field to 'hw_checksum' for the Ether DMAC "intelligent checksum",
      however some Ether MACs implement a simpler checksumming scheme, so that
      name now seems misleading. Rename that field to 'csmr' as the "intelligent
      checksum" is always controlled by the CSMR register.
      
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2c2ab5af
  13. 23 Jan, 2019 1 commit
    • Simon Horman's avatar
      ravb: expand rx descriptor data to accommodate hw checksum · 12da6430
      Simon Horman authored
      EtherAVB may provide a checksum of packet data appended to packet data. In
      order to allow this checksum to be received by the host descriptor data
      needs to be enlarged by 2 bytes to accommodate the checksum.
      
      In the case of MTU-sized packets without a VLAN tag the
      checksum were already accommodated by virtue of the space reserved for the
      VLAN tag. However, a packet of MTU-size with a  VLAN tag consumed all
      packet data space provided by a descriptor leaving no space for the
      trailing checksum.
      
      This was not detected by the driver which incorrectly used the last two
      bytes of packet data as the checksum and truncate the packet by two bytes.
      This resulted all such packets being dropped.
      
      A work around is to disable RX checksum offload
       # ethtool -K eth0 rx off
      
      This patch resolves this problem by increasing the size available for
      packet data in RX descriptors by two bytes.
      
      Tested on R-Car E3 (r8a77990) ES1.0 based Ebisu-4D board
      
      v2
      * Use sizeof(__sum16) directly rather than adding a driver-local
        #define for the size of the checksum provided by the hw (2 bytes).
      
      Fixes: 4d86d381
      
       ("ravb: RX checksum offload")
      Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
      Reviewed-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      12da6430
  14. 23 Nov, 2018 2 commits
  15. 22 Sep, 2018 1 commit
  16. 20 Sep, 2018 1 commit
  17. 19 Sep, 2018 1 commit
  18. 13 Sep, 2018 1 commit
  19. 10 Sep, 2018 1 commit
  20. 30 Aug, 2018 1 commit
  21. 23 Aug, 2018 1 commit
  22. 23 Jul, 2018 5 commits
  23. 18 Jul, 2018 1 commit