bianbu-linux-6.6/drivers/net/ethernet/intel/ice
Karol Kolacinski 6e8b2c88fc ice: handle extts in the miscellaneous interrupt thread
The ice_ptp_extts_work() and ice_ptp_periodic_work() functions are both
scheduled on the same kthread worker, pf.ptp.kworker. The
ice_ptp_periodic_work() function sends to the firmware to interact with the
PHY, and must block to wait for responses.

This can cause delay in responding to the PFINT_OICR_TSYN_EVNT interrupt
cause, ultimately resulting in disruption to processing an input signal of
the frequency is high enough. In our testing, even 100 Hz signals get
disrupted.

Fix this by instead processing the signal inside the miscellaneous
interrupt thread prior to handling Tx timestamps.

Use atomic bits in a new pf->misc_thread bitmap in order to safely
communicate which tasks require processing within the
ice_misc_intr_thread_fn(). This ensures the communication of desired tasks
from the ice_misc_intr() are correctly processed without racing even in the
event that the interrupt triggers again before the thread function exits.

Fixes: 172db5f91d ("ice: add support for auxiliary input/output pins")
Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Arpana Arland <arpanax.arland@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2023-06-08 10:06:40 -07:00
..
ice.h ice: handle extts in the miscellaneous interrupt thread 2023-06-08 10:06:40 -07:00
ice_adminq_cmd.h ice: update ICE_PHY_TYPE_HIGH_MAX_INDEX 2023-05-17 08:38:22 -07:00
ice_arfs.c ice: add individual interrupt allocation 2023-05-16 09:38:38 -07:00
ice_arfs.h
ice_base.c ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_base.h
ice_cgu_regs.h
ice_common.c ice: sleep, don't busy-wait, in the SQ send retry loop 2023-04-20 16:33:14 -07:00
ice_common.h ice: Add GPIO pin support for E823 products 2023-02-14 13:08:02 -08:00
ice_controlq.c ice: sleep, don't busy-wait, for ICE_CTL_Q_SQ_CMD_TIMEOUT 2023-04-20 16:33:14 -07:00
ice_controlq.h ice: sleep, don't busy-wait, for ICE_CTL_Q_SQ_CMD_TIMEOUT 2023-04-20 16:33:14 -07:00
ice_dcb.c ice: Fix DSCP PFC TLV creation 2023-03-07 13:02:01 -08:00
ice_dcb.h ice: Handle LLDP MIB Pending change 2023-01-19 08:18:03 -08:00
ice_dcb_lib.c ice: Fix undersized tx_flags variable 2023-05-12 09:27:44 +01:00
ice_dcb_lib.h ice: Prevent set_channel from changing queues while RDMA active 2023-01-27 11:32:18 -08:00
ice_dcb_nl.c
ice_dcb_nl.h
ice_ddp.c ice: Move support DDP code out of ice_flex_pipe.c 2023-01-19 08:18:03 -08:00
ice_ddp.h ice: Move support DDP code out of ice_flex_pipe.c 2023-01-19 08:18:03 -08:00
ice_devids.h ice: support features on new E810T variants 2022-09-28 11:40:57 -07:00
ice_devlink.c devlink: move port_split/unsplit() ops into devlink_port_ops 2023-05-30 10:32:20 -07:00
ice_devlink.h ice: Prevent ADQ, DCB coexistence with Custom Tx scheduler 2022-11-17 21:41:28 -08:00
ice_eswitch.c ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_eswitch.h ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_ethtool.c ice: refactor PHY type to ethtool link mode 2023-05-17 08:42:10 -07:00
ice_ethtool.h ice: update PHY type to ethtool link mode mapping 2023-05-17 08:43:01 -07:00
ice_ethtool_fdir.c ice: Use correct order for the parameters of devm_kcalloc() 2022-06-08 08:55:13 -07:00
ice_fdir.c
ice_fdir.h
ice_flex_pipe.c ice: Reduce scope of variables 2023-01-19 08:18:03 -08:00
ice_flex_pipe.h ice: Move support DDP code out of ice_flex_pipe.c 2023-01-19 08:18:03 -08:00
ice_flex_type.h ice: Move support DDP code out of ice_flex_pipe.c 2023-01-19 08:18:03 -08:00
ice_flow.c
ice_flow.h
ice_fltr.c ice: sync netdev filters after clearing VSI 2023-02-03 09:54:18 -08:00
ice_fltr.h
ice_fw_update.c ice: handle E822 generic device ID in PLDM header 2022-07-12 09:25:34 -07:00
ice_fw_update.h
ice_gnss.c ice: do not busy-wait to read GNSS data 2023-04-20 16:33:14 -07:00
ice_gnss.h ice: increase the GNSS data polling interval to 20 ms 2023-04-20 16:33:14 -07:00
ice_hw_autogen.h ice: Add support Flex RXD 2022-10-27 13:23:43 +02:00
ice_idc.c ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_idc_int.h
ice_irq.c ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_irq.h ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_lag.c ice: Remove LAG+SRIOV mutual exclusion 2023-05-17 08:43:47 -07:00
ice_lag.h ice: Remove LAG+SRIOV mutual exclusion 2023-05-17 08:43:47 -07:00
ice_lan_tx_rx.h ice: Remove and replace ice speed defines with ethtool.h versions 2022-11-23 08:59:42 -08:00
ice_lib.c Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2023-05-18 20:04:59 -07:00
ice_lib.h ice: track interrupt vectors with xarray 2023-05-16 09:38:38 -07:00
ice_main.c ice: handle extts in the miscellaneous interrupt thread 2023-06-08 10:06:40 -07:00
ice_nvm.c ice: Remove cppcheck suppressions 2023-01-19 08:18:03 -08:00
ice_nvm.h ice: Add additional flags to ice_nvm_write_activate 2022-08-24 08:45:54 -07:00
ice_osdep.h
ice_pf_vsi_vlan_ops.c
ice_pf_vsi_vlan_ops.h
ice_protocol_type.h ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_ptp.c ice: handle extts in the miscellaneous interrupt thread 2023-06-08 10:06:40 -07:00
ice_ptp.h ice: handle extts in the miscellaneous interrupt thread 2023-06-08 10:06:40 -07:00
ice_ptp_consts.h
ice_ptp_hw.c ice: make Tx and Rx vernier offset calibration independent 2022-12-08 13:15:03 -08:00
ice_ptp_hw.h ice: make Tx and Rx vernier offset calibration independent 2022-12-08 13:15:03 -08:00
ice_repr.c ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_repr.h ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_sbq_cmd.h
ice_sched.c ice: fix invalid check for empty list in ice_sched_assoc_vsi_to_agg() 2023-03-28 09:48:49 -07:00
ice_sched.h ice: Add an option to pre-allocate memory for ice_sched_node 2022-11-17 21:41:28 -08:00
ice_sriov.c Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2023-05-18 20:04:59 -07:00
ice_sriov.h ice: move ice_is_malicious_vf() to ice_virtchnl.c 2023-03-13 11:06:06 -07:00
ice_switch.c ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_switch.h ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_tc_lib.c ice: allow matching on meta data 2023-05-19 09:09:52 -07:00
ice_tc_lib.h ice: allow matching on meta data 2023-05-19 09:09:52 -07:00
ice_trace.h
ice_txrx.c ice: recycle/free all of the fragments from multi-buffer frame 2023-06-01 09:59:39 -07:00
ice_txrx.h ice: Fix undersized tx_flags variable 2023-05-12 09:27:44 +01:00
ice_txrx_lib.c ice: fix W=1 headers mismatch 2023-03-28 09:42:05 -07:00
ice_txrx_lib.h ice: Micro-optimize .ndo_xdp_xmit() path 2023-02-13 19:13:13 +01:00
ice_type.h ice: move VF overflow message count into struct ice_mbx_vf_info 2023-03-13 10:32:32 -07:00
ice_vf_lib.c ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_vf_lib.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-05-18 14:39:34 -07:00
ice_vf_lib_private.h ice: introduce ice_vf_init_host_cfg function 2023-02-06 09:41:56 -08:00
ice_vf_mbx.c ice: merge ice_mbx_report_malvf with ice_mbx_vf_state_handler 2023-03-13 11:00:10 -07:00
ice_vf_mbx.h ice: initialize mailbox snapshot earlier in PF init 2023-03-13 11:06:05 -07:00
ice_vf_vsi_vlan_ops.c ice: Fix disabling Rx VLAN filtering with port VLAN enabled 2023-02-06 15:13:02 -08:00
ice_vf_vsi_vlan_ops.h
ice_virtchnl.c ice: use src VSI instead of src MAC in slow-path 2023-05-19 09:10:39 -07:00
ice_virtchnl.h ice: call ice_is_malicious_vf() from ice_vc_process_vf_msg() 2023-03-13 11:06:06 -07:00
ice_virtchnl_allowlist.c ice: Add support Flex RXD 2022-10-27 13:23:43 +02:00
ice_virtchnl_allowlist.h
ice_virtchnl_fdir.c ice: Reset FDIR counter in FDIR init stage 2023-04-04 08:34:52 -07:00
ice_virtchnl_fdir.h
ice_vlan.h
ice_vlan_mode.c ice: define meta data to match in switch 2023-05-19 08:57:43 -07:00
ice_vlan_mode.h
ice_vsi_vlan_lib.c
ice_vsi_vlan_lib.h
ice_vsi_vlan_ops.c
ice_vsi_vlan_ops.h
ice_xsk.c ice: add individual interrupt allocation 2023-05-16 09:38:38 -07:00
ice_xsk.h ice: xsk: change batched Tx descriptor cleaning 2022-09-27 08:11:02 -07:00
Makefile ice: move interrupt related code to separate file 2023-05-16 09:16:53 -07:00