On Thu, May 18, 2023 at 02:17:48PM -0700, Stefan Roesch wrote: > This adds the napi busy polling support in io_uring.c. It adds a new > napi_list to the io_ring_ctx structure. This list contains the list of > napi_id's that are currently enabled for busy polling. The list is > synchronized by the new napi_lock spin lock. The current default napi > busy polling time is stored in napi_busy_poll_to. If napi busy polling > is not enabled, the value is 0. > > In addition there is also a hash table. The hash table store the napi > id ond the pointer to the above list nodes. The hash table is used to nit: is 'ond' correct here? > speed up the lookup to the list elements. The hash table is synchronized > with rcu. > > The NAPI_TIMEOUT is stored as a timeout to make sure that the time a > napi entry is stored in the napi list is limited. > > The busy poll timeout is also stored as part of the io_wait_queue. This > is necessary as for sq polling the poll interval needs to be adjusted > and the napi callback allows only to pass in one value. > > This has been tested with two simple programs from the liburing library > repository: the napi client and the napi server program. The client > sends a request, which has a timestamp in its payload and the server > replies with the same payload. The client calculates the roundtrip time nit: checkpatch.pl --codespell says: :636: WARNING: 'calcualte' may be misspelled - perhaps 'calculate'? and stores it to calcualte the results. ^^^^^^^^^ ...