[ovs-dev] [PATCH 01/10] netdev: New field 'is_pmd' in netdev_class.
Ilya Maximets
i.maximets at samsung.com
Mon Mar 14 15:18:11 UTC 2016
Made to simplify creation of derived classes.
Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
---
lib/netdev-bsd.c | 1 +
lib/netdev-dpdk.c | 1 +
lib/netdev-dummy.c | 1 +
lib/netdev-linux.c | 1 +
lib/netdev-provider.h | 3 +++
lib/netdev-vport.c | 20 +++++++++++---------
lib/netdev-windows.c | 1 +
lib/netdev.c | 5 +----
8 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/lib/netdev-bsd.c b/lib/netdev-bsd.c
index edf04bf..b148714 100644
--- a/lib/netdev-bsd.c
+++ b/lib/netdev-bsd.c
@@ -1547,6 +1547,7 @@ netdev_bsd_update_flags(struct netdev *netdev_, enum netdev_flags off,
GET_FEATURES) \
{ \
NAME, \
+ false, /* is_pmd */ \
\
NULL, /* init */ \
netdev_bsd_run, \
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index f402354..6ac0eec 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -2641,6 +2641,7 @@ static const struct dpdk_qos_ops egress_policer_ops = {
GET_CARRIER, GET_STATS, GET_FEATURES, GET_STATUS, RXQ_RECV) \
{ \
NAME, \
+ true, /* is_pmd */ \
INIT, /* init */ \
NULL, /* netdev_dpdk_run */ \
NULL, /* netdev_dpdk_wait */ \
diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index ccd4a0a..6fa1169 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -1195,6 +1195,7 @@ netdev_dummy_update_flags(struct netdev *netdev_,
static const struct netdev_class dummy_class = {
"dummy",
+ false, /* is_pmd */
NULL, /* init */
netdev_dummy_run,
netdev_dummy_wait,
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index 570677e..dd39f0e 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -2840,6 +2840,7 @@ netdev_linux_update_flags(struct netdev *netdev_, enum netdev_flags off,
GET_FEATURES, GET_STATUS) \
{ \
NAME, \
+ false, /* is_pmd */ \
\
NULL, \
netdev_linux_run, \
diff --git a/lib/netdev-provider.h b/lib/netdev-provider.h
index 1952a02..77aec4e 100644
--- a/lib/netdev-provider.h
+++ b/lib/netdev-provider.h
@@ -205,6 +205,9 @@ struct netdev_class {
* the system. */
const char *type;
+ /* If 'true' then this netdev should be polled by PMD threads. */
+ bool is_pmd;
+
/* ## ------------------- ## */
/* ## Top-Level Functions ## */
/* ## ------------------- ## */
diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c
index df6d8cf..4ba146d 100644
--- a/lib/netdev-vport.c
+++ b/lib/netdev-vport.c
@@ -1549,11 +1549,12 @@ netdev_vport_range(struct unixctl_conn *conn, int argc,
#define TUNNEL_CLASS(NAME, DPIF_PORT, BUILD_HEADER, PUSH_HEADER, POP_HEADER) \
{ DPIF_PORT, \
- { NAME, VPORT_FUNCTIONS(get_tunnel_config, \
- set_tunnel_config, \
- get_netdev_tunnel_config, \
- tunnel_get_status, \
- BUILD_HEADER, PUSH_HEADER, POP_HEADER) }}
+ { NAME, false, \
+ VPORT_FUNCTIONS(get_tunnel_config, \
+ set_tunnel_config, \
+ get_netdev_tunnel_config, \
+ tunnel_get_status, \
+ BUILD_HEADER, PUSH_HEADER, POP_HEADER) }}
void
netdev_vport_tunnel_register(void)
@@ -1595,9 +1596,10 @@ netdev_vport_patch_register(void)
{
static const struct vport_class patch_class =
{ NULL,
- { "patch", VPORT_FUNCTIONS(get_patch_config,
- set_patch_config,
- NULL,
- NULL, NULL, NULL, NULL) }};
+ { "patch", false,
+ VPORT_FUNCTIONS(get_patch_config,
+ set_patch_config,
+ NULL,
+ NULL, NULL, NULL, NULL) }};
netdev_register_provider(&patch_class.netdev_class);
}
diff --git a/lib/netdev-windows.c b/lib/netdev-windows.c
index 093175f..ab91632 100644
--- a/lib/netdev-windows.c
+++ b/lib/netdev-windows.c
@@ -490,6 +490,7 @@ netdev_windows_internal_construct(struct netdev *netdev_)
#define NETDEV_WINDOWS_CLASS(NAME, CONSTRUCT) \
{ \
.type = NAME, \
+ .is_pmd = false, \
.alloc = netdev_windows_alloc, \
.construct = CONSTRUCT, \
.destruct = netdev_windows_destruct, \
diff --git a/lib/netdev.c b/lib/netdev.c
index 150f8d8..83b0300 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -115,10 +115,7 @@ netdev_requested_n_rxq(const struct netdev *netdev)
bool
netdev_is_pmd(const struct netdev *netdev)
{
- return (!strcmp(netdev->netdev_class->type, "dpdk") ||
- !strcmp(netdev->netdev_class->type, "dpdkr") ||
- !strcmp(netdev->netdev_class->type, "dpdkvhostcuse") ||
- !strcmp(netdev->netdev_class->type, "dpdkvhostuser"));
+ return netdev->netdev_class->is_pmd;
}
static void
--
2.5.0
More information about the dev
mailing list