]> git.baikalelectronics.ru Git - kernel.git/commit
i40e: Minimize amount of busy-waiting during AQ send
authorJedrzej Jagielski <jedrzej.jagielski@intel.com>
Tue, 16 Nov 2021 13:13:29 +0000 (13:13 +0000)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 7 Jan 2022 17:04:21 +0000 (09:04 -0800)
commit4c3d6867a735449348e43aff3ff4c8b4955077e2
tree18dd4710965836a2c6fc209a9d0b7e85ad8c3161
parent6b14f5e9fa6cedd815e2062e5b087beaef27a056
i40e: Minimize amount of busy-waiting during AQ send

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: Dawid Lukwinski <dawid.lukwinski@intel.com>
Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Tested-by: Tony Brelinski <tony.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/i40e/i40e_adminq.c
drivers/net/ethernet/intel/i40e/i40e_common.c
drivers/net/ethernet/intel/i40e/i40e_prototype.h