gve: Implement packet continuation for RX.
This enables the driver to receive RX packets spread across multiple buffers: For a given multi-fragment packet the "packet continuation" bit is set on all descriptors except the last one. These descriptors' payloads are combined into a single SKB before the SKB is handed to the networking stack. This change adds a "packet buffer size" notion for RX queues. The CreateRxQueue AdminQueue command sent to the device now includes the packet_buffer_size. We opt for a packet_buffer_size of PAGE_SIZE / 2 to give the driver the opportunity to flip pages where we can instead of copying. Signed-off-by:David Awogbemila <awogbemila@google.com> Signed-off-by:
Jeroen de Borst <jeroendb@google.com> Reviewed-by:
Catherine Sullivan <csully@google.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- drivers/net/ethernet/google/gve/gve.h 8 additions, 0 deletionsdrivers/net/ethernet/google/gve/gve.h
- drivers/net/ethernet/google/gve/gve_adminq.c 1 addition, 0 deletionsdrivers/net/ethernet/google/gve/gve_adminq.c
- drivers/net/ethernet/google/gve/gve_desc.h 7 additions, 6 deletionsdrivers/net/ethernet/google/gve/gve_desc.h
- drivers/net/ethernet/google/gve/gve_ethtool.c 4 additions, 0 deletionsdrivers/net/ethernet/google/gve/gve_ethtool.c
- drivers/net/ethernet/google/gve/gve_main.c 0 additions, 8 deletionsdrivers/net/ethernet/google/gve/gve_main.c
- drivers/net/ethernet/google/gve/gve_rx.c 248 additions, 99 deletionsdrivers/net/ethernet/google/gve/gve_rx.c
- drivers/net/ethernet/google/gve/gve_rx_dqo.c 1 addition, 1 deletiondrivers/net/ethernet/google/gve/gve_rx_dqo.c
- drivers/net/ethernet/google/gve/gve_utils.c 22 additions, 11 deletionsdrivers/net/ethernet/google/gve/gve_utils.c
- drivers/net/ethernet/google/gve/gve_utils.h 1 addition, 1 deletiondrivers/net/ethernet/google/gve/gve_utils.h
Loading
Please register or sign in to comment