• Jedrzej Jagielski's avatar
    i40e: Minimize amount of busy-waiting during AQ send · ef39584d
    Jedrzej Jagielski authored
    The i40e_asq_send_command will now use a non blocking usleep_range if
    possible (non-atomic context), instead of busy-waiting udelay. The
    usleep_range function uses hrtimers to provide better performance and
    removes the negative impact of busy-waiting in time-critical
    environments.
    
    1. Rename i40e_asq_send_command to i40e_asq_send_command_atomic
       and add 5th parameter to inform if called from an atomic context.
       Call inside usleep_range (if non-atomic) or udelay (if atomic).
    
    2. Change i40e_asq_send_command to invoke
       i40e_asq_send_command_atomic(..., false).
    
    3. Change two functions:
        - i40e_aq_set_vsi_uc_promisc_on_vlan
        - i40e_aq_set_vsi_mc_promisc_on_vlan
       to explicitly use i40e_asq_send_command_atomic(..., true)
       instead of i40e_asq_send_command, as they use spinlocks and do some
       work in an atomic context.
       All other calls to i40e_asq_send_command remain unchanged.
    Signed-off-by: default avatarDawid Lukwinski <dawid.lukwinski@intel.com>
    Signed-off-by: default avatarJedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: default avatarTony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    ef39584d
i40e_common.c 176 KB