Thread (8 messages) 8 messages, 1 author, 2016-08-05

Re: [PATCH 1/7] ofproto: Consider datapath_type when looking for internal ports.

flat view

From: Kavanagh, Mark B <hidden>
Date: 2016-08-05 14:41:55

Please disregard this patchset - it was sent erroneously to the incorrect mailing list.

I've already removed the related patches from Patchwork.

Cheers,
Mark 
quoted hunk ↗ jump to hunk
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Mark Kavanagh
Sent: Friday, August 5, 2016 3:30 PM
To: dev@dpdk.org; diproiettod@vmware.com
Cc: i.maximets@samsung.com
Subject: [dpdk-dev] [PATCH 1/7] ofproto: Consider datapath_type when looking for internal
ports.

From: Daniele Di Proietto <redacted>

Interfaces with type "internal" end up having a netdev with type "tap"
in the dpif-netdev datapath, so a strcmp will fail to match internal
interfaces.

We can translate the types with ofproto_port_open_type() before calling
strcmp to fix this.

This fixes a minor issue where internal interfaces are considered
non-internal in the userspace datapath for the purpose of adjusting the
MTU.

Signed-off-by: Daniele Di Proietto <redacted>
---
ofproto/ofproto.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 8e59c69..088f91a 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -220,7 +220,8 @@ static void learned_cookies_flush(struct ofproto *, struct ovs_list
*dead_cookie
/* ofport. */
static void ofport_destroy__(struct ofport *) OVS_EXCLUDED(ofproto_mutex);
static void ofport_destroy(struct ofport *, bool del);
-static inline bool ofport_is_internal(const struct ofport *);
+static inline bool ofport_is_internal(const struct ofproto *,
+                                      const struct ofport *);

static int update_port(struct ofproto *, const char *devname);
static int init_ports(struct ofproto *);
@@ -2465,7 +2466,7 @@ static void
ofport_remove(struct ofport *ofport)
{
    struct ofproto *p = ofport->ofproto;
-    bool is_internal = ofport_is_internal(ofport);
+    bool is_internal = ofport_is_internal(p, ofport);

    connmgr_send_port_status(ofport->ofproto->connmgr, NULL, &ofport->pp,
                             OFPPR_DELETE);
@@ -2751,9 +2752,10 @@ init_ports(struct ofproto *p)
}

static inline bool
-ofport_is_internal(const struct ofport *port)
+ofport_is_internal(const struct ofproto *p, const struct ofport *port)
{
-    return !strcmp(netdev_get_type(port->netdev), "internal");
+    return !strcmp(netdev_get_type(port->netdev),
+                   ofproto_port_open_type(p->type, "internal"));
}

/* Find the minimum MTU of all non-datapath devices attached to 'p'.
@@ -2770,7 +2772,7 @@ find_min_mtu(struct ofproto *p)

        /* Skip any internal ports, since that's what we're trying to
         * set. */
-        if (ofport_is_internal(ofport)) {
+        if (ofport_is_internal(p, ofport)) {
            continue;
        }
@@ -2797,7 +2799,7 @@ update_mtu(struct ofproto *p, struct ofport *port)
        port->mtu = 0;
        return;
    }
-    if (ofport_is_internal(port)) {
+    if (ofport_is_internal(p, port)) {
        if (dev_mtu > p->min_mtu) {
           if (!netdev_set_mtu(port->netdev, p->min_mtu)) {
               dev_mtu = p->min_mtu;
@@ -2827,7 +2829,7 @@ update_mtu_ofproto(struct ofproto *p)
    HMAP_FOR_EACH (ofport, hmap_node, &p->ports) {
        struct netdev *netdev = ofport->netdev;

-        if (ofport_is_internal(ofport)) {
+        if (ofport_is_internal(p, ofport)) {
            if (!netdev_set_mtu(netdev, p->min_mtu)) {
                ofport->mtu = p->min_mtu;
            }
--
1.9.3
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help