Applied on master and backported until 2.9

Thank you!

> On 9 Nov 2022, at 04:32, Wilson Peng <[email protected]> wrote:
> 
> From: Wilson Peng <[email protected]>
> 
> In the recent Antrea project testing, some port could not be created
> on Windows.
> 
> When doing debug, our team found there is one case happening when multiple
> ports are waiting for be created with correct port number.
> 
> Some system type port will be created netdev successfully and it will cause
> conflict as in the dpif side it will be internal type. So finally the port
> will be created failed and it could not be easily recovered.
> 
> With the patch, on Windows the netdev creating will be blocked for system
> type when the ovs_tyep got on dpif is internal. More detailed case description
> is in the reported issue No.262 with link below.
> 
> Reported-at:https://github.com/openvswitch/ovs-issues/issues/262
> Signed-off-by: Wilson Peng <[email protected]>
> ---
> lib/netdev-windows.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
> 
> diff --git a/lib/netdev-windows.c b/lib/netdev-windows.c
> index 4ad45ffa1..3fad501e3 100644
> --- a/lib/netdev-windows.c
> +++ b/lib/netdev-windows.c
> @@ -156,6 +156,7 @@ netdev_windows_system_construct(struct netdev *netdev_)
>     struct netdev_windows_netdev_info info;
>     struct ofpbuf *buf;
>     int ret;
> +    const char    *type = NULL;
> 
>     /* Query the attributes and runtime status of the netdev. */
>     ret = query_netdev(netdev_get_name(&netdev->up), &info, &buf);
> @@ -167,6 +168,16 @@ netdev_windows_system_construct(struct netdev *netdev_)
>     }
>     ofpbuf_delete(buf);
> 
> +    /* Don't create netdev if ovs-type is "internal"
> +     * but the type of netdev->up is "system". */
> +    type = netdev_get_type(&netdev->up);
> +    if (type && !strcmp(type, "system") &&
> +        (info.ovs_type == OVS_VPORT_TYPE_INTERNAL)) {
> +        VLOG_DBG("construct device %s, ovs_type: %u failed",
> +                 netdev_get_name(&netdev->up), info.ovs_type);
> +        return 1;
> +    }
> +
>     netdev->change_seq = 1;
>     netdev->dev_type = info.ovs_type;
>     netdev->port_no = info.port_no;
> -- 
> 2.32.1 (Apple Git-133)
> 
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to