mbox series

[net-next,v9,0/4] GVE Raw Addressing

Message ID 20201202182413.232510-1-awogbemila@google.com
Headers show
Series GVE Raw Addressing | expand

Message

David Awogbemila Dec. 2, 2020, 6:24 p.m. UTC
Patchset description:
This  patchset introduces "raw addressing" mode to the GVE driver.
Previously (in "queue_page_list" or "qpl" mode), the driver would
pre-allocate and dma_map buffers to be used on egress and ingress.
On egress, it would copy data from the skb provided to the
pre-allocated buffers - this was expensive.
In raw addressing mode, the driver can avoid this copy and simply
dma_map the skb's data so that the NIC can use it.
On ingress, the driver passes buffers up to the networking stack and
then frees and reallocates buffers when necessary instead of using
skb_copy_to_linear_data.
Patch 3 separates the page refcount tracking mechanism
into a function gve_rx_can_recycle_buffer which uses get_page - this will
be changed in a future patch to eliminate the use of get_page in tracking
page refcounts.

Changes from v8:
Patch 4: Free skbs that are not sent in gve_tx().

Catherine Sullivan (3):
  gve: Add support for raw addressing device option
  gve: Add support for raw addressing to the rx path
  gve: Add support for raw addressing in the tx path

David Awogbemila (1):
  gve: Rx Buffer Recycling

 drivers/net/ethernet/google/gve/gve.h         |  39 +-
 drivers/net/ethernet/google/gve/gve_adminq.c  |  89 ++++-
 drivers/net/ethernet/google/gve/gve_adminq.h  |  15 +-
 drivers/net/ethernet/google/gve/gve_desc.h    |  19 +-
 drivers/net/ethernet/google/gve/gve_ethtool.c |   2 +
 drivers/net/ethernet/google/gve/gve_main.c    |  11 +-
 drivers/net/ethernet/google/gve/gve_rx.c      | 364 +++++++++++++-----
 drivers/net/ethernet/google/gve/gve_tx.c      | 202 ++++++++--
 8 files changed, 577 insertions(+), 164 deletions(-)

Comments

Alexander Duyck Dec. 3, 2020, 6:17 p.m. UTC | #1
On Wed, Dec 2, 2020 at 10:24 AM David Awogbemila <awogbemila@google.com> wrote:
>
> Patchset description:
> This  patchset introduces "raw addressing" mode to the GVE driver.
> Previously (in "queue_page_list" or "qpl" mode), the driver would
> pre-allocate and dma_map buffers to be used on egress and ingress.
> On egress, it would copy data from the skb provided to the
> pre-allocated buffers - this was expensive.
> In raw addressing mode, the driver can avoid this copy and simply
> dma_map the skb's data so that the NIC can use it.
> On ingress, the driver passes buffers up to the networking stack and
> then frees and reallocates buffers when necessary instead of using
> skb_copy_to_linear_data.
> Patch 3 separates the page refcount tracking mechanism
> into a function gve_rx_can_recycle_buffer which uses get_page - this will
> be changed in a future patch to eliminate the use of get_page in tracking
> page refcounts.
>
> Changes from v8:
> Patch 4: Free skbs that are not sent in gve_tx().
>
> Catherine Sullivan (3):
>   gve: Add support for raw addressing device option
>   gve: Add support for raw addressing to the rx path
>   gve: Add support for raw addressing in the tx path
>
> David Awogbemila (1):
>   gve: Rx Buffer Recycling
>
>  drivers/net/ethernet/google/gve/gve.h         |  39 +-
>  drivers/net/ethernet/google/gve/gve_adminq.c  |  89 ++++-
>  drivers/net/ethernet/google/gve/gve_adminq.h  |  15 +-
>  drivers/net/ethernet/google/gve/gve_desc.h    |  19 +-
>  drivers/net/ethernet/google/gve/gve_ethtool.c |   2 +
>  drivers/net/ethernet/google/gve/gve_main.c    |  11 +-
>  drivers/net/ethernet/google/gve/gve_rx.c      | 364 +++++++++++++-----
>  drivers/net/ethernet/google/gve/gve_tx.c      | 202 ++++++++--
>  8 files changed, 577 insertions(+), 164 deletions(-)
>
> --
> 2.29.2.576.ga3fc446d84-goog
>

Other than the few nits with counters being u32 values I didn't really
see much else.

Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>