include/net/tc_act/tc_gate.h
Source file repositories/reference/linux-study-clean/include/net/tc_act/tc_gate.h
File Facts
- System
- Linux kernel
- Corpus path
include/net/tc_act/tc_gate.h- Extension
.h- Size
- 2988 bytes
- Lines
- 152
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
net/act_api.hlinux/tc_act/tc_gate.h
Detected Declarations
struct action_gate_entrystruct tcfg_gate_entrystruct tcf_gate_paramsstruct tcf_gatefunction tcf_gate_priofunction tcf_gate_basetimefunction tcf_gate_cycletimefunction tcf_gate_cycletimeextfunction tcf_gate_num_entries
Annotated Snippet
struct action_gate_entry {
u8 gate_state;
u32 interval;
s32 ipv;
s32 maxoctets;
};
struct tcfg_gate_entry {
int index;
u8 gate_state;
u32 interval;
s32 ipv;
s32 maxoctets;
struct list_head list;
};
struct tcf_gate_params {
s32 tcfg_priority;
u64 tcfg_basetime;
u64 tcfg_cycletime;
u64 tcfg_cycletime_ext;
u32 tcfg_flags;
s32 tcfg_clockid;
size_t num_entries;
struct list_head entries;
struct rcu_head rcu;
};
#define GATE_ACT_GATE_OPEN BIT(0)
#define GATE_ACT_PENDING BIT(1)
struct tcf_gate {
struct tc_action common;
struct tcf_gate_params __rcu *param;
u8 current_gate_status;
ktime_t current_close_time;
u32 current_entry_octets;
s32 current_max_octets;
struct tcfg_gate_entry *next_entry;
struct hrtimer hitimer;
enum tk_offsets tk_offset;
};
#define to_gate(a) ((struct tcf_gate *)a)
static inline struct tcf_gate_params *tcf_gate_params_locked(const struct tc_action *a)
{
struct tcf_gate *gact = to_gate(a);
return rcu_dereference_protected(gact->param,
lockdep_is_held(&gact->tcf_lock));
}
static inline s32 tcf_gate_prio(const struct tc_action *a)
{
struct tcf_gate_params *p;
s32 tcfg_prio;
p = tcf_gate_params_locked(a);
tcfg_prio = p->tcfg_priority;
return tcfg_prio;
}
static inline u64 tcf_gate_basetime(const struct tc_action *a)
{
struct tcf_gate_params *p;
u64 tcfg_basetime;
p = tcf_gate_params_locked(a);
tcfg_basetime = p->tcfg_basetime;
return tcfg_basetime;
}
static inline u64 tcf_gate_cycletime(const struct tc_action *a)
{
struct tcf_gate_params *p;
u64 tcfg_cycletime;
p = tcf_gate_params_locked(a);
tcfg_cycletime = p->tcfg_cycletime;
return tcfg_cycletime;
}
static inline u64 tcf_gate_cycletimeext(const struct tc_action *a)
{
struct tcf_gate_params *p;
u64 tcfg_cycletimeext;
Annotation
- Immediate include surface: `net/act_api.h`, `linux/tc_act/tc_gate.h`.
- Detected declarations: `struct action_gate_entry`, `struct tcfg_gate_entry`, `struct tcf_gate_params`, `struct tcf_gate`, `function tcf_gate_prio`, `function tcf_gate_basetime`, `function tcf_gate_cycletime`, `function tcf_gate_cycletimeext`, `function tcf_gate_num_entries`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.