On 3/16/23 10:16, Eelco Chaudron wrote:
> On 1 Mar 2023, at 8:22, Chris Mi wrote:
>
>> In thread handler 0, add netdev offload recv in normal recv upcalls.
>> To avoid starvation, introduce a flag to alternate the order of
>> receiving normal upcalls and offload upcalls based on that flag.
>>
>> Add similar change for recv_wait.
>
> See some comments inline below, and some architecture input from Ilya is
> needed...
>
> //Eelco
>
>
>> Signed-off-by: Chris Mi <[email protected]>
>> Reviewed-by: Roi Dayan <[email protected]>
>> ---
>> lib/dpif-netlink.c | 42 ++++++++++++++++++++++++++++++-----
>> ofproto/ofproto-dpif-upcall.c | 16 +++++++++----
>> 2 files changed, 48 insertions(+), 10 deletions(-)
<snip>
>> +static int
>> +dpif_netlink_recv(struct dpif *dpif_, uint32_t handler_id,
>> + struct dpif_upcall *upcall, struct ofpbuf *buf)
>> +{
>> + struct dpif_netlink *dpif = dpif_netlink_cast(dpif_);
>> + struct dpif_handler *handler;
>> + int error;
>> +
>> + fat_rwlock_rdlock(&dpif->upcall_lock);
>> + handler = &dpif->handlers[handler_id];
>> + if (handler->recv_offload_first) {
>> + error = netdev_offload_recv(upcall, buf, handler_id);
>
> Here the abstraction blurs a bit, as netdev_offload_recv() would try to call
> implementations, tc and rte_flow?
> See also earlier comment in netdev_offload_recv()
>
> Also what about for example rte_flow being handled now in the dpif-netdev
> class?
> In general, OVS-DPDK does not have any upcall threads, so if OVS-DPDK (or any
> new offload) decides to use any of these mechanisms it will fail.
>
> Ilya do you have any feedback?
IIRC, handlers are getting created. But we need to implement recv()
and recv_wait() callbacks for dpif-netdev, that will just call to
netdev_offload_recv[_wait]().
Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev