On 3/21/25 16:13, Michal Kubiak wrote:
The "ice" driver implementation uses the control VSI to handle
the flow director configuration for PFs and VFs.

Unfortunately, although a separate VSI type was created to handle flow
director queues, the Rx queue handler was shared between the flow
director and a standard NAPI Rx handler.

Such a design approach was not very flexible. First, it mixed hotpath
and slowpath code, blocking their further optimization. It also created
a huge overkill for the flow director command processing, which is
descriptor-based only, so there is no need to allocate Rx data buffers.

For the above reasons, implement a separate Rx handler for the control
VSI. Also, remove from the NAPI handler the code dedicated to
configuring the flow director rules on VFs.
Do not allocate Rx data buffers to the flow director queues because
their processing is descriptor-based only.
Finally, allow Rx data queues to be allocated only for VSIs that have
netdev assigned to them.

This handler splitting approach is the first step in converting the
driver to use the Page Pool (which can only be used for data queues).

Test hints:
   1. Create a VF for any PF managed by the ice driver.
   2. In a loop, add and delete flow director rules for the VF, e.g.:

        for i in {1..128}; do
            q=$(( i % 16 ))
            ethtool -N ens802f0v0 flow-type tcp4 dst-port "$i" action "$q"
        done

        for i in {0..127}; do
            ethtool -N ens802f0v0 delete "$i"
        done

Suggested-by: Maciej Fijalkowski <maciej.fijalkow...@intel.com>
Suggested-by: Michal Swiatkowski <michal.swiatkow...@intel.com>
Acked-by: Maciej Fijalkowski <maciej.fijalkow...@intel.com>
Signed-off-by: Michal Kubiak <michal.kub...@intel.com>
Thank you, a very nice improvement

Reviewed-by: Przemek Kitszel <przemyslaw.kits...@intel.com>

Reply via email to