SPEED_UNKNOWN was introduced in Linux kernel v3.2.

While at it, add some defines for 40G and 100G that were added in more
recent kernels.

Fixes: 6240c0b4c80e ("netdev: Add netdev_get_speed() to netdev API.")
Acked-by: Mike Pattrick <[email protected]>
Acked-by: Eelco Chaudron <[email protected]>
Signed-off-by: David Marchand <[email protected]>
---
Changes since v4:
- moved definitions and annotated with Linux versions,

---
 lib/netdev-linux.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index c383663dde..1dc64b4e06 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -175,6 +175,11 @@ static inline uint32_t rpl_ethtool_cmd_speed(const struct 
ethtool_cmd *ep)
 #define ADVERTISED_10000baseR_FEC      (1 << 20)
 #endif
 
+/* Linux 3.2 introduced "unknown" speed. */
+#ifndef SPEED_UNKNOWN
+#define SPEED_UNKNOWN -1
+#endif
+
 /* Linux 3.5 introduced supported and advertised flags for
  * 40G base KR4, CR4, SR4 and LR4. */
 #ifndef SUPPORTED_40000baseKR4_Full
@@ -188,6 +193,16 @@ static inline uint32_t rpl_ethtool_cmd_speed(const struct 
ethtool_cmd *ep)
 #define ADVERTISED_40000baseLR4_Full   (1 << 26)
 #endif
 
+/* Linux 3.19 introduced speed for 40G. */
+#ifndef SPEED_40000
+#define SPEED_40000 40000
+#endif
+
+/* Linux 4.2 introduced speed for 100G. */
+#ifndef SPEED_100000
+#define SPEED_100000 100000
+#endif
+
 /* Linux 2.6.35 introduced IFLA_STATS64 and rtnl_link_stats64.
  *
  * Tests for rtnl_link_stats64 don't seem to consistently work, e.g. on
@@ -2673,9 +2688,9 @@ netdev_linux_read_features(struct netdev_linux *netdev)
         netdev->current = ecmd.duplex ? NETDEV_F_1GB_FD : NETDEV_F_1GB_HD;
     } else if (netdev->current_speed == SPEED_10000) {
         netdev->current = NETDEV_F_10GB_FD;
-    } else if (netdev->current_speed == 40000) {
+    } else if (netdev->current_speed == SPEED_40000) {
         netdev->current = NETDEV_F_40GB_FD;
-    } else if (netdev->current_speed == 100000) {
+    } else if (netdev->current_speed == SPEED_100000) {
         netdev->current = NETDEV_F_100GB_FD;
     } else if (netdev->current_speed == 1000000) {
         netdev->current = NETDEV_F_1TB_FD;
-- 
2.51.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to