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/mail >> 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