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

ice_dcb_lib.h (3893B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Copyright (c) 2019, Intel Corporation. */
      3
      4#ifndef _ICE_DCB_LIB_H_
      5#define _ICE_DCB_LIB_H_
      6
      7#include "ice.h"
      8#include "ice_base.h"
      9#include "ice_lib.h"
     10
     11#ifdef CONFIG_DCB
     12#define ICE_TC_MAX_BW		100 /* Default Max BW percentage */
     13#define ICE_DCB_HW_CHG_RST	0 /* DCB configuration changed with reset */
     14#define ICE_DCB_NO_HW_CHG	1 /* DCB configuration did not change */
     15#define ICE_DCB_HW_CHG		2 /* DCB configuration changed, no reset */
     16
     17void ice_dcb_rebuild(struct ice_pf *pf);
     18int ice_dcb_sw_dflt_cfg(struct ice_pf *pf, bool ets_willing, bool locked);
     19u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg *dcbcfg);
     20void ice_vsi_set_dcb_tc_cfg(struct ice_vsi *vsi);
     21bool ice_is_pfc_causing_hung_q(struct ice_pf *pf, unsigned int txqueue);
     22u8 ice_dcb_get_tc(struct ice_vsi *vsi, int queue_index);
     23int
     24ice_pf_dcb_cfg(struct ice_pf *pf, struct ice_dcbx_cfg *new_cfg, bool locked);
     25int ice_dcb_bwchk(struct ice_pf *pf, struct ice_dcbx_cfg *dcbcfg);
     26void ice_pf_dcb_recfg(struct ice_pf *pf);
     27void ice_vsi_cfg_dcb_rings(struct ice_vsi *vsi);
     28int ice_init_pf_dcb(struct ice_pf *pf, bool locked);
     29void ice_update_dcb_stats(struct ice_pf *pf);
     30void
     31ice_tx_prepare_vlan_flags_dcb(struct ice_tx_ring *tx_ring,
     32			      struct ice_tx_buf *first);
     33void
     34ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf,
     35				    struct ice_rq_event_info *event);
     36/**
     37 * ice_find_q_in_range
     38 * @low: start of queue range for a TC i.e. offset of TC
     39 * @high: start of queue for next TC
     40 * @tx_q: hung_queue/tx_queue
     41 *
     42 * finds if queue 'tx_q' falls between the two offsets of any given TC
     43 */
     44static inline bool ice_find_q_in_range(u16 low, u16 high, unsigned int tx_q)
     45{
     46	return (tx_q >= low) && (tx_q < high);
     47}
     48
     49static inline void
     50ice_set_cgd_num(struct ice_tlan_ctx *tlan_ctx, u8 dcb_tc)
     51{
     52	tlan_ctx->cgd_num = dcb_tc;
     53}
     54
     55static inline bool ice_is_dcb_active(struct ice_pf *pf)
     56{
     57	return (test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags) ||
     58		test_bit(ICE_FLAG_DCB_ENA, pf->flags));
     59}
     60
     61static inline u8 ice_get_pfc_mode(struct ice_pf *pf)
     62{
     63	return pf->hw.port_info->qos_cfg.local_dcbx_cfg.pfc_mode;
     64}
     65
     66#else
     67static inline void ice_dcb_rebuild(struct ice_pf *pf) { }
     68
     69static inline void ice_vsi_set_dcb_tc_cfg(struct ice_vsi *vsi)
     70{
     71	vsi->tc_cfg.ena_tc = ICE_DFLT_TRAFFIC_CLASS;
     72	vsi->tc_cfg.numtc = 1;
     73}
     74
     75static inline u8 ice_dcb_get_ena_tc(struct ice_dcbx_cfg __always_unused *dcbcfg)
     76{
     77	return ICE_DFLT_TRAFFIC_CLASS;
     78}
     79
     80static inline u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg __always_unused *dcbcfg)
     81{
     82	return 1;
     83}
     84
     85static inline u8
     86ice_dcb_get_tc(struct ice_vsi __always_unused *vsi,
     87	       int __always_unused queue_index)
     88{
     89	return 0;
     90}
     91
     92static inline int
     93ice_init_pf_dcb(struct ice_pf *pf, bool __always_unused locked)
     94{
     95	dev_dbg(ice_pf_to_dev(pf), "DCB not supported\n");
     96	return -EOPNOTSUPP;
     97}
     98
     99static inline int
    100ice_pf_dcb_cfg(struct ice_pf __always_unused *pf,
    101	       struct ice_dcbx_cfg __always_unused *new_cfg,
    102	       bool __always_unused locked)
    103{
    104	return -EOPNOTSUPP;
    105}
    106
    107static inline int
    108ice_tx_prepare_vlan_flags_dcb(struct ice_tx_ring __always_unused *tx_ring,
    109			      struct ice_tx_buf __always_unused *first)
    110{
    111	return 0;
    112}
    113
    114static inline bool ice_is_dcb_active(struct ice_pf __always_unused *pf)
    115{
    116	return false;
    117}
    118
    119static inline bool
    120ice_is_pfc_causing_hung_q(struct ice_pf __always_unused *pf,
    121			  unsigned int __always_unused txqueue)
    122{
    123	return false;
    124}
    125
    126static inline u8 ice_get_pfc_mode(struct ice_pf *pf)
    127{
    128	return 0;
    129}
    130
    131static inline void ice_pf_dcb_recfg(struct ice_pf *pf) { }
    132static inline void ice_vsi_cfg_dcb_rings(struct ice_vsi *vsi) { }
    133static inline void ice_update_dcb_stats(struct ice_pf *pf) { }
    134static inline void
    135ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf, struct ice_rq_event_info *event) { }
    136static inline void ice_set_cgd_num(struct ice_tlan_ctx *tlan_ctx, u8 dcb_tc) { }
    137#endif /* CONFIG_DCB */
    138#endif /* _ICE_DCB_LIB_H_ */