• Jacob Keller's avatar
    ice: refactor ice_discover_caps to avoid need to retry · 1082b360
    Jacob Keller authored
    The ice_discover_caps function is used to read the device and function
    capabilities, updating the hardware capabilities structures with
    relevant data.
    
    The exact number of capabilities returned by the hardware is unknown
    ahead of time. The AdminQ command will report the total number of
    capabilities in the return buffer.
    
    The current implementation involves requesting capabilities once,
    reading this returned size, and then re-requested with that size.
    
    This isn't really necessary. The firmware interface has a maximum size
    of ICE_AQ_MAX_BUF_LEN. Firmware can never return more than
    ICE_AQ_MAX_BUF_LEN / sizeof(struct ice_aqc_list_caps_elem) capabilities.
    
    Avoid the retry loop by simply allocating a buffer of size
    ICE_AQ_MAX_BUF_LEN. This is significantly simpler than retrying. The
    extra allocation isn't a big deal, as it will be released after we
    finish parsing the capabilities.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    1082b360
ice_common.c 105 KB