aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Collet <thibaut.collet@6wind.com>2017-06-08 05:18:11 -0400
committerDavid S. Miller <davem@davemloft.net>2017-06-08 16:05:40 -0400
commitc7c550670afda2e16f9e2d06a1473885312eb6b5 (patch)
tree4f067e6175f3a1814365aa040da760e5a5fdacb6
parentdaa6630a310fe2ad90ce5f7d2d196cd0353ef4fa (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.c18
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;