Firefly Open Source Community

   Login   |   Register   |
New_Topic
Print Previous Topic Next Topic

[Linux] ethernet flow control support

24

Credits

0

Prestige

0

Contribution

new registration

Rank: 1

Credits
24

【Linux】 ethernet flow control support

Posted at 4/3/2019 14:13:07      View:6094 | Replies:3        Print      Only Author   [Copy Link] 1#
Is there possibility to switch on flow control on ethernet interface? Now is the ethernet PHY layer chip RTL8211E set after hw reset to default without flow control announcement. There is no activated control driver in the Linux kernel to set it. Thanks. Vaclav.
Reply

Use props Report

1397

Credits

0

Prestige

0

Contribution

vip

Rank: 6Rank: 6

Credits
1397
Posted at 4/4/2019 17:22:04        Only Author  2#
In drivers/net/ethernet/stmicro/stmmac/stmmac_main.c , there is a flow control module parameter.

  1. static int flow_ctrl = FLOW_OFF;                                                                                                                  
  2. module_param(flow_ctrl, int, S_IRUGO | S_IWUSR);                                                                                                   
  3. MODULE_PARM_DESC(flow_ctrl, "Flow control ability [on/off]");                                                                                      
Copy the code


It defaults to FLOW_OFF. You can modify it and recompile the kernel to check if it works.
Reply

Use props Report

1397

Credits

0

Prestige

0

Contribution

vip

Rank: 6Rank: 6

Credits
1397
Posted at 4/4/2019 17:28:26        Only Author  3#
Or follow the commands below to have a hot fix:

  1. cd /sys/bus/platform/drivers/rk_gmac-dwmac

  2. # unbind the ethernet device from the driver
  3. echo fe300000.ethernet > unbind

  4. # turn on flow_ctrl
  5. echo 1 > /sys/module/stmmac/parameters/flow_ctrl

  6. # bind the ethernet device back
  7. echo fe300000.ethernet > bind
Copy the code


After these commands, there're messages from the kernel:

  1. [11547.465973] force_sf_dma_mode is ignored if force_thresh_dma_mode is set.[11547.466691] rk_gmac-dwmac fe300000.ethernet: Looking up phy-supply from device tree
  2. [11547.467826] rk_gmac-dwmac fe300000.ethernet: clock input or output? (input).
  3. [11547.468510] rk_gmac-dwmac fe300000.ethernet: TX delay(0x28).
  4. [11547.469033] rk_gmac-dwmac fe300000.ethernet: RX delay(0x1b).
  5. [11547.469635] rk_gmac-dwmac fe300000.ethernet: integrated PHY? (no).
  6. [11547.470722] rk_gmac-dwmac fe300000.ethernet: cannot get clock clk_mac_speed
  7. [11547.471349] rk_gmac-dwmac fe300000.ethernet: clock input from PHY
  8. [11547.476958] rk_gmac-dwmac fe300000.ethernet: init for RGMII
  9. [11547.486003] stmmac - user ID: 0x10, Synopsys ID: 0x35
  10. [11547.486561]  Ring mode enabled
  11. [11547.486844]  DMA HW capability register supported
  12. [11547.487250]  Normal descriptors
  13. [11547.487688]  RX Checksum Offload Engine supported (type 2)
  14. [11547.488177]  Wake-Up On Lan supported
  15. [11547.488617]  Enable RX Mitigation via HW Watchdog Timer
  16. [11547.491855] of_get_named_gpiod_flags: parsed 'snps,reset-gpio' property of node '/ethernet@fe300000[0]' - status (0)
  17. [11547.492826] gpio-111 (mdio-reset): gpiod_request: status -16
  18. [11547.509629] libphy: stmmac: probed
  19. [11547.509949] eth%d: PHY ID 001cc915 at 0 IRQ POLL (stmmac-0:00) active
  20. [11547.510616] eth%d: PHY ID 001cc915 at 1 IRQ POLL (stmmac-0:01)
  21. root@firefly:/sys/bus/platform/drivers/rk_gmac-dwmac# [11547.615421] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

  22. root@firefly:/sys/bus/platform/drivers/rk_gmac-dwmac# [11550.624270] rk_gmac-dwmac fe300000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
Copy the code


The last line is indicating flow control enabled, right?  Plz check
Reply

Use props Report

24

Credits

0

Prestige

0

Contribution

new registration

Rank: 1

Credits
24
Posted at 5/13/2019 20:10:22        Only Author  4#
penguin Posted at 4/4/2019 17:28
Or follow the commands below to have a hot fix:

It doesn't work. The stmmac driver uses kernel generic-phy driver for PHY layer chip /RTL8211E/ and this driver has flow control advertisement switched off.
                                                                                                Vaclav.
Reply

Use props Report

You need to log in before you can reply Login | Register

This forum Credits Rules

Quick Reply Back to top Back to list