Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/dsa/sja1105/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  sja1105_tas.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2019, Vladimir Oltean <olteanv@gmail.com>
 */

#ifndef _SJA1105_TAS_H
#define _SJA1105_TAS_H

#include <net/pkt_sched.h>

#define SJA1105_TAS_MAX_DELTA  BIT(18)

struct sja1105_private;

#if IS_ENABLED(CONFIG_NET_DSA_SJA1105_TAS)

enum sja1105_tas_state {
 SJA1105_TAS_STATE_DISABLED,
 SJA1105_TAS_STATE_ENABLED_NOT_RUNNING,
 SJA1105_TAS_STATE_RUNNING,
};

enum sja1105_ptp_op {
 SJA1105_PTP_NONE,
 SJA1105_PTP_CLOCKSTEP,
 SJA1105_PTP_ADJUSTFREQ,
};

struct sja1105_gate_entry {
 struct list_head list;
 struct sja1105_rule *rule;
 s64 interval;
 u8 gate_state;
};

struct sja1105_gating_config {
 u64 cycle_time;
 s64 base_time;
 int num_entries;
 struct list_head entries;
};

struct sja1105_tas_data {
 struct tc_taprio_qopt_offload *offload[SJA1105_MAX_NUM_PORTS];
 struct sja1105_gating_config gating_cfg;
 enum sja1105_tas_state state;
 enum sja1105_ptp_op last_op;
 struct work_struct tas_work;
 s64 earliest_base_time;
 s64 oper_base_time;
 u64 max_cycle_time;
 bool enabled;
};

int sja1105_setup_tc_taprio(struct dsa_switch *ds, int port,
       struct tc_taprio_qopt_offload *admin);

void sja1105_tas_setup(struct dsa_switch *ds);

void sja1105_tas_teardown(struct dsa_switch *ds);

void sja1105_tas_clockstep(struct dsa_switch *ds);

void sja1105_tas_adjfreq(struct dsa_switch *ds);

bool sja1105_gating_check_conflicts(struct sja1105_private *priv, int port,
        struct netlink_ext_ack *extack);

int sja1105_init_scheduling(struct sja1105_private *priv);

#else

/* C doesn't allow empty structures, bah! */
struct sja1105_tas_data {
 u8 dummy;
};

static inline int sja1105_setup_tc_taprio(struct dsa_switch *ds, int port,
       struct tc_taprio_qopt_offload *admin)
{
 return -EOPNOTSUPP;
}

static inline void sja1105_tas_setup(struct dsa_switch *ds) { }

static inline void sja1105_tas_teardown(struct dsa_switch *ds) { }

static inline void sja1105_tas_clockstep(struct dsa_switch *ds) { }

static inline void sja1105_tas_adjfreq(struct dsa_switch *ds) { }

static inline bool
sja1105_gating_check_conflicts(struct dsa_switch *ds, int port,
          struct netlink_ext_ack *extack)
{
 return true;
}

static inline int sja1105_init_scheduling(struct sja1105_private *priv)
{
 return 0;
}

#endif /* IS_ENABLED(CONFIG_NET_DSA_SJA1105_TAS) */

#endif /* _SJA1105_TAS_H */

Messung V0.5
C=89 H=90 G=89

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.