2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-30 22:05:19 +00:00

netdev: New functions for interpreting "enum ofp_port_features" bitmaps.

This commit is contained in:
Ben Pfaff
2009-12-21 16:27:55 -08:00
parent c72e245a0e
commit 622ee2cf64
2 changed files with 32 additions and 0 deletions

View File

@@ -31,6 +31,7 @@
#include "list.h"
#include "netdev-provider.h"
#include "ofpbuf.h"
#include "openflow/openflow.h"
#include "packets.h"
#include "poll-loop.h"
#include "shash.h"
@@ -525,6 +526,35 @@ netdev_get_features(struct netdev *netdev,
return error;
}
/* Returns the maximum speed of a network connection that has the "enum
* ofp_port_features" bits in 'features', in bits per second. If no bits that
* indicate a speed are set in 'features', assumes 100Mbps. */
uint64_t
netdev_features_to_bps(uint32_t features)
{
enum {
F_10000MB = OFPPF_10GB_FD,
F_1000MB = OFPPF_1GB_HD | OFPPF_1GB_FD,
F_100MB = OFPPF_100MB_HD | OFPPF_100MB_FD,
F_10MB = OFPPF_10MB_HD | OFPPF_10MB_FD
};
return ( features & F_10000MB ? UINT64_C(10000000000)
: features & F_1000MB ? UINT64_C(1000000000)
: features & F_100MB ? UINT64_C(100000000)
: features & F_10MB ? UINT64_C(10000000)
: UINT64_C(100000000));
}
/* Returns true if any of the "enum ofp_port_features" bits that indicate a
* full-duplex link are set in 'features', otherwise false. */
bool
netdev_features_is_full_duplex(uint32_t features)
{
return (features & (OFPPF_10MB_FD | OFPPF_100MB_FD | OFPPF_1GB_FD
| OFPPF_10GB_FD)) != 0;
}
/* Set the features advertised by 'netdev' to 'advertise'. Returns 0 if
* successful, otherwise a positive errno value. */
int