That would be very helpful. Thanks! Saurabh
>Hi, > >Will send the patch until the end of the day. > >Alin. > >-----Mesaj original----- >De la: Saurabh Shah [mailto:ssaur...@vmware.com] >Trimis: Thursday, August 28, 2014 9:31 PM >Către: Alin Serdean; dev@openvswitch.org; Ben Pfaff >Subiect: Re: [ovs-dev] [PATCH 3/4] Changes needed to compile dpif-linux.c >with MSVC > >Hi Alin, > >We are getting to a point where we need this change. Do you plan to send a >V2 soon? > >Thanks! >Saurabh > > >>Hi Saurabh, >> >>If Ben is ok with the name change I would be glad to send out a V2 of >>the patch. >> >>Thanks, >>Alin. >> >>-----Mesaj original----- >>De la: Saurabh Shah [mailto:ssaur...@vmware.com] >>Trimis: Friday, August 15, 2014 4:21 AM >>Către: Alin Serdean; dev@openvswitch.org >>Subiect: RE: [ovs-dev] [PATCH 3/4] Changes needed to compile >>dpif-linux.c with MSVC >> >>We should change the name of the class to dpif_netlink_class and rename >>dpif-linux to dpif-netlink. >> >>Saurabh >> >>> -----Original Message----- >>> From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Alin >>> Serdean >>> Sent: Wednesday, August 13, 2014 8:17 AM >>> To: dev@openvswitch.org >>> Subject: [ovs-dev] [PATCH 3/4] Changes needed to compile dpif-linux.c >>> with MSVC >>> >>> The following changes are just a start to begin a discussion. >>> >>> Bypass all epoll functionality. >>> >>> IOCP work the other way around than epoll: you get if the operation >>> finished for a HANDLE in contrast of getting the number of file >>> descriptors that are ready for an operation. >>> It also adds a lot of overhead for our particular task. >>> >>> The nl_sock_recv in dpif_linux_recv__ can be flagged to get the >>> GetOverlappedResult for that specific handle if needed. >>> >>> Initialize dpif_linux_class on MSVC as well. >>> >>> Signed-off-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com> >>> --- >>> lib/dpif-linux.c | 21 +++++++++++++++++++-- >>> lib/dpif.c | 2 +- >>> 2 files changed, 20 insertions(+), 3 deletions(-) >>> >>> diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index >>> 6d461b2..982b5e9 100644 >>> --- a/lib/dpif-linux.c >>> +++ b/lib/dpif-linux.c >>> @@ -410,12 +410,15 @@ vport_add_channels(struct dpif_linux *dpif, >>> odp_port_t port_no, >>> >>> for (i = 0; i < dpif->n_handlers; i++) { >>> struct dpif_handler *handler = &dpif->handlers[i]; >>> - >>> +#ifndef _WIN32 >>> if (epoll_ctl(handler->epoll_fd, EPOLL_CTL_ADD, >>>nl_sock_fd(socksp[i]), >>> &event) < 0) { >>> error = errno; >>> goto error; >>> } >>> +#else >>> + memcpy(&dpif->handlers[i].epoll_events[port_idx], &event, >>> +sizeof(event)); #endif >>> dpif->handlers[i].channels[port_idx].sock = socksp[i]; >>> dpif->handlers[i].channels[port_idx].last_poll = LLONG_MIN; >>> } >>> @@ -424,8 +427,10 @@ vport_add_channels(struct dpif_linux *dpif, >>> odp_port_t port_no, >>> >>> error: >>> for (j = 0; j < i; j++) { >>> +#ifndef _WIN32 >>> epoll_ctl(dpif->handlers[j].epoll_fd, EPOLL_CTL_DEL, >>> nl_sock_fd(socksp[j]), NULL); >>> +#endif >>> dpif->handlers[j].channels[port_idx].sock = NULL; >>> } >>> >>> @@ -451,9 +456,10 @@ vport_del_channels(struct dpif_linux *dpif, >>> odp_port_t port_no) >>> >>> for (i = 0; i < dpif->n_handlers; i++) { >>> struct dpif_handler *handler = &dpif->handlers[i]; >>> - >>> +#ifndef _WIN32 >>> epoll_ctl(handler->epoll_fd, EPOLL_CTL_DEL, >>> nl_sock_fd(handler->channels[port_idx].sock), >>> NULL); >>> +#endif >>> nl_sock_destroy(handler->channels[port_idx].sock); >>> handler->channels[port_idx].sock = NULL; >>> handler->event_offset = handler->n_events = 0; @@ -679,7 >>> +685,9 @@ dpif_linux_port_add__(struct dpif_linux *dpif, struct >>> +netdev >>>*netdev, >>> request.name = name; >>> >>> if (request.type == OVS_VPORT_TYPE_NETDEV) { >>> +#ifndef _WIN32 >>> netdev_linux_ethtool_set_flag(netdev, ETH_FLAG_LRO, "LRO", >>> false); >>> +#endif >>> } >>> >>> tnl_cfg = netdev_get_tunnel_config(netdev); @@ -1486,7 +1494,11 >>>@@ dpif_linux_refresh_channels(struct dpif_linux *dpif, uint32_t >>>n_handlers) >>> for (i = 0; i < n_handlers; i++) { >>> struct dpif_handler *handler = &dpif->handlers[i]; >>> >>> +#ifndef _WIN32 >>> handler->epoll_fd = epoll_create(10); >>> +#else >>> + handler->epoll_fd = 0; >>> +#endif >>> if (handler->epoll_fd < 0) { >>> size_t j; >>> >>> @@ -1728,8 +1740,13 @@ dpif_linux_recv__(struct dpif_linux *dpif, >>> uint32_t handler_id, >>> handler->event_offset = handler->n_events = 0; >>> >>> do { >>> +#ifndef _WIN32 >>> retval = epoll_wait(handler->epoll_fd, >>>handler->epoll_events, >>> dpif->uc_array_size, 0); >>> +#else >>> + retval = dpif->uc_array_size; >>> + handler->event_offset = 0; #endif >>> } while (retval < 0 && errno == EINTR); >>> if (retval < 0) { >>> static struct vlog_rate_limit rl = >>> VLOG_RATE_LIMIT_INIT(1, 1); diff --git a/lib/dpif.c b/lib/dpif.c >>> index 1f15840..916afaa 100644 >>> --- a/lib/dpif.c >>> +++ b/lib/dpif.c >>> @@ -59,7 +59,7 @@ COVERAGE_DEFINE(dpif_purge); >>> COVERAGE_DEFINE(dpif_execute_with_help); >>> >>> static const struct dpif_class *base_dpif_classes[] = { -#ifdef >>> __linux__ >>> +#if defined(__linux__) || defined(_WIN32) >>> &dpif_linux_class, >>> #endif >>> &dpif_netdev_class, >>> -- >>> 1.9.0.msysgit.0 >>> >>> _______________________________________________ >>> dev mailing list >>> dev@openvswitch.org >>> https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mai >>> l m an/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=pEkjsHfytv >>> HEWufeZPpgqSOJMdMjuZPbesVsNhCUc0E%3D%0A&m=ES%2F%2FMdJuqy9 >>> sEIsECgbZtGgyTPg9t4gHjwHpJbZhJ94%3D%0A&s=af2cea9567a1bbbf220259c5 >>> 8be18aaf41a60533bfe24dbfe7086b4d9138af82 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev