Merge branch 'bnxt_en-netdev_queue_mgmt_ops'
authorDavid S. Miller <davem@davemloft.net>
Fri, 21 Jun 2024 09:10:34 +0000 (10:10 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Jun 2024 09:10:34 +0000 (10:10 +0100)
commita0c6359df6c70f0754728e5353e828967910575b
tree7e2d0719edbd0d3ab7b60fb929ec8362acba7520
parent9413b1be0be644f29423efd6181c82c0802388e9
parent2d694c27d32efc9467a8a20e4ad641ab5adfd07d
Merge branch 'bnxt_en-netdev_queue_mgmt_ops'

David Wei says:

====================
bnxt_en: implement netdev_queue_mgmt_ops

Implement netdev_queue_mgmt_ops for bnxt added in [1]. This will be used
in the io_uring ZC Rx patchset to configure queues with a custom page
pool w/ a special memory provider for zero copy support.

The first two patches prep the driver, while the final patch adds the
implementation.

Any arbitrary Rx queue can be reset without affecting other queues. V2
and prior of this patchset was thought to only support resetting queues
not in the main RSS context. Upon further testing I realised moving
queues out and calling bnxt_hwrm_vnic_update() wasn't necessary.

I didn't include the netdev core API using this netdev_queue_mgmt_ops
because Mina is adding it in his devmem TCP series [2]. But I'm happy to
include it if folks want to include a user with this series.

I tested this series on BCM957504-N1100FY4 with FW 229.1.123.0. I
manually injected failures at all the places that can return an errno
and confirmed that the device/queue is never left in a broken state.

[1]: https://lore.kernel.org/netdev/20240501232549.1327174-2-shailend@google.com/
[2]: https://lore.kernel.org/netdev/20240607005127.3078656-2-almasrymina@google.com/

v3:
 - tested w/o bnxt_hwrm_vnic_update() and it works on any queue
 - removed unneeded code

v2:
 - fix broken build
 - remove unused var in bnxt_init_one_rx_ring()
====================

Signed-off-by: David S. Miller <davem@davemloft.net>