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

2016-08-05 Thread Mark Kavanagh
From: Daniele Di Proietto 

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 
---
 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, >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, >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



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

2016-08-05 Thread Kavanagh, Mark B
Please disregard this patchset - it was sent erroneously to the incorrect 
mailing list.

I've already removed the related patches from Patchwork.

Cheers,
Mark 

>-Original Message-
>From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Mark Kavanagh
>Sent: Friday, August 5, 2016 3:30 PM
>To: dev at dpdk.org; diproiettod at vmware.com
>Cc: i.maximets at samsung.com
>Subject: [dpdk-dev] [PATCH 1/7] ofproto: Consider datapath_type when looking 
>for internal
>ports.
>
>From: Daniele Di Proietto 
>
>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 
>---
> 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, >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, >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