Handle advertised and supported flags for the following speeds: * 10G base KX4, KR, R * 40G base KR4, CR4, SR4, LR4
Signed-off-by: Simon Horman <simon.hor...@netronome.com> --- * The defines used in this patch are provided by Linux kernel headers. The defines for the 10G speeds were added in v2.6.30 and the defines for the 40G speeds were added in v3.5. The source file in question is only compiled when building for a Linux host. I am unsure of that compatibility considerations are regarding Linux kernel versions and OVS user-space code. * This patch is a counter-part to "netdev-linux: correctly detect port speed bits beyond 16bit" which I have already posted. --- lib/netdev-linux.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index 64f321cc9822..c5376a986d80 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -1788,9 +1788,18 @@ netdev_linux_read_features(struct netdev_linux *netdev) if (ecmd.supported & SUPPORTED_1000baseT_Full) { netdev->supported |= NETDEV_F_1GB_FD; } - if (ecmd.supported & SUPPORTED_10000baseT_Full) { + if ((ecmd.supported & SUPPORTED_10000baseT_Full) || + (ecmd.supported & SUPPORTED_10000baseKX4_Full) || + (ecmd.supported & SUPPORTED_10000baseKR_Full) || + (ecmd.supported & SUPPORTED_10000baseR_FEC)) { netdev->supported |= NETDEV_F_10GB_FD; } + if ((ecmd.supported & SUPPORTED_40000baseKR4_Full) || + (ecmd.supported & SUPPORTED_40000baseCR4_Full) || + (ecmd.supported & SUPPORTED_40000baseSR4_Full) || + (ecmd.supported & SUPPORTED_40000baseLR4_Full)) { + netdev->supported |= NETDEV_F_40GB_FD; + } if (ecmd.supported & SUPPORTED_TP) { netdev->supported |= NETDEV_F_COPPER; } @@ -1827,9 +1836,18 @@ netdev_linux_read_features(struct netdev_linux *netdev) if (ecmd.advertising & ADVERTISED_1000baseT_Full) { netdev->advertised |= NETDEV_F_1GB_FD; } - if (ecmd.advertising & ADVERTISED_10000baseT_Full) { + if ((ecmd.advertising & ADVERTISED_10000baseT_Full) || + (ecmd.advertising & ADVERTISED_10000baseKX4_Full) || + (ecmd.advertising & ADVERTISED_10000baseKR_Full) || + (ecmd.advertising & ADVERTISED_10000baseR_FEC)) { netdev->advertised |= NETDEV_F_10GB_FD; } + if ((ecmd.advertising & ADVERTISED_40000baseKR4_Full) || + (ecmd.advertising & ADVERTISED_40000baseCR4_Full) || + (ecmd.advertising & ADVERTISED_40000baseSR4_Full) || + (ecmd.advertising & ADVERTISED_40000baseLR4_Full)) { + netdev->advertised |= NETDEV_F_40GB_FD; + } if (ecmd.advertising & ADVERTISED_TP) { netdev->advertised |= NETDEV_F_COPPER; } -- 2.1.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev