linux/drivers/net/ethernet/intel/ice
Michal Michalik d938a8cca8 ice: Auxbus devices & driver for E822 TS
There is a problem in HW in E822-based devices leading to race
condition.
It might happen that, in order:
- PF0 (which owns the PHC) requests few timestamps,
- PF1 requests a timestamp,
- interrupt is being triggered and both PF0 and PF1 threads are woken
up,
- PF0 got one timestamp, still waiting for others so not going to sleep,
- PF1 gets it's timestamp, process it and go to sleep,
- PF1 requests a timestamp again,
- just before PF0 goes to sleep timestamp of PF1 appear,
- PF0 finishes all it's timestamps and go to sleep (PF1 also sleeping).
That leaves PF1 timestamp memory not read, which lead to blocking the
next interrupt from arriving.

Fix it by adding auxiliary devices and only one driver to handle all the
timestamps for all PF's by PHC owner. In the past each PF requested it's
own timestamps and process it from the start till the end which causes
problem described above. Currently each PF requests the timestamps as
before, but the actual reading of the completed timestamps is being done
by the PTP auxiliary driver, which is registered by the PF which owns PHC.

Additionally, the newly introduced auxiliary driver/devices for PTP clock
owner will be used for other features in all products (including E810).

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
Signed-off-by: Michal Michalik <michal.michalik@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2023-09-20 08:56:18 -07:00
..
ice.h ice: Auxbus devices & driver for E822 TS 2023-09-20 08:56:18 -07:00
ice_adminq_cmd.h ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_arfs.c ice: add individual interrupt allocation 2023-05-16 09:38:38 -07:00
ice_arfs.h
ice_base.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-24 10:51:39 -07:00
ice_base.h
ice_cgu_regs.h
ice_common.c ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_common.h ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_controlq.c ice: remove null checks before devm_kfree() calls 2023-06-22 10:30:34 -07:00
ice_controlq.h ice: reduce initial wait for control queue messages 2023-06-22 10:23:44 -07:00
ice_dcb.c ice: Fix DSCP PFC TLV creation 2023-03-07 13:02:01 -08:00
ice_dcb.h
ice_dcb_lib.c ice: Fix undersized tx_flags variable 2023-05-12 09:27:44 +01:00
ice_dcb_lib.h
ice_dcb_nl.c ice: enforce no DCB config changing when in bond 2023-07-27 10:56:32 -07:00
ice_dcb_nl.h
ice_ddp.c ice: refactor ice_ddp to make functions static 2023-08-17 10:43:24 -07:00
ice_ddp.h ice: refactor ice_ddp to make functions static 2023-08-17 10:43:24 -07:00
ice_devids.h
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_dpll.c ice: implement dpll interface to control cgu 2023-09-17 11:50:20 +01:00
ice_dpll.h ice: implement dpll interface to control cgu 2023-09-17 11:50:20 +01:00
ice_eswitch.c Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2023-08-18 19:09:02 -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_eswitch_br.c ice: Accept LAG netdevs in bridge offloads 2023-08-07 13:01:29 -07:00
ice_eswitch_br.h ice: implement static version of ageing 2023-07-24 08:53:42 -07:00
ice_ethtool.c ice: prevent NULL pointer deref during reload 2023-07-14 09:56:20 -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: Fix memory management in ice_ethtool_fdir.c 2023-07-24 17:07:51 -07:00
ice_fdir.c
ice_fdir.h
ice_flex_pipe.c
ice_flex_pipe.h
ice_flex_type.h
ice_flow.c ice: remove null checks before devm_kfree() calls 2023-06-22 10:30:34 -07:00
ice_flow.h
ice_fltr.c
ice_fltr.h
ice_fw_update.c ice: split ice_aq_wait_for_event() func into two 2023-08-17 13:59:46 -07:00
ice_fw_update.h
ice_gnss.c ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_gnss.h ice: make writes to /dev/gnssX synchronous 2023-06-07 10:51:58 +01:00
ice_hw_autogen.h ice: Auxbus devices & driver for E822 TS 2023-09-20 08:56:18 -07: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: drop two params from ice_aq_alloc_free_res() 2023-08-17 13:59:46 -07:00
ice_lag.h ice: update reset path for SRIOV LAG support 2023-07-27 10:56:33 -07:00
ice_lan_tx_rx.h
ice_lib.c ice: introduce ice_pf_src_tmr_owned 2023-09-18 10:46:11 -07:00
ice_lib.h ice: refactor ice_lib to make functions static 2023-08-17 10:43:37 -07:00
ice_main.c ice: Auxbus devices & driver for E822 TS 2023-09-20 08:56:18 -07:00
ice_nvm.c
ice_nvm.h
ice_osdep.h
ice_pf_vsi_vlan_ops.c
ice_pf_vsi_vlan_ops.h
ice_protocol_type.h ice: Rename enum ice_pkt_flags values 2023-08-07 13:01:29 -07:00
ice_ptp.c ice: Auxbus devices & driver for E822 TS 2023-09-20 08:56:18 -07:00
ice_ptp.h ice: Auxbus devices & driver for E822 TS 2023-09-20 08:56:18 -07:00
ice_ptp_consts.h
ice_ptp_hw.c ice: PTP: move quad value check inside ice_fill_phy_msg_e822 2023-09-18 10:39:10 -07:00
ice_ptp_hw.h ice: introduce hw->phy_model for handling PTP PHY differences 2023-09-18 10:39:10 -07:00
ice_repr.c ice: Implement basic eswitch bridge setup 2023-07-24 08:53:05 -07:00
ice_repr.h ice: Implement basic eswitch bridge setup 2023-07-24 08:53:05 -07:00
ice_sbq_cmd.h
ice_sched.c ice: refactor ice_sched to make functions static 2023-08-17 13:59:45 -07:00
ice_sched.h ice: refactor ice_sched to make functions static 2023-08-17 13:59:45 -07:00
ice_sriov.c Revert "ice: Fix ice VF reset during iavf initialization" 2023-08-21 09:25: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: drop two params from ice_aq_alloc_free_res() 2023-08-17 13:59:46 -07:00
ice_switch.h ice: remove unused methods 2023-08-17 10:43:06 -07:00
ice_tc_lib.c ice: Add direction metadata 2023-08-07 13:01:29 -07:00
ice_tc_lib.h ice: Fix tx queue rate limit when TCs are configured 2023-07-05 09:29:37 -07:00
ice_trace.h ice: add tracepoints for the switchdev bridge 2023-07-24 08:53:49 -07:00
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_type.h ice: PTP: Rename macros used for PHY/QUAD port definitions 2023-09-18 10:39:10 -07:00
ice_vf_lib.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-24 10:51:39 -07:00
ice_vf_lib.h ice: Check CRC strip requirement for VLAN strip 2023-09-13 08:58:23 -07:00
ice_vf_lib_private.h ice: refactor ice_vf_lib to make functions static 2023-08-17 10:43:53 -07: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: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_vf_vsi_vlan_ops.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_virtchnl.c ice: Check CRC strip requirement for VLAN strip 2023-09-13 08:58:23 -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_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: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_vsi_vlan_lib.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_vsi_vlan_ops.c
ice_vsi_vlan_ops.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_xsk.c ice: xsk: Tx multi-buffer support 2023-07-19 09:56:50 -07:00
ice_xsk.h
Makefile ice: implement dpll interface to control cgu 2023-09-17 11:50:20 +01:00