cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

spectrum_ptp.h (5027B)


      1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
      2/* Copyright (c) 2019 Mellanox Technologies. All rights reserved */
      3
      4#ifndef _MLXSW_SPECTRUM_PTP_H
      5#define _MLXSW_SPECTRUM_PTP_H
      6
      7#include <linux/device.h>
      8#include <linux/rhashtable.h>
      9
     10struct mlxsw_sp;
     11struct mlxsw_sp_port;
     12struct mlxsw_sp_ptp_clock;
     13
     14static inline int mlxsw_sp_ptp_get_ts_info_noptp(struct ethtool_ts_info *info)
     15{
     16	info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE |
     17				SOF_TIMESTAMPING_SOFTWARE;
     18	info->phc_index = -1;
     19	return 0;
     20}
     21
     22#if IS_REACHABLE(CONFIG_PTP_1588_CLOCK)
     23
     24struct mlxsw_sp_ptp_clock *
     25mlxsw_sp1_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev);
     26
     27void mlxsw_sp1_ptp_clock_fini(struct mlxsw_sp_ptp_clock *clock);
     28
     29struct mlxsw_sp_ptp_state *mlxsw_sp1_ptp_init(struct mlxsw_sp *mlxsw_sp);
     30
     31void mlxsw_sp1_ptp_fini(struct mlxsw_sp_ptp_state *ptp_state);
     32
     33void mlxsw_sp1_ptp_receive(struct mlxsw_sp *mlxsw_sp, struct sk_buff *skb,
     34			   u16 local_port);
     35
     36void mlxsw_sp1_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
     37			       struct sk_buff *skb, u16 local_port);
     38
     39void mlxsw_sp1_ptp_got_timestamp(struct mlxsw_sp *mlxsw_sp, bool ingress,
     40				 u16 local_port, u8 message_type,
     41				 u8 domain_number, u16 sequence_id,
     42				 u64 timestamp);
     43
     44int mlxsw_sp1_ptp_hwtstamp_get(struct mlxsw_sp_port *mlxsw_sp_port,
     45			       struct hwtstamp_config *config);
     46
     47int mlxsw_sp1_ptp_hwtstamp_set(struct mlxsw_sp_port *mlxsw_sp_port,
     48			       struct hwtstamp_config *config);
     49
     50void mlxsw_sp1_ptp_shaper_work(struct work_struct *work);
     51
     52int mlxsw_sp1_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
     53			      struct ethtool_ts_info *info);
     54
     55int mlxsw_sp1_get_stats_count(void);
     56void mlxsw_sp1_get_stats_strings(u8 **p);
     57void mlxsw_sp1_get_stats(struct mlxsw_sp_port *mlxsw_sp_port,
     58			 u64 *data, int data_index);
     59
     60#else
     61
     62static inline struct mlxsw_sp_ptp_clock *
     63mlxsw_sp1_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
     64{
     65	return NULL;
     66}
     67
     68static inline void mlxsw_sp1_ptp_clock_fini(struct mlxsw_sp_ptp_clock *clock)
     69{
     70}
     71
     72static inline struct mlxsw_sp_ptp_state *
     73mlxsw_sp1_ptp_init(struct mlxsw_sp *mlxsw_sp)
     74{
     75	return NULL;
     76}
     77
     78static inline void mlxsw_sp1_ptp_fini(struct mlxsw_sp_ptp_state *ptp_state)
     79{
     80}
     81
     82static inline void mlxsw_sp1_ptp_receive(struct mlxsw_sp *mlxsw_sp,
     83					 struct sk_buff *skb, u16 local_port)
     84{
     85	mlxsw_sp_rx_listener_no_mark_func(skb, local_port, mlxsw_sp);
     86}
     87
     88static inline void mlxsw_sp1_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
     89					     struct sk_buff *skb, u16 local_port)
     90{
     91	dev_kfree_skb_any(skb);
     92}
     93
     94static inline void
     95mlxsw_sp1_ptp_got_timestamp(struct mlxsw_sp *mlxsw_sp, bool ingress,
     96			    u16 local_port, u8 message_type,
     97			    u8 domain_number,
     98			    u16 sequence_id, u64 timestamp)
     99{
    100}
    101
    102static inline int
    103mlxsw_sp1_ptp_hwtstamp_get(struct mlxsw_sp_port *mlxsw_sp_port,
    104			   struct hwtstamp_config *config)
    105{
    106	return -EOPNOTSUPP;
    107}
    108
    109static inline int
    110mlxsw_sp1_ptp_hwtstamp_set(struct mlxsw_sp_port *mlxsw_sp_port,
    111			   struct hwtstamp_config *config)
    112{
    113	return -EOPNOTSUPP;
    114}
    115
    116static inline void mlxsw_sp1_ptp_shaper_work(struct work_struct *work)
    117{
    118}
    119
    120static inline int mlxsw_sp1_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
    121					    struct ethtool_ts_info *info)
    122{
    123	return mlxsw_sp_ptp_get_ts_info_noptp(info);
    124}
    125
    126static inline int mlxsw_sp1_get_stats_count(void)
    127{
    128	return 0;
    129}
    130
    131static inline void mlxsw_sp1_get_stats_strings(u8 **p)
    132{
    133}
    134
    135static inline void mlxsw_sp1_get_stats(struct mlxsw_sp_port *mlxsw_sp_port,
    136				       u64 *data, int data_index)
    137{
    138}
    139#endif
    140
    141static inline struct mlxsw_sp_ptp_clock *
    142mlxsw_sp2_ptp_clock_init(struct mlxsw_sp *mlxsw_sp, struct device *dev)
    143{
    144	return NULL;
    145}
    146
    147static inline void mlxsw_sp2_ptp_clock_fini(struct mlxsw_sp_ptp_clock *clock)
    148{
    149}
    150
    151static inline struct mlxsw_sp_ptp_state *
    152mlxsw_sp2_ptp_init(struct mlxsw_sp *mlxsw_sp)
    153{
    154	return NULL;
    155}
    156
    157static inline void mlxsw_sp2_ptp_fini(struct mlxsw_sp_ptp_state *ptp_state)
    158{
    159}
    160
    161static inline void mlxsw_sp2_ptp_receive(struct mlxsw_sp *mlxsw_sp,
    162					 struct sk_buff *skb, u16 local_port)
    163{
    164	mlxsw_sp_rx_listener_no_mark_func(skb, local_port, mlxsw_sp);
    165}
    166
    167static inline void mlxsw_sp2_ptp_transmitted(struct mlxsw_sp *mlxsw_sp,
    168					     struct sk_buff *skb, u16 local_port)
    169{
    170	dev_kfree_skb_any(skb);
    171}
    172
    173static inline int
    174mlxsw_sp2_ptp_hwtstamp_get(struct mlxsw_sp_port *mlxsw_sp_port,
    175			   struct hwtstamp_config *config)
    176{
    177	return -EOPNOTSUPP;
    178}
    179
    180static inline int
    181mlxsw_sp2_ptp_hwtstamp_set(struct mlxsw_sp_port *mlxsw_sp_port,
    182			   struct hwtstamp_config *config)
    183{
    184	return -EOPNOTSUPP;
    185}
    186
    187static inline void mlxsw_sp2_ptp_shaper_work(struct work_struct *work)
    188{
    189}
    190
    191static inline int mlxsw_sp2_ptp_get_ts_info(struct mlxsw_sp *mlxsw_sp,
    192					    struct ethtool_ts_info *info)
    193{
    194	return mlxsw_sp_ptp_get_ts_info_noptp(info);
    195}
    196
    197static inline int mlxsw_sp2_get_stats_count(void)
    198{
    199	return 0;
    200}
    201
    202static inline void mlxsw_sp2_get_stats_strings(u8 **p)
    203{
    204}
    205
    206static inline void mlxsw_sp2_get_stats(struct mlxsw_sp_port *mlxsw_sp_port,
    207				       u64 *data, int data_index)
    208{
    209}
    210
    211#endif