1. 24 6月, 2015 1 次提交
    • A
      stmmac: troubleshoot unexpected bits in des0 & des1 · f1590670
      Alexey Brodkin 提交于
      Current implementation of descriptor init procedure only takes
      care about setting/clearing ownership flag in "des0"/"des1"
      fields while it is perfectly possible to get unexpected bits
      set because of the following factors:
      
       [1] On driver probe underlying memory allocated with
           dma_alloc_coherent() might not be zeroed and so
           it will be filled with garbage.
      
       [2] During driver operation some bits could be set by SD/MMC
           controller (for example error flags etc).
      
      And unexpected and/or randomly set flags in "des0"/"des1"
      fields may lead to unpredictable behavior of GMAC DMA block.
      
      This change addresses both items above with:
      
       [1] Use of dma_zalloc_coherent() instead of simple
           dma_alloc_coherent() to make sure allocated memory is
           zeroed. That shouldn't affect performance because
           this allocation only happens once on driver probe.
      
       [2] Do explicit zeroing of both "des0" and "des1" fields
           of all buffer descriptors during initialization of
           DMA transfer.
      
      And while at it fixed identation of dma_free_coherent()
      counterpart as well.
      Signed-off-by: NAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Cc: arc-linux-dev@synopsys.com
      Cc: linux-kernel@vger.kernel.org
      Cc: stable@vger.kernel.org
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f1590670
  2. 31 5月, 2015 2 次提交
  3. 26 5月, 2015 1 次提交
    • M
      net: stmmac: create one debugfs dir per net-device · 466c5ac8
      Mathieu Olivari 提交于
      stmmac DebugFS entries are currently global to the driver. As a result,
      having more than one stmmac device in the system creates the following
      error:
      * ERROR stmmaceth, debugfs create directory failed
      * stmmac_hw_setup: failed debugFS registration
      
      This also results in being able to access the debugfs information for
      the first registered device only.
      
      This patch changes the debugfs structure to have one sub-directory per
      net-device. Files under "/sys/kernel/debug/stmmaceth" will now show-up
      under /sys/kernel/debug/stmmaceth/ethN/.
      Signed-off-by: NMathieu Olivari <mathieu@codeaurora.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      466c5ac8
  4. 22 5月, 2015 4 次提交
  5. 17 4月, 2015 2 次提交
  6. 09 4月, 2015 1 次提交
  7. 09 3月, 2015 1 次提交
  8. 02 3月, 2015 1 次提交
    • V
      net: stmmac: Use setup_timer and mod_timer · ccb36da1
      Vaishali Thakkar 提交于
      Use timer API functions setup_timer and mod_timer instead
      of structure assignments as they are standard way to set
      the timer and to update the expire field of an active timer
      respectively.
      
      This is done using Coccinelle and semantic patch used for
      this is as follows:
      
      // <smpl>
      @@
      expression x,y,z,a,b;
      @@
      
      -init_timer (&x);
      +setup_timer (&x, y, z);
      +mod_timer (&a, b);
      -x.function = y;
      -x.data = z;
      -x.expires = b;
      -add_timer(&a);
      // </smpl>
      Signed-off-by: NVaishali Thakkar <vthakkar1994@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ccb36da1
  9. 02 2月, 2015 1 次提交
  10. 28 1月, 2015 1 次提交
  11. 27 1月, 2015 3 次提交
  12. 23 12月, 2014 1 次提交
    • H
      stmmac: Don't init ptp again when resume from suspend/hibernation · fe131929
      Huacai Chen 提交于
      Both stmmac_open() and stmmac_resume() call stmmac_hw_setup(), and
      stmmac_hw_setup() call stmmac_init_ptp() unconditionally. However, only
      stmmac_release() calls stmmac_release_ptp(). Since stmmac_suspend()
      doesn't call stmmac_release_ptp(), stmmac_resume() also needn't call
      stmmac_init_ptp().
      
      This patch also fix a "scheduling while atomic" problem when resume
      from suspend/hibernation. Because stmmac_init_ptp() will trigger
      scheduling while stmmac_resume() hold a spinlock.
      
      Callgraph of "scheduling while atomic":
      stmmac_resume() --> stmmac_hw_setup() --> stmmac_init_ptp() -->
      stmmac_ptp_register() --> ptp_clock_register() --> device_create() -->
      device_create_groups_vargs() --> device_add() --> devtmpfs_create_node()
      --> wait_for_common() --> schedule_timeout() --> __schedule()
      Signed-off-by: NHuacai Chen <chenhc@lemote.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fe131929
  13. 20 11月, 2014 1 次提交
  14. 12 11月, 2014 1 次提交
  15. 08 11月, 2014 1 次提交
  16. 06 11月, 2014 6 次提交
  17. 04 10月, 2014 1 次提交
  18. 30 9月, 2014 1 次提交
  19. 02 9月, 2014 2 次提交
  20. 01 9月, 2014 2 次提交
  21. 30 8月, 2014 2 次提交
  22. 26 8月, 2014 2 次提交
  23. 01 8月, 2014 2 次提交
    • V
      net: stmmac: Support devicetree configs for mcast and ucast filter entries · 3b57de95
      Vince Bridgers 提交于
      This patch adds and modifies code to support multiple Multicast and Unicast
      Synopsys MAC filter configurations. The default configuration is defined to
      support legacy driver behavior, which is 64 Multicast bins. The Unicast
      filter code previously assumed all controllers support 32 or 16 Unicast
      addresses based on controller version number, but this has been corrected
      to support a default of 1 Unicast address. The filter configuration may
      be specified through the devicetree using a Synopsys specific device tree
      entry. This information was verified with Synopsys through
      Synopsys Support Case #8000684337 and shared with the maintainer.
      Signed-off-by: NVince Bridgers <vbridgers2013@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3b57de95
    • V
      net: stmmac: Correct set_filter for multicast and unicast cases · aefef4c1
      Vince Bridgers 提交于
      This patch removes the check for the number of mulitcast addresses
      when using hash based filtering since it's not necessary. If the number
      of multicast addresses in the list exceeds the number of multicast hash
      bins, the bins will "fold" over into one of the bins configured and
      enabled for the particular component instance.
      
      The default number of maximum unicast addresses was changed from 32 to 1
      since this number is not dependent on the component revision. The maximum
      number of multicast and unicast addresses is dependent on the configuration
      of the Synopsys EMAC configured by the SOC architect at the time the
      features were selected and configured for a particular component. Sadly,
      Synopsys does not provide a way to query the precise number supported
      by a particular component, so we must fall back on a devicetree entry.
      This configuration could vary from vendor to vendor (such as STMicro,
      Altera, etc).
      
      The multicast bins are set for every possible filtering case (including
      no entries) - previously the bits were set only if multicast filter entries
      were present.
      Signed-off-by: NVince Bridgers <vbridgers2013@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aefef4c1