1. 25 11月, 2014 1 次提交
  2. 19 11月, 2014 5 次提交
  3. 16 10月, 2014 1 次提交
    • N
      net: fec: ptp: fix convergence issue to support LinuxPTP stack · 28b5f058
      Nimrod Andy 提交于
      iMX6SX IEEE 1588 module has one hw issue in capturing the ATVR register.
      The current SW flow is:
      		ENET0->ATCR |= ENET_ATCR_CAPTURE_MASK;
      		ts_counter_ns = ENET0->ATVR;
      The ATVR value is not expected value that cause LinuxPTP stack cannot be convergent.
      
      ENET Block Guide/ Chapter for the iMX6SX (PELE) address the issue:
      After set ENET_ATCR[Capture], there need some time cycles before the counter
      value is capture in the register clock domain. The wait-time-cycles is at least
      6 clock cycles of the slower clock between the register clock and the 1588 clock.
      So need something like:
      		ENET0->ATCR |= ENET_ATCR_CAPTURE_MASK;
      		wait();
      		ts_counter_ns = ENET0->ATVR;
      
      For iMX6SX, the 1588 ts_clk is fixed to 25Mhz, register clock is 66Mhz, so the
      wait-time-cycles must be greater than 240ns (40ns * 6). The patch add 1us delay
      before cpu read ATVR register.
      
      Changes V2:
      Modify the commit/comments log to describe the issue clearly.
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Acked-by: NRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      28b5f058
  4. 15 10月, 2014 2 次提交
  5. 02 10月, 2014 1 次提交
  6. 27 9月, 2014 1 次提交
  7. 20 9月, 2014 2 次提交
  8. 17 9月, 2014 1 次提交
  9. 14 9月, 2014 5 次提交
  10. 23 8月, 2014 1 次提交
    • N
      net: fec: ptp: avoid register access when ipg clock is disabled · 91c0d987
      Nimrod Andy 提交于
      The current kernel hang on i.MX6SX with rootfs mount from MMC.
      The root cause is that ptp uses a periodic timer to access enet register
      even if ipg clock is disabled.
      
      FEC ptp driver start one period timer to read 1588 counter register in the
      ptp init function that is called after FEC driver is probed.
      
      To save power, after FEC probe finish, FEC driver disable all clocks including
      ipg clock that is needed for register access.
      
      i.MX5x, i.MX6q/dl/sl FEC register access don't cause system hang when ipg clock
      is disabled, just return zero value. But for i.MX6sx SOC, it cause system hang.
      
      To avoid the issue, we need to check ptp clock status before ptp timer count access.
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      91c0d987
  11. 12 8月, 2014 1 次提交
  12. 09 7月, 2014 2 次提交
  13. 08 7月, 2014 1 次提交
  14. 13 6月, 2014 4 次提交
    • N
      net: fec: Add software TSO support · 79f33912
      Nimrod Andy 提交于
      Add software TSO support for FEC.
      This feature allows to improve outbound throughput performance.
      
      Tested on imx6dl sabresd board, running iperf tcp tests shows:
      - 16.2% improvement comparing with FEC SG patch
      - 82% improvement comparing with NO SG & TSO patch
      
      $ ethtool -K eth0 tso on
      $ iperf -c 10.192.242.167 -t 3 &
      [  3] local 10.192.242.108 port 35388 connected with 10.192.242.167 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [  3]  0.0- 3.0 sec   181 MBytes   506 Mbits/sec
      
      During the testing, CPU loading is 30%.
      Since imx6dl FEC Bandwidth is limited to SOC system bus bandwidth, the
      performance with SW TSO is a milestone.
      
      CC: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
      CC: Eric Dumazet <eric.dumazet@gmail.com>
      CC: David Laight <David.Laight@ACULAB.COM>
      CC: Li Frank <B20596@freescale.com>
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      79f33912
    • N
      net: fec: Add Scatter/gather support · 6e909283
      Nimrod Andy 提交于
      Add Scatter/gather support for FEC.
      This feature allows to improve outbound throughput performance.
      
      Tested on imx6dl sabresd board:
      Running iperf tests shows a 55.4% improvement.
      
      $ ethtool -K eth0 sg off
      $ iperf -c 10.192.242.167 -t 3 &
      [  3] local 10.192.242.108 port 52618 connected with 10.192.242.167 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [  3]  0.0- 3.0 sec  99.5 MBytes   278 Mbits/sec
      
      $ ethtool -K eth0 sg on
      $ iperf -c 10.192.242.167 -t 3 &
      [  3] local 10.192.242.108 port 52617 connected with 10.192.242.167 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [  3]  0.0- 3.0 sec   154 MBytes   432 Mbits/sec
      
      CC: Li Frank <B20596@freescale.com>
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6e909283
    • N
      net: fec: Increase buffer descriptor entry number · 55d0218a
      Nimrod Andy 提交于
      In order to support SG, software TSO, let's increase BD entry number.
      
      CC: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
      CC: Eric Dumazet <eric.dumazet@gmail.com>
      CC: David Laight <David.Laight@ACULAB.COM>
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      55d0218a
    • N
      net: fec: Factorize the .xmit transmit function · 61a4427b
      Nimrod Andy 提交于
      Make the code more readable and easy to support other features like
      SG, TSO, moving the common transmit function to one api.
      
      And the patch also factorize the getting BD index to it own function.
      
      CC: David Laight <David.Laight@ACULAB.COM>
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      61a4427b
  15. 22 11月, 2013 1 次提交
  16. 05 9月, 2013 1 次提交
    • D
      net: fec: fix the error to get the previous BD entry · 36e24e2e
      Duan Fugang-B38611 提交于
      Bug: error to get the previous BD entry. When the current BD
      is the first BD, the previous BD entry must be the last BD,
      not "bdp - 1" in current logic.
      
      V4:
        * Optimize fec_enet_get_nextdesc() for code clean.
          Replace "ex_new_bd - ring_size" with "ex_base".
          Replace "new_bd - ring_size" with "base".
      
      V3:
        * Restore the API name because David suggest to use fec_enet_
          prefix for all function in fec driver.
          So, change next_bd() -> fec_enet_get_nextdesc()
              change pre_bd()  -> fec_enet_get_prevdesc()
        * Reduce the two APIs parameters for easy to call.
      
      V2:
        * Add tx_ring_size and rx_ring_size to struct fec_enet_private.
        * Replace api fec_enet_get_nextdesc() with next_bd().
          Replace api fec_enet_get_prevdesc() with pre_bd().
      
        * Move all ring size check logic to next_bd() and pre_bd(), which
          simplifies the code redundancy.
      
      V1:
        * Add BD ring size check to get the previous BD entry in correctly.
      Reviewed-by: NLi Frank <B20596@freescale.com>
      Signed-off-by: NFugang Duan  <B38611@freescale.com>
      Acked-by: NFrank Li <frank.li@freescale.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      36e24e2e
  17. 28 7月, 2013 1 次提交
    • F
      net: fec: workaround stop tx during errata ERR006358 · 03191656
      Frank Li 提交于
      If the ready bit in the transmit buffer descriptor (TxBD[R])
      is previously detected as not set during a prior frame transmission,
      then the ENET_TDAR[TDAR] bit is cleared at a later time, even if
      additional TxBDs were added to the ring and the ENET_TDAR[TDAR]
      bit is set. This results in frames not being transmitted until
      there is a 0-to-1 transition on ENET_TDAR[TDAR].
      
      Workarounds:
      code can use the transmit frame interrupt flag (ENET_EIR[TXF])
      as a method to detect whether the ENET has completed transmission
      and the ENET_TDAR[TDAR] has been cleared. If ENET_TDAR[TDAR] is
      detected as cleared when packets are queued and waiting for transmit,
      then a write to the TDAR bit will restart TxBD processing.
      
      This case main happen when loading is light. A ethernet package may
      not send out utile next package put into tx queue.
      
      How to test:
      while [ true ]
      do
      	ping <IP> -s 10000 -w 4
      	ping <IP> -s 6000 -w 2
      	ping <IP> -s 4000 -w 2
      	ping <IP> -s 10000 -w 2
      done
      
      You will see below result in overnight test.
      
      6008 bytes from 10.192.242.116: seq=1 ttl=128 time=0.722 ms
      4008 bytes from 10.192.242.116: seq=0 ttl=128 time=1001.008 ms
      4008 bytes from 10.192.242.116: seq=1 ttl=128 time=1.010 ms
      10008 bytes from 10.192.242.116: seq=0 ttl=128 time=0.896 ms
      
      After apply this patch, >1000ms delay disappear.
      Signed-off-by: NFrank Li <Frank.Li@freescale.com>
      Acked-by: NFugang Duan  <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      03191656
  18. 04 7月, 2013 1 次提交
  19. 27 6月, 2013 1 次提交
  20. 08 6月, 2013 1 次提交
  21. 28 5月, 2013 1 次提交
  22. 09 5月, 2013 1 次提交
  23. 25 4月, 2013 1 次提交
  24. 04 4月, 2013 1 次提交
  25. 15 3月, 2013 1 次提交
  26. 05 3月, 2013 1 次提交
    • F
      net: fec: fix build error in no MXC platform · acac8406
      Frank Li 提交于
      build error cause by
      Commit ff43da86
      ("NET: FEC: dynamtic check DMA desc buff type")
      
      drivers/net/ethernet/freescale/fec.c: In function ‘fec_enet_get_nextdesc’:
      drivers/net/ethernet/freescale/fec.c:215:18: error: invalid use of undefined type ‘struct bufdesc_ex’
      drivers/net/ethernet/freescale/fec.c: In function ‘fec_enet_get_prevdesc’:
      drivers/net/ethernet/freescale/fec.c:224:18: error: invalid use of undefined type ‘struct bufdesc_ex’
      drivers/net/ethernet/freescale/fec.c: In function ‘fec_enet_start_xmit’:
      drivers/net/ethernet/freescale/fec.c:286:37: error: arithmetic on pointer to an incomplete type
      drivers/net/ethernet/freescale/fec.c:287:13: error: arithmetic on pointer to an incomplete type
      drivers/net/ethernet/freescale/fec.c:324:7: error: dereferencing pointer to incomplete type etc....
      Signed-off-by: NFrank Li <Frank.Li@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      acac8406