1. 26 9月, 2014 1 次提交
  2. 01 8月, 2014 1 次提交
    • 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
  3. 03 6月, 2014 1 次提交
  4. 29 3月, 2014 1 次提交
  5. 12 3月, 2014 1 次提交
  6. 14 2月, 2014 1 次提交
  7. 22 1月, 2014 1 次提交
    • V
      stmmac: Fix kernel crashes for jumbo frames · 2618abb7
      Vince Bridgers 提交于
      These changes correct the following issues with jumbo frames on the
      stmmac driver:
      
      1) The Synopsys EMAC can be configured to support different FIFO
      sizes at core configuration time. There's no way to query the
      controller and know the FIFO size, so the driver needs to get this
      information from the device tree in order to know how to correctly
      handle MTU changes and setting up dma buffers. The default
      max-frame-size is as currently used, which is the size of a jumbo
      frame.
      
      2) The driver was enabling Jumbo frames by default, but was not allocating
      dma buffers of sufficient size to handle the maximum possible packet
      size that could be received. This led to memory corruption since DMAs were
      occurring beyond the extent of the allocated receive buffers for certain types
      of network traffic.
      
      kernel BUG at net/core/skbuff.c:126!
      Internal error: Oops - BUG: 0 [#1] SMP ARM
      Modules linked in:
      CPU: 0 PID: 563 Comm: sockperf Not tainted 3.13.0-rc6-01523-gf7111b9 #31
      task: ef35e580 ti: ef252000 task.ti: ef252000
      PC is at skb_panic+0x60/0x64
      LR is at skb_panic+0x60/0x64
      pc : [<c03c7c3c>]    lr : [<c03c7c3c>]    psr: 60000113
      sp : ef253c18  ip : 60000113  fp : 00000000
      r10: ef3a5400  r9 : 00000ebc  r8 : ef3a546c
      r7 : ee59f000  r6 : ee59f084  r5 : ee59ff40  r4 : ee59f140
      r3 : 000003e2  r2 : 00000007  r1 : c0b9c420  r0 : 0000007d
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      Control: 10c5387d  Table: 2e8ac04a  DAC: 00000015
      Process sockperf (pid: 563, stack limit = 0xef252248)
      Stack: (0xef253c18 to 0xef254000)
      3c00:                                                       00000ebc ee59f000
      3c20: ee59f084 ee59ff40 ee59f140 c04a9cd8 ee8c50c0 00000ebc ee59ff40 00000000
      3c40: ee59f140 c02d0ef0 00000056 ef1eda80 ee8c50c0 00000ebc 22bbef29 c0318f8c
      3c60: 00000056 ef3a547c ffe2c716 c02c9c90 c0ba1298 ef3a5838 ef3a5838 ef3a5400
      3c80: 000020c0 ee573840 000055cb ef3f2050 c053f0e0 c0319214 22b9b085 22d92813
      3ca0: 00001c80 004b8e00 ef3a5400 ee573840 ef3f2064 22d92813 ef3f2064 000055cb
      3cc0: ef3f2050 c031a19c ef252000 00000000 00000000 c0561bc0 00000000 ff00ffff
      3ce0: c05621c0 ef3a5400 ef3f2064 ee573840 00000020 ef3f2064 000055cb ef3f2050
      3d00: c053f0e0 c031cad0 c053e740 00000e60 00000000 00000000 ee573840 ef3a5400
      3d20: ef0a6e00 00000000 ef3f2064 c032507c 00010000 00000020 c0561bc0 c0561bc0
      3d40: ee599850 c032799c 00000000 ee573840 c055a380 ef3a5400 00000000 ef3f2064
      3d60: ef3f2050 c032799c 0101c7c0 2b6755cb c059a280 c030e4d8 000055cb ffffffff
      3d80: ee574fc0 c055a380 ee574000 ee573840 00002b67 ee573840 c03fe9c4 c053fa68
      3da0: c055a380 00001f6f 00000000 ee573840 c053f0e0 c0304fdc ef0a6e01 ef3f2050
      3dc0: ee573858 ef031000 ee573840 c03055d8 c0ba0c40 ef000f40 00100100 c053f0dc
      3de0: c053ffdc c053f0f0 00000008 00000000 ef031000 c02da948 00001140 00000000
      3e00: c0563c78 ef253e5f 00000020 ee573840 00000020 c053f0f0 ef313400 ee573840
      3e20: c053f0e0 00000000 00000000 c05380c0 ef313400 00001000 00000015 c02df280
      3e40: ee574000 ef001e00 00000000 00001080 00000042 005cd980 ef031500 ef031500
      3e60: 00000000 c02df824 ef031500 c053e390 c0541084 f00b1e00 c05925e8 c02df864
      3e80: 00001f5c ef031440 c053e390 c0278524 00000002 00000000 c0b9eb48 c02df280
      3ea0: ee8c7180 00000100 c0542ca8 00000015 00000040 ef031500 ef031500 ef031500
      3ec0: c027803c ef252000 00000040 000000ec c05380c0 c0b9eb40 c0b9eb48 c02df940
      3ee0: ef060780 ffffa4dd c0564a9c c056343c 002e80a8 00000080 ef031500 00000001
      3f00: c053808c ef252000 fffec100 00000003 00000004 002e80a8 0000000c c00258f0
      3f20: 002e80a8 c005e704 00000005 00000100 c05634d0 c0538080 c05333e0 00000000
      3f40: 0000000a c0565580 c05380c0 ffffa4dc c05434f4 00400100 00000004 c0534cd4
      3f60: 00000098 00000000 fffec100 002e80a8 00000004 002e80a8 002a20e0 c0025da8
      3f80: c0534cd4 c000f020 fffec10c c053ea60 ef253fb0 c0008530 0000ffe2 b6ef67f4
      3fa0: 40000010 ffffffff 00000124 c0012f3c 0000ffe2 002e80f0 0000ffe2 00004000
      3fc0: becb6338 becb6334 00000004 00000124 002e80a8 00000004 002e80a8 002a20e0
      3fe0: becb6300 becb62f4 002773bb b6ef67f4 40000010 ffffffff 00000000 00000000
      [<c03c7c3c>] (skb_panic+0x60/0x64) from [<c02d0ef0>] (skb_put+0x4c/0x50)
      [<c02d0ef0>] (skb_put+0x4c/0x50) from [<c0318f8c>] (tcp_collapse+0x314/0x3ec)
      [<c0318f8c>] (tcp_collapse+0x314/0x3ec) from [<c0319214>]
      (tcp_try_rmem_schedule+0x1b0/0x3c4)
      [<c0319214>] (tcp_try_rmem_schedule+0x1b0/0x3c4) from [<c031a19c>]
      (tcp_data_queue+0x480/0xe6c)
      [<c031a19c>] (tcp_data_queue+0x480/0xe6c) from [<c031cad0>]
      (tcp_rcv_established+0x180/0x62c)
      [<c031cad0>] (tcp_rcv_established+0x180/0x62c) from [<c032507c>]
      (tcp_v4_do_rcv+0x13c/0x31c)
      [<c032507c>] (tcp_v4_do_rcv+0x13c/0x31c) from [<c032799c>]
      (tcp_v4_rcv+0x718/0x73c)
      [<c032799c>] (tcp_v4_rcv+0x718/0x73c) from [<c0304fdc>]
      (ip_local_deliver+0x98/0x274)
      [<c0304fdc>] (ip_local_deliver+0x98/0x274) from [<c03055d8>]
      (ip_rcv+0x420/0x758)
      [<c03055d8>] (ip_rcv+0x420/0x758) from [<c02da948>]
      (__netif_receive_skb_core+0x44c/0x5bc)
      [<c02da948>] (__netif_receive_skb_core+0x44c/0x5bc) from [<c02df280>]
      (netif_receive_skb+0x48/0xb4)
      [<c02df280>] (netif_receive_skb+0x48/0xb4) from [<c02df824>]
      (napi_gro_flush+0x70/0x94)
      [<c02df824>] (napi_gro_flush+0x70/0x94) from [<c02df864>]
      (napi_complete+0x1c/0x34)
      [<c02df864>] (napi_complete+0x1c/0x34) from [<c0278524>]
      (stmmac_poll+0x4e8/0x5c8)
      [<c0278524>] (stmmac_poll+0x4e8/0x5c8) from [<c02df940>]
      (net_rx_action+0xc4/0x1e4)
      [<c02df940>] (net_rx_action+0xc4/0x1e4) from [<c00258f0>]
      (__do_softirq+0x12c/0x2e8)
      [<c00258f0>] (__do_softirq+0x12c/0x2e8) from [<c0025da8>] (irq_exit+0x78/0xac)
      [<c0025da8>] (irq_exit+0x78/0xac) from [<c000f020>] (handle_IRQ+0x44/0x90)
      [<c000f020>] (handle_IRQ+0x44/0x90) from [<c0008530>]
      (gic_handle_irq+0x2c/0x5c)
      [<c0008530>] (gic_handle_irq+0x2c/0x5c) from [<c0012f3c>]
      (__irq_usr+0x3c/0x60)
      
      3) The driver was setting the dma buffer size after allocating dma buffers,
      which caused a system panic when changing the MTU.
      
      BUG: Bad page state in process ifconfig  pfn:2e850
      page:c0b72a00 count:0 mapcount:0 mapping:  (null) index:0x0
      page flags: 0x200(arch_1)
      Modules linked in:
      CPU: 0 PID: 566 Comm: ifconfig Not tainted 3.13.0-rc6-01523-gf7111b9 #29
      [<c001547c>] (unwind_backtrace+0x0/0xf8) from [<c00122dc>]
      (show_stack+0x10/0x14)
      [<c00122dc>] (show_stack+0x10/0x14) from [<c03c793c>] (dump_stack+0x70/0x88)
      [<c03c793c>] (dump_stack+0x70/0x88) from [<c00b2620>] (bad_page+0xc8/0x118)
      [<c00b2620>] (bad_page+0xc8/0x118) from [<c00b302c>]
      (get_page_from_freelist+0x744/0x870)
      [<c00b302c>] (get_page_from_freelist+0x744/0x870) from [<c00b40f4>]
      (__alloc_pages_nodemask+0x118/0x86c)
      [<c00b40f4>] (__alloc_pages_nodemask+0x118/0x86c) from [<c00b4858>]
      (__get_free_pages+0x10/0x54)
      [<c00b4858>] (__get_free_pages+0x10/0x54) from [<c00cba1c>]
      (kmalloc_order_trace+0x24/0xa0)
      [<c00cba1c>] (kmalloc_order_trace+0x24/0xa0) from [<c02d199c>]
      (__kmalloc_reserve.isra.21+0x24/0x70)
      [<c02d199c>] (__kmalloc_reserve.isra.21+0x24/0x70) from [<c02d240c>]
      (__alloc_skb+0x68/0x13c)
      [<c02d240c>] (__alloc_skb+0x68/0x13c) from [<c02d3930>]
      (__netdev_alloc_skb+0x3c/0xe8)
      [<c02d3930>] (__netdev_alloc_skb+0x3c/0xe8) from [<c0279378>]
      (stmmac_open+0x63c/0x1024)
      [<c0279378>] (stmmac_open+0x63c/0x1024) from [<c02e18cc>]
      (__dev_open+0xa0/0xfc)
      [<c02e18cc>] (__dev_open+0xa0/0xfc) from [<c02e1b40>]
      (__dev_change_flags+0x94/0x158)
      [<c02e1b40>] (__dev_change_flags+0x94/0x158) from [<c02e1c24>]
      (dev_change_flags+0x18/0x48)
      [<c02e1c24>] (dev_change_flags+0x18/0x48) from [<c0337bc0>]
      (devinet_ioctl+0x638/0x700)
      [<c0337bc0>] (devinet_ioctl+0x638/0x700) from [<c02c7aec>]
      (sock_ioctl+0x64/0x290)
      [<c02c7aec>] (sock_ioctl+0x64/0x290) from [<c0100890>]
      (do_vfs_ioctl+0x78/0x5b8)
      [<c0100890>] (do_vfs_ioctl+0x78/0x5b8) from [<c0100e0c>] (SyS_ioctl+0x3c/0x5c)
      [<c0100e0c>] (SyS_ioctl+0x3c/0x5c) from [<c000e760>]
      
      The fixes have been verified using reproducible, automated testing.
      Signed-off-by: NVince Bridgers <vbridgers2013@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2618abb7
  8. 20 1月, 2014 6 次提交
  9. 17 1月, 2014 2 次提交
  10. 20 12月, 2013 1 次提交
  11. 06 9月, 2013 1 次提交
  12. 31 8月, 2013 2 次提交
  13. 29 8月, 2013 1 次提交
  14. 25 7月, 2013 1 次提交
  15. 05 7月, 2013 2 次提交
  16. 28 5月, 2013 1 次提交
  17. 12 4月, 2013 1 次提交
  18. 08 12月, 2012 1 次提交
  19. 04 12月, 2012 1 次提交
  20. 01 9月, 2012 2 次提交
    • S
      net:stmmac: convert driver to use devm_request_and_ioremap. · 3f8bdecd
      Srinivas Kandagatla 提交于
      This patch moves calls to ioremap and request_mem_region to
      devm_request_and_ioremap call.
      Signed-off-by: NSrinivas Kandagatla <srinivas.kandagatla@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3f8bdecd
    • S
      net:stmmac: fix broken stmmac_pltfr_remove. · 1f9defa0
      Srinivas Kandagatla 提交于
      This patch fixes stmmac_pltfr_remove function, which is broken because,
      it is accessing plat variable via freed memory priv pointer which gets
      freed by free_netdev called from stmmac_dvr_remove.
      
      In short this patch caches the plat pointer in local variable before
      calling stmmac_dvr_remove to prevent code accessing freed memory.
      
      Without this patch any attempt to remove the stmmac device will fail as
      below:
      
      Unregistering eth 0 ...
      Unable to handle kernel paging request at virtual address 6b6b6bab
      pgd = de5dc000
      [6b6b6bab] *pgd=00000000
      Internal error: Oops: 5 [#1] PREEMPT SMP
      Modules linked in: cdev(O+)
      CPU: 0    Tainted: G           O  (3.3.1_stm24_0210-b2000+ #25)
      PC is at stmmac_pltfr_remove+0x2c/0xa0
      LR is at stmmac_pltfr_remove+0x28/0xa0
      pc : [<c01b8908>]    lr : [<c01b8904>]    psr: 60000013
      sp : def6be78  ip : de6c5a00  fp : 00000000
      r10: 00000028  r9 : c082d81d  r8 : 00000001
      r7 : de65a600  r6 : df81b240  r5 : c0413fd8  r4 : 00000000
      r3 : 6b6b6b6b  r2 : def6be6c  r1 : c0355e2b  r0 : 00000020
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      Control: 10c53c7d  Table: 5e5dc04a  DAC: 00000015
      Process insmod (pid: 738, stack limit = 0xdef6a2f0)
      Stack: (0xdef6be78 to 0xdef6c000)
      be60:                                                       c0413fe0
      c0403658
      be80: c0400bb0 c019270c c01926f8 c0191478 00000000 c0414014 c0413fe0
      c01914d8
      bea0: 00000000 c0413fe0 df8045d0 c019109c c0413fe0 c0400bf0 c0413fd8
      c018f04c
      bec0: 00000000 bf000000 c0413fd8 c01929a0 c0413fd8 bf000000 00000000
      c0192bfc
      bee0: bf00009c bf000014 def6a000 c000859c 00000000 00000001 bf00009c
      bf00009c
      bf00: 00000001 bf00009c 00000001 bf0000e4 de65a600 00000001 c082d81d
      c0058cd0
      bf20: bf0000a8 c004fbd8 c0056414 c082d815 c02aea20 bf0001f0 00b0b008
      e0846208
      bf40: c03ec8a0 e0846000 0000db0d e0850604 e08504de e0853a24 00000204
      000002d4
      bf60: 00000000 00000000 0000001c 0000001d 00000009 00000000 00000006
      00000000
      bf80: 00000003 f63d4e2e 0000db0d bef02ed8 00000080 c000d2e8 def6a000
      00000000
      bfa0: 00000000 c000d140 f63d4e2e 0000db0d 00b0b018 0000db0d 00b0b008
      b6f4f298
      bfc0: f63d4e2e 0000db0d bef02ed8 00000080 00000003 00000000 00010000
      00000000
      bfe0: 00b0b008 bef02c64 00008d20 b6ef3784 60000010 00b0b018 5a5a5a5a
      5a5a5a5a
      [<c01b8908>] (stmmac_pltfr_remove+0x2c/0xa0) from [<c019270c>]
      (platform_drv_remove+0x14/0x18)
      [<c019270c>] (platform_drv_remove+0x14/0x18) from [<c0191478>]
      (__device_release_driver+0x64/0xa4)
      [<c0191478>] (__device_release_driver+0x64/0xa4) from [<c01914d8>]
      (device_release_driver+0x20/0x2c)
      [<c01914d8>] (device_release_driver+0x20/0x2c) from [<c019109c>]
      (bus_remove_device+0xcc/0xdc)
      [<c019109c>] (bus_remove_device+0xcc/0xdc) from [<c018f04c>]
      (device_del+0x104/0x160)
      [<c018f04c>] (device_del+0x104/0x160) from [<c01929a0>]
      (platform_device_del+0x18/0x58)
      [<c01929a0>] (platform_device_del+0x18/0x58) from [<c0192bfc>]
      (platform_device_unregister+0xc/0x18)
      [<c0192bfc>] (platform_device_unregister+0xc/0x18) from [<bf000014>]
      (r_init+0x14/0x2c [cdev])
      [<bf000014>] (r_init+0x14/0x2c [cdev]) from [<c000859c>]
      (do_one_initcall+0x90/0x160)
      [<c000859c>] (do_one_initcall+0x90/0x160) from [<c0058cd0>]
      (sys_init_module+0x15c4/0x1794)
      [<c0058cd0>] (sys_init_module+0x15c4/0x1794) from [<c000d140>]
      (ret_fast_syscall+0x0/0x30)
      Code: e1a04000 e59f0070 eb039b65 e59636e4 (e5933040)
      Signed-off-by: NSrinivas Kandagatla <srinivas.kandagatla@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1f9defa0
  21. 09 8月, 2012 1 次提交
    • A
      net/stmmac: mark probe function as __devinit · f5addb91
      Arnd Bergmann 提交于
      Driver probe functions are generally __devinit so they will be
      discarded after initialization for non-hotplug kernels.
      This was found by a new warning after patch 6a228452 "stmmac: Add
      device-tree support" adds a new __devinit function that is called
      from stmmac_pltfr_probe.
      
      Without this patch, building socfpga_defconfig results in:
      
      WARNING: drivers/net/ethernet/stmicro/stmmac/stmmac.o(.text+0x5d4c): Section mismatch in reference from the function stmmac_pltfr_probe() to the function .devinit.text:stmmac_probe_config_dt()
      The function stmmac_pltfr_probe() references
      the function __devinit stmmac_probe_config_dt().
      This is often because stmmac_pltfr_probe lacks a __devinit
      annotation or the annotation of stmmac_probe_config_dt is wrong.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Stefan Roese <sr@denx.de>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Acked-by: NStefan Roese <sr@denx.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f5addb91
  22. 20 7月, 2012 1 次提交
  23. 01 7月, 2012 1 次提交
    • G
      stmmac: add the Energy Efficient Ethernet support · d765955d
      Giuseppe CAVALLARO 提交于
      This patch adds the Energy Efficient Ethernet support to the stmmac.
      
      Please see the driver's documentation for further details about this support
      in the driver.
      
      Thanks also goes to Rayagond Kokatanur for his first implementation.
      
      Note:
       to clearly manage and expose the lpi interrupt status and eee ethtool
       stats I've had to do some modifications to the driver's design and I
       found really useful to move other parts of the code (e.g. mmc irq stat)
       in the main directly. So this means that some core has been reworked
       to introduce the EEE.
      
      v1: initial patch
      v2: fixed some sparse issues (typos)
      v3: erroneously sent the v2 renamed as v3
      v4:
      	o Fixed the return value of the stmmac_eee_init as suggested by D.Miller
      	o Totally reviewed the ethtool support for EEE
      	o Added a new internal parameter to tune the SW timer for TX LPI.
      v5: do not change any eee setting in case of the stmmac_ethtool_op_set_eee fails
          (it has to return -EOPNOTSUPP in that case).
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d765955d
  24. 07 6月, 2012 2 次提交
    • G
      stmmac: fix driver Kconfig when built as module · ba27ec66
      Giuseppe CAVALLARO 提交于
      This patches fixes the driver when built as dynamic module.
      In fact, the platform part cannot be built and the probe fails
      (thanks to Bob Liu that reported this bug).
      
      v2: as D. Miller suggested, it is not necessary to make the
      pci and the platform code mutually exclusive.
      Having both could also help, at built time ,to verify that
      all the code is validated and compiles fine.
      
      v3: removed wrong Reviewed-by from the patch
      Reported-by: NBob Liu <lliubbo@gmail.com>
      cc: Rayagond Kokatanur <rayagond@vayavyalabs.com>
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ba27ec66
    • J
      ethernet: Remove casts to same type · 64699336
      Joe Perches 提交于
      Adding casts of objects to the same type is unnecessary
      and confusing for a human reader.
      
      For example, this cast:
      
              int y;
              int *p = (int *)&y;
      
      I used the coccinelle script below to find and remove these
      unnecessary casts.  I manually removed the conversions this
      script produces of casts with __force, __iomem and __user.
      
      @@
      type T;
      T *p;
      @@
      
      -       (T *)p
      +       p
      
      A function in atl1e_main.c was passed a const pointer
      when it actually modified elements of the structure.
      
      Change the argument to a non-const pointer.
      
      A function in stmmac needed a __force to avoid a sparse
      warning.  Added it.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      64699336
  25. 20 4月, 2012 2 次提交
  26. 06 4月, 2012 1 次提交
  27. 17 3月, 2012 1 次提交
  28. 16 2月, 2012 1 次提交
  29. 13 2月, 2012 1 次提交