• Jacob Keller's avatar
    i40e: convert queue stats to i40e_stats array · 4b59938b
    Jacob Keller authored
    Use an i40e_stats array to handle the queue stats, instead of coding
    similar functionality separately. Because of how the queue stats are
    accessed on some kernels, we can't easily use i40e_add_ethtool_stats.
    
    Instead, implement a separate helper, i40e_add_queue_stats, which we'll
    use instead. This helper will correctly implement the
    u64_stats_fetch_begin_irq logic and allow retries until successful. We
    share the most complex code by re-using i40e_add_one_ethtool_stat.
    
    This logic additionally easily supports skipping disabled rings by using
    a ternary operator before calling the u64_stats_fetch_begin_irq()
    function, so that we correctly zero-out the stats values without having
    to perform two separate sections of code.
    
    This significantly reduces the boiler plate code in
    i40e_get_ethtool_stats, and helps keep the complex logic contained to as
    few functions as possible.
    
    With this patch, we've finally converted all the statistics to use the
    helpers and the i40e_stats function.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    4b59938b
i40e_ethtool.c 149 KB