diff options
author | Thibaut Collet <thibaut.collet@6wind.com> | 2017-06-08 05:18:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-06-08 16:05:40 -0400 |
commit | c7c550670afda2e16f9e2d06a1473885312eb6b5 (patch) | |
tree | 4f067e6175f3a1814365aa040da760e5a5fdacb6 | |
parent | daa6630a310fe2ad90ce5f7d2d196cd0353ef4fa (diff) |
bonding: fix 802.3ad support for 5G and 50G speeds
This patch adds [5|50] Gbps enum definition, and fixes
aggregated bandwidth calculation based on above slave links.
Fixes: c9a70d43461d ("net-next: ethtool: Added port speed macros.")
Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/bonding/bond_3ad.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index b44a6aeb346d..d1b09be63ba4 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
@@ -90,10 +90,12 @@ enum ad_link_speed_type { | |||
90 | AD_LINK_SPEED_100MBPS, | 90 | AD_LINK_SPEED_100MBPS, |
91 | AD_LINK_SPEED_1000MBPS, | 91 | AD_LINK_SPEED_1000MBPS, |
92 | AD_LINK_SPEED_2500MBPS, | 92 | AD_LINK_SPEED_2500MBPS, |
93 | AD_LINK_SPEED_5000MBPS, | ||
93 | AD_LINK_SPEED_10000MBPS, | 94 | AD_LINK_SPEED_10000MBPS, |
94 | AD_LINK_SPEED_20000MBPS, | 95 | AD_LINK_SPEED_20000MBPS, |
95 | AD_LINK_SPEED_25000MBPS, | 96 | AD_LINK_SPEED_25000MBPS, |
96 | AD_LINK_SPEED_40000MBPS, | 97 | AD_LINK_SPEED_40000MBPS, |
98 | AD_LINK_SPEED_50000MBPS, | ||
97 | AD_LINK_SPEED_56000MBPS, | 99 | AD_LINK_SPEED_56000MBPS, |
98 | AD_LINK_SPEED_100000MBPS, | 100 | AD_LINK_SPEED_100000MBPS, |
99 | }; | 101 | }; |
@@ -259,10 +261,12 @@ static inline int __check_agg_selection_timer(struct port *port) | |||
259 | * %AD_LINK_SPEED_100MBPS, | 261 | * %AD_LINK_SPEED_100MBPS, |
260 | * %AD_LINK_SPEED_1000MBPS, | 262 | * %AD_LINK_SPEED_1000MBPS, |
261 | * %AD_LINK_SPEED_2500MBPS, | 263 | * %AD_LINK_SPEED_2500MBPS, |
264 | * %AD_LINK_SPEED_5000MBPS, | ||
262 | * %AD_LINK_SPEED_10000MBPS | 265 | * %AD_LINK_SPEED_10000MBPS |
263 | * %AD_LINK_SPEED_20000MBPS | 266 | * %AD_LINK_SPEED_20000MBPS |
264 | * %AD_LINK_SPEED_25000MBPS | 267 | * %AD_LINK_SPEED_25000MBPS |
265 | * %AD_LINK_SPEED_40000MBPS | 268 | * %AD_LINK_SPEED_40000MBPS |
269 | * %AD_LINK_SPEED_50000MBPS | ||
266 | * %AD_LINK_SPEED_56000MBPS | 270 | * %AD_LINK_SPEED_56000MBPS |
267 | * %AD_LINK_SPEED_100000MBPS | 271 | * %AD_LINK_SPEED_100000MBPS |
268 | */ | 272 | */ |
@@ -296,6 +300,10 @@ static u16 __get_link_speed(struct port *port) | |||
296 | speed = AD_LINK_SPEED_2500MBPS; | 300 | speed = AD_LINK_SPEED_2500MBPS; |
297 | break; | 301 | break; |
298 | 302 | ||
303 | case SPEED_5000: | ||
304 | speed = AD_LINK_SPEED_5000MBPS; | ||
305 | break; | ||
306 | |||
299 | case SPEED_10000: | 307 | case SPEED_10000: |
300 | speed = AD_LINK_SPEED_10000MBPS; | 308 | speed = AD_LINK_SPEED_10000MBPS; |
301 | break; | 309 | break; |
@@ -312,6 +320,10 @@ static u16 __get_link_speed(struct port *port) | |||
312 | speed = AD_LINK_SPEED_40000MBPS; | 320 | speed = AD_LINK_SPEED_40000MBPS; |
313 | break; | 321 | break; |
314 | 322 | ||
323 | case SPEED_50000: | ||
324 | speed = AD_LINK_SPEED_50000MBPS; | ||
325 | break; | ||
326 | |||
315 | case SPEED_56000: | 327 | case SPEED_56000: |
316 | speed = AD_LINK_SPEED_56000MBPS; | 328 | speed = AD_LINK_SPEED_56000MBPS; |
317 | break; | 329 | break; |
@@ -707,6 +719,9 @@ static u32 __get_agg_bandwidth(struct aggregator *aggregator) | |||
707 | case AD_LINK_SPEED_2500MBPS: | 719 | case AD_LINK_SPEED_2500MBPS: |
708 | bandwidth = nports * 2500; | 720 | bandwidth = nports * 2500; |
709 | break; | 721 | break; |
722 | case AD_LINK_SPEED_5000MBPS: | ||
723 | bandwidth = nports * 5000; | ||
724 | break; | ||
710 | case AD_LINK_SPEED_10000MBPS: | 725 | case AD_LINK_SPEED_10000MBPS: |
711 | bandwidth = nports * 10000; | 726 | bandwidth = nports * 10000; |
712 | break; | 727 | break; |
@@ -719,6 +734,9 @@ static u32 __get_agg_bandwidth(struct aggregator *aggregator) | |||
719 | case AD_LINK_SPEED_40000MBPS: | 734 | case AD_LINK_SPEED_40000MBPS: |
720 | bandwidth = nports * 40000; | 735 | bandwidth = nports * 40000; |
721 | break; | 736 | break; |
737 | case AD_LINK_SPEED_50000MBPS: | ||
738 | bandwidth = nports * 50000; | ||
739 | break; | ||
722 | case AD_LINK_SPEED_56000MBPS: | 740 | case AD_LINK_SPEED_56000MBPS: |
723 | bandwidth = nports * 56000; | 741 | bandwidth = nports * 56000; |
724 | break; | 742 | break; |