• Bailey Forrest's avatar
    gve: Add DQO fields for core data structures · a4aa1f1e
    Bailey Forrest authored
    - Add new DQO datapath structures:
      - `gve_rx_buf_queue_dqo`
      - `gve_rx_compl_queue_dqo`
      - `gve_rx_buf_state_dqo`
      - `gve_tx_desc_dqo`
      - `gve_tx_pending_packet_dqo`
    
    - Incorporate these into the existing ring data structures:
      - `gve_rx_ring`
      - `gve_tx_ring`
    
    Noteworthy mentions:
    
    - `gve_rx_buf_state` represents an RX buffer which was posted to HW.
      Each RX queue has an array of these objects and the index into the
      array is used as the buffer_id when posted to HW.
    
    - `gve_tx_pending_packet_dqo` is treated similarly for TX queues. The
      completion_tag is the index into the array.
    
    - These two structures have links for linked lists which are represented
      by 16b indexes into a contiguous array of these structures.
      This reduces memory footprint compared to 64b pointers.
    
    - We use unions for the writeable datapath structures to reduce cache
      footprint. GQI specific members will renamed like DQO members in a
      future patch.
    Signed-off-by: default avatarBailey Forrest <bcf@google.com>
    Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
    Reviewed-by: default avatarCatherine Sullivan <csully@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a4aa1f1e
gve.h 24.4 KB