[ovs-dev] [PATCH V7 1/7] ofproto: Consider datapath_type when looking for internal ports.
Thadeu Lima de Souza Cascardo
cascardo at redhat.com
Tue Aug 9 16:08:19 UTC 2016
On Tue, Aug 09, 2016 at 05:01:14PM +0100, Mark Kavanagh wrote:
> From: Daniele Di Proietto <diproiettod at vmware.com>
>
> 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 <diproiettod at vmware.com>
Acked-by: Thadeu Lima de Souza Cascardo <cascardo at redhat.com>
Hi, Mark.
Can you keep my Ack in further submissions in case there are no changes to this
patch?
Thanks.
Cascardo.
> ---
> 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
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list