• Bailey Forrest's avatar
    gve: Introduce a new model for device options · 8a39d3e0
    Bailey Forrest authored
    The current model uses an integer ID and a fixed size struct for the
    parameters of each device option.
    
    The new model allows the device option structs to grow in size over
    time. A driver may assume that changes to device option structs will
    always be appended.
    
    New device options will also generally have a
    `supported_features_mask` so that the driver knows which fields within a
    particular device option are enabled.
    
    `gve_device_option.feat_mask` is changed to `required_features_mask`,
    and it is a bitmask which must match the value expected by the driver.
    This gives the device the ability to break backwards compatibility with
    old drivers for certain features by blocking the old drivers from trying
    to use the feature.
    
    We maintain ABI compatibility with the old model for
    GVE_DEV_OPT_ID_RAW_ADDRESSING in case a driver is using a device which
    does not support the new model.
    
    This patch introduces some new terminology:
    
    RDA - Raw DMA Addressing - Buffers associated with SKBs are directly DMA
          mapped and read/updated by the device.
    
    QPL - Queue Page Lists - Driver uses bounce buffers which are DMA mapped
          with the device for read/write and data is copied from/to SKBs.
    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>
    8a39d3e0
gve_adminq.c 22.9 KB