On 2/28/23 14:05, Chris Mi wrote: > On 2/24/2023 4:16 AM, Ilya Maximets wrote: >> On 2/23/23 12:26, Chris Mi wrote: >>> Initialize psample socket. Add sFlow recv API to receive sampled >>> packets from psample socket. Add sFow recv wait API to add psample >>> socket fd to poll list. >>> >>> Signed-off-by: Chris Mi <c...@nvidia.com> >>> Reviewed-by: Roi Dayan <r...@nvidia.com> >>> --- >>> lib/dpif.h | 7 ++ >>> lib/netdev-offload-provider.h | 11 ++ >>> lib/netdev-offload-tc.c | 188 ++++++++++++++++++++++++++++++++++ >>> 3 files changed, 206 insertions(+) >>>
<snip> >>> +{ >>> + int read_tries = 0; >>> + >>> + if (!psample_sock) { >>> + return ENOENT; >>> + } >>> + >>> + for (;;) { >>> + struct offload_psample psample; >>> + struct offload_sflow sflow; >>> + int error; >>> + >>> + if (++read_tries > 50) { >>> + return EAGAIN; >>> + } >>> + >>> + error = nl_sock_recv(psample_sock, buf, NULL, false); >>> + if (error == ENOBUFS) { >>> + continue; >>> + } >>> + >>> + if (error) { >>> + if (error == EAGAIN) { >>> + break; >>> + } >>> + return error; >>> + } >>> + >>> + error = psample_from_ofpbuf(&psample, buf); >>> + if (!error) { >>> + return psample_parse_packet(&psample, &sflow, upcall); >>> + } else if (error) { >> Condition here is always true. > I copied from dpif_netlink_recv_cpu_dispatch(). And I also think it is ok. The 'if' condition in dpif_netlink_recv_cpu_dispatch() is different and so the 'else if (error)' is not always true there. But it is always true here, hence makes no practical sense. Best regards, Ilya Maximets. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev