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 <[email protected]>
>>> Reviewed-by: Roi Dayan <[email protected]>
>>> ---
>>> 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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev