Home
last modified time | relevance | path

Searched refs:flow (Results 1 – 25 of 352) sorted by relevance

12345678910>>...15

/linux/drivers/net/wireless/broadcom/brcm80211/brcmfmac/
H A Dflowring.c43 brcmf_flowring_is_tdls_mac(struct brcmf_flowring *flow, u8 mac[ETH_ALEN]) in brcmf_flowring_is_tdls_mac() argument
47 search = flow->tdls_entry; in brcmf_flowring_is_tdls_mac()
59 u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN], in brcmf_flowring_lookup() argument
71 sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT); in brcmf_flowring_lookup()
77 if ((sta) && (flow->tdls_active) && in brcmf_flowring_lookup()
78 (brcmf_flowring_is_tdls_mac(flow, da))) { in brcmf_flowring_lookup()
85 hash = flow->hash; in brcmf_flowring_lookup()
103 u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN], in brcmf_flowring_create() argument
116 sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT); in brcmf_flowring_create()
122 if ((sta) && (flow->tdls_active) && in brcmf_flowring_create()
[all …]
H A Dflowring.h50 u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
52 u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
54 void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid);
55 void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid);
56 u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid);
57 u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid,
59 struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid);
60 void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid,
62 u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid);
63 u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid);
[all …]
/linux/drivers/gpu/ipu-v3/
H A Dipu-dp.c46 u32 flow; member
64 struct ipu_flow flow[IPUV3_NUM_FLOWS]; member
82 struct ipu_flow *flow = to_flow(dp); in ipu_dp_set_global_alpha() local
83 struct ipu_dp_priv *priv = flow->priv; in ipu_dp_set_global_alpha()
88 reg = readl(flow->base + DP_COM_CONF); in ipu_dp_set_global_alpha()
93 writel(reg, flow->base + DP_COM_CONF); in ipu_dp_set_global_alpha()
96 reg = readl(flow->base + DP_GRAPH_WIND_CTRL) & 0x00FFFFFFL; in ipu_dp_set_global_alpha()
98 flow->base + DP_GRAPH_WIND_CTRL); in ipu_dp_set_global_alpha()
100 reg = readl(flow->base + DP_COM_CONF); in ipu_dp_set_global_alpha()
101 writel(reg | DP_COM_CONF_GWAM, flow->base + DP_COM_CONF); in ipu_dp_set_global_alpha()
[all …]
/linux/include/net/
H A Dfq_impl.h16 __fq_adjust_removal(struct fq *fq, struct fq_flow *flow, unsigned int packets, in __fq_adjust_removal() argument
19 struct fq_tin *tin = flow->tin; in __fq_adjust_removal()
24 flow->backlog -= bytes; in __fq_adjust_removal()
28 if (flow->backlog) in __fq_adjust_removal()
31 if (flow == &tin->default_flow) { in __fq_adjust_removal()
36 idx = flow - fq->flows; in __fq_adjust_removal()
41 struct fq_flow *flow, in fq_adjust_removal() argument
44 __fq_adjust_removal(fq, flow, 1, skb->len, skb->truesize); in fq_adjust_removal()
48 struct fq_flow *flow) in fq_flow_dequeue() argument
54 skb = __skb_dequeue(&flow->queue); in fq_flow_dequeue()
[all …]
/linux/drivers/net/phy/mscc/
H A Dmscc_macsec.c371 struct macsec_flow *flow) in vsc8584_macsec_flow() argument
374 enum macsec_bank bank = flow->bank; in vsc8584_macsec_flow()
375 u32 val, match = 0, mask = 0, action = 0, idx = flow->index; in vsc8584_macsec_flow()
377 if (flow->match.tagged) in vsc8584_macsec_flow()
379 if (flow->match.untagged) in vsc8584_macsec_flow()
382 if (bank == MACSEC_INGR && flow->assoc_num >= 0) { in vsc8584_macsec_flow()
383 match |= MSCC_MS_SAM_MISC_MATCH_AN(flow->assoc_num); in vsc8584_macsec_flow()
387 if (bank == MACSEC_INGR && flow->match.sci && flow->rx_sa->sc->sci) { in vsc8584_macsec_flow()
388 u64 sci = (__force u64)flow->rx_sa->sc->sci; in vsc8584_macsec_flow()
400 if (flow->match.etype) { in vsc8584_macsec_flow()
[all …]
/linux/net/netfilter/
H A Dnf_flow_table_core.c22 flow_offload_fill_dir(struct flow_offload *flow, in flow_offload_fill_dir() argument
25 struct flow_offload_tuple *ft = &flow->tuplehash[dir].tuple; in flow_offload_fill_dir()
26 struct nf_conntrack_tuple *ctt = &flow->ct->tuplehash[dir].tuple; in flow_offload_fill_dir()
55 struct flow_offload *flow; in flow_offload_alloc() local
60 flow = kmem_cache_zalloc(flow_offload_cachep, GFP_ATOMIC); in flow_offload_alloc()
61 if (!flow) in flow_offload_alloc()
65 flow->ct = ct; in flow_offload_alloc()
67 flow_offload_fill_dir(flow, FLOW_OFFLOAD_DIR_ORIGINAL); in flow_offload_alloc()
68 flow_offload_fill_dir(flow, FLOW_OFFLOAD_DIR_REPLY); in flow_offload_alloc()
71 __set_bit(NF_FLOW_SNAT, &flow->flags); in flow_offload_alloc()
[all …]
H A Dnf_flow_table_offload.c28 struct flow_offload *flow; member
233 const struct flow_offload *flow, in flow_offload_eth_src() argument
248 this_tuple = &flow->tuplehash[dir].tuple; in flow_offload_eth_src()
255 other_tuple = &flow->tuplehash[!dir].tuple; in flow_offload_eth_src()
283 const struct flow_offload *flow, in flow_offload_eth_dst() argument
301 this_tuple = &flow->tuplehash[dir].tuple; in flow_offload_eth_dst()
308 other_tuple = &flow->tuplehash[!dir].tuple; in flow_offload_eth_dst()
343 const struct flow_offload *flow, in flow_offload_ipv4_snat() argument
357 addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr; in flow_offload_ipv4_snat()
361 addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr; in flow_offload_ipv4_snat()
[all …]
H A Dnf_tables_offload.c12 struct nft_flow_rule *flow; in nft_flow_rule_alloc() local
14 flow = kzalloc_obj(struct nft_flow_rule); in nft_flow_rule_alloc()
15 if (!flow) in nft_flow_rule_alloc()
18 flow->rule = flow_rule_alloc(num_actions); in nft_flow_rule_alloc()
19 if (!flow->rule) { in nft_flow_rule_alloc()
20 kfree(flow); in nft_flow_rule_alloc()
24 flow->rule->match.dissector = &flow->match.dissector; in nft_flow_rule_alloc()
25 flow->rule->match.mask = &flow->match.mask; in nft_flow_rule_alloc()
26 flow->rule->match.key = &flow->match.key; in nft_flow_rule_alloc()
28 return flow; in nft_flow_rule_alloc()
[all …]
H A Dnf_flow_table_ip.c25 static int nf_flow_state_check(struct flow_offload *flow, int proto, in nf_flow_state_check() argument
34 if (tcph->syn && test_bit(NF_FLOW_CLOSING, &flow->flags)) { in nf_flow_state_check()
35 flow_offload_teardown(flow); in nf_flow_state_check()
40 !test_bit(NF_FLOW_CLOSING, &flow->flags)) in nf_flow_state_check()
41 set_bit(NF_FLOW_CLOSING, &flow->flags); in nf_flow_state_check()
83 static void nf_flow_snat_ip(const struct flow_offload *flow, in nf_flow_snat_ip() argument
92 new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr; in nf_flow_snat_ip()
97 new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr; in nf_flow_snat_ip()
106 static void nf_flow_dnat_ip(const struct flow_offload *flow, in nf_flow_dnat_ip() argument
115 new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v4.s_addr; in nf_flow_dnat_ip()
[all …]
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/
H A Dtc_priv.h131 struct mlx5e_tc_flow *flow,
136 mlx5e_tc_get_encap_attr(struct mlx5e_tc_flow *flow);
138 void mlx5e_tc_unoffload_flow_post_acts(struct mlx5e_tc_flow *flow);
139 int mlx5e_tc_offload_flow_post_acts(struct mlx5e_tc_flow *flow);
141 bool mlx5e_is_eswitch_flow(struct mlx5e_tc_flow *flow);
142 bool mlx5e_is_ft_flow(struct mlx5e_tc_flow *flow);
143 bool mlx5e_is_offloaded_flow(struct mlx5e_tc_flow *flow);
144 int mlx5e_get_flow_namespace(struct mlx5e_tc_flow *flow);
147 static inline void __flow_flag_set(struct mlx5e_tc_flow *flow, unsigned long flag) in __flow_flag_set() argument
151 set_bit(flag, &flow->flags); in __flow_flag_set()
[all …]
H A Dtc_tun_encap.h10 struct mlx5e_tc_flow *flow,
15 struct mlx5e_tc_flow *flow,
23 struct mlx5e_tc_flow *flow,
26 struct mlx5e_tc_flow *flow);
29 struct mlx5e_tc_flow *flow);
31 struct mlx5e_tc_flow *flow);
34 struct mlx5e_tc_flow *flow,
39 struct mlx5e_tc_flow *flow,
44 int mlx5e_tc_set_attr_rx_tun(struct mlx5e_tc_flow *flow,
/linux/net/openvswitch/
H A Dflow_table.c6 #include "flow.h"
74 struct sw_flow *flow; in ovs_flow_alloc() local
77 flow = kmem_cache_zalloc(flow_cache, GFP_KERNEL); in ovs_flow_alloc()
78 if (!flow) in ovs_flow_alloc()
81 flow->stats_last_writer = -1; in ovs_flow_alloc()
82 flow->cpu_used_mask = (struct cpumask *)&flow->stats[nr_cpu_ids]; in ovs_flow_alloc()
93 RCU_INIT_POINTER(flow->stats[0], stats); in ovs_flow_alloc()
95 cpumask_set_cpu(0, flow->cpu_used_mask); in ovs_flow_alloc()
97 return flow; in ovs_flow_alloc()
108 flow_free(struct sw_flow * flow) flow_free() argument
129 struct sw_flow *flow = container_of(rcu, struct sw_flow, rcu); rcu_free_flow_callback() local
134 ovs_flow_free(struct sw_flow * flow,bool deferred) ovs_flow_free() argument
460 table_instance_flow_free(struct flow_table * table,struct table_instance * ti,struct table_instance * ufid_ti,struct sw_flow * flow) table_instance_flow_free() argument
483 struct sw_flow *flow; table_instance_flow_flush() local
526 struct sw_flow *flow; ovs_flow_tbl_dump_next() local
557 table_instance_insert(struct table_instance * ti,struct sw_flow * flow) table_instance_insert() argument
566 ufid_table_instance_insert(struct table_instance * ti,struct sw_flow * flow) ufid_table_instance_insert() argument
585 struct sw_flow *flow; flow_table_copy_flows() local
678 flow_cmp_masked_key(const struct sw_flow * flow,const struct sw_flow_key * key,const struct sw_flow_key_range * range) flow_cmp_masked_key() argument
685 ovs_flow_cmp_unmasked_key(const struct sw_flow * flow,const struct sw_flow_match * match) ovs_flow_cmp_unmasked_key() argument
701 struct sw_flow *flow; masked_flow_lookup() local
734 struct sw_flow *flow; flow_lookup() local
791 struct sw_flow *flow; ovs_flow_tbl_lookup_stats() local
852 struct sw_flow *flow; ovs_flow_tbl_lookup() local
876 struct sw_flow *flow; ovs_flow_tbl_lookup_exact() local
897 ovs_flow_cmp_ufid(const struct sw_flow * flow,const struct sw_flow_id * sfid) ovs_flow_cmp_ufid() argument
906 ovs_flow_cmp(const struct sw_flow * flow,const struct sw_flow_match * match) ovs_flow_cmp() argument
919 struct sw_flow *flow; ovs_flow_tbl_lookup_ufid() local
954 ovs_flow_tbl_remove(struct flow_table * table,struct sw_flow * flow) ovs_flow_tbl_remove() argument
1004 flow_mask_insert(struct flow_table * tbl,struct sw_flow * flow,const struct sw_flow_mask * new) flow_mask_insert() argument
1033 flow_key_insert(struct flow_table * table,struct sw_flow * flow) flow_key_insert() argument
1057 flow_ufid_insert(struct flow_table * table,struct sw_flow * flow) flow_ufid_insert() argument
1079 ovs_flow_tbl_insert(struct flow_table * table,struct sw_flow * flow,const struct sw_flow_mask * mask) ovs_flow_tbl_insert() argument
[all...]
/linux/drivers/net/ethernet/broadcom/bnxt/
H A Dbnxt_tc.c370 struct bnxt_tc_flow *flow) in bnxt_tc_parse_flow() argument
391 flow->l2_key.ether_type = match.key->n_proto; in bnxt_tc_parse_flow()
392 flow->l2_mask.ether_type = match.mask->n_proto; in bnxt_tc_parse_flow()
396 flow->l4_key.ip_proto = match.key->ip_proto; in bnxt_tc_parse_flow()
397 flow->l4_mask.ip_proto = match.mask->ip_proto; in bnxt_tc_parse_flow()
405 flow->flags |= BNXT_TC_FLOW_FLAGS_ETH_ADDRS; in bnxt_tc_parse_flow()
406 ether_addr_copy(flow->l2_key.dmac, match.key->dst); in bnxt_tc_parse_flow()
407 ether_addr_copy(flow->l2_mask.dmac, match.mask->dst); in bnxt_tc_parse_flow()
408 ether_addr_copy(flow->l2_key.smac, match.key->src); in bnxt_tc_parse_flow()
409 ether_addr_copy(flow->l2_mask.smac, match.mask->src); in bnxt_tc_parse_flow()
[all …]
/linux/drivers/infiniband/hw/hfi1/
H A Dtid_rdma.c134 struct tid_rdma_flow *flow,
881 static u32 tid_rdma_find_phys_blocks_4k(struct tid_rdma_flow *flow, in tid_rdma_find_phys_blocks_4k() argument
898 trace_hfi1_tid_flow_page(flow->req->qp, flow, 0, 0, 0, vaddr); in tid_rdma_find_phys_blocks_4k()
901 trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 0, 0, in tid_rdma_find_phys_blocks_4k()
935 trace_hfi1_tid_pageset(flow->req->qp, setcount, in tid_rdma_find_phys_blocks_4k()
1020 static u32 tid_rdma_find_phys_blocks_8k(struct tid_rdma_flow *flow, in tid_rdma_find_phys_blocks_8k() argument
1034 trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 1, 0, v0); in tid_rdma_find_phys_blocks_8k()
1037 trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 1, 1, v1); in tid_rdma_find_phys_blocks_8k()
1087 static u32 kern_find_pages(struct tid_rdma_flow *flow, in kern_find_pages() argument
1091 struct tid_rdma_request *req = flow->req; in kern_find_pages()
[all …]
/linux/net/sched/
H A Dsch_fq_codel.c116 static inline struct sk_buff *dequeue_head(struct fq_codel_flow *flow) in dequeue_head() argument
118 struct sk_buff *skb = flow->head; in dequeue_head()
120 WRITE_ONCE(flow->head, skb->next); in dequeue_head()
126 static inline void flow_queue_add(struct fq_codel_flow *flow, in flow_queue_add() argument
129 if (flow->head == NULL) in flow_queue_add()
130 WRITE_ONCE(flow->head, skb); in flow_queue_add()
132 flow->tail->next = skb; in flow_queue_add()
133 flow->tail = skb; in flow_queue_add()
143 struct fq_codel_flow *flow; in fq_codel_drop() local
164 flow = &q->flows[idx]; in fq_codel_drop()
[all …]
H A Dsch_fq_pie.c119 static inline void flow_queue_add(struct fq_pie_flow *flow, in flow_queue_add() argument
122 if (!flow->head) in flow_queue_add()
123 flow->head = skb; in flow_queue_add()
125 flow->tail->next = skb; in flow_queue_add()
126 flow->tail = skb; in flow_queue_add()
229 static inline struct sk_buff *dequeue_head(struct fq_pie_flow *flow) in dequeue_head() argument
231 struct sk_buff *skb = flow->head; in dequeue_head()
233 flow->head = skb->next; in dequeue_head()
242 struct fq_pie_flow *flow; in fq_pie_qdisc_dequeue() local
254 flow = list_first_entry(head, struct fq_pie_flow, flowchain); in fq_pie_qdisc_dequeue()
[all …]
H A Dsch_hhf.c20 * buckets. Initially, a new flow starts as non-heavy-hitter. Once classified
37 * - For a heavy-hitter flow: *all* of its k array counters must be large.
38 * - For a non-heavy-hitter flow: some of its k array counters can be large
59 * Once a flow is classified as heavy-hitter, we also save its per-flow state
60 * in an exact-matching flow table so that its subsequent packets can be
66 * - If the flow-id of p (e.g., TCP 5-tuple) is already in the exact-matching
67 * heavy-hitter flow table, denoted table T, then send p to the heavy-hitter
70 * + If F decides that p belongs to a non-heavy-hitter flow, then send p
72 * + Otherwise, if F decides that p belongs to a new heavy-hitter flow,
184 struct hh_flow_state *flow, *next; seek_list() local
215 struct hh_flow_state *flow; alloc_new_hh() local
252 struct hh_flow_state *flow; hhf_classify() local
485 struct hh_flow_state *flow, *next; hhf_destroy() local
[all...]
H A Dcls_flow.c67 static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_src() argument
69 __be32 src = flow_get_u32_src(flow); in flow_get_src()
77 static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_dst() argument
79 __be32 dst = flow_get_u32_dst(flow); in flow_get_dst()
88 const struct flow_keys *flow) in flow_get_proto() argument
90 return flow->basic.ip_proto; in flow_get_proto()
94 const struct flow_keys *flow) in flow_get_proto_src() argument
96 if (flow->ports.ports) in flow_get_proto_src()
97 return ntohs(flow->ports.src); in flow_get_proto_src()
103 const struct flow_keys *flow) in flow_get_proto_dst() argument
[all …]
/linux/samples/bpf/
H A Dsockex2_kern.c62 struct flow_key_record *flow) in parse_ip()
72 flow->src = load_word(skb, nhoff + offsetof(struct iphdr, saddr)); in parse_ip()
73 flow->dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr)); in parse_ip()
86 struct flow_key_record *flow) in parse_ipv6()
90 flow->src = ipv6_addr_hash(skb, in parse_ipv6()
92 flow->dst = ipv6_addr_hash(skb, in parse_ipv6()
100 struct flow_key_record *flow) in flow_dissector()
120 nhoff = parse_ip(skb, nhoff, &ip_proto, flow); in flow_dissector()
122 nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); in flow_dissector()
158 nhoff = parse_ip(skb, nhoff, &ip_proto, flow); in flow_dissector()
63 parse_ip(struct __sk_buff * skb,__u64 nhoff,__u64 * ip_proto,struct flow_key_record * flow) parse_ip() argument
87 parse_ipv6(struct __sk_buff * skb,__u64 nhoff,__u64 * ip_proto,struct flow_key_record * flow) parse_ipv6() argument
101 flow_dissector(struct __sk_buff * skb,struct flow_key_record * flow) flow_dissector() argument
203 struct flow_key_record flow = {}; bpf_prog2() local
[all...]
/linux/Documentation/networking/
H A Dopenvswitch.rst8 flow-level packet processing on selected network devices. It can be
10 VLAN processing, network access control, flow-based network control,
15 within a bridge). Each datapath also has associated with it a "flow
22 extracting its flow key and looking it up in the flow table. If there
23 is a matching flow, it executes the associated actions. If there is
25 its processing, userspace will likely set up a flow to handle further
35 versions to parse additional protocols as part of the flow key. It
39 applications to work with any version of the flow key, past or future.
43 flow key that it parsed from the packet. Userspace then extracts its
44 own notion of a flow key from the packet and compares it against the
[all …]
/linux/drivers/infiniband/hw/usnic/
H A Dusnic_fwd.c203 struct usnic_fwd_flow *flow; in usnic_fwd_alloc_flow() local
213 flow = kzalloc_obj(*flow, GFP_ATOMIC); in usnic_fwd_alloc_flow()
214 if (!flow) in usnic_fwd_alloc_flow()
255 flow->flow_id = (uint32_t) a0; in usnic_fwd_alloc_flow()
256 flow->vnic_idx = uaction->vnic_idx; in usnic_fwd_alloc_flow()
257 flow->ufdev = ufdev; in usnic_fwd_alloc_flow()
263 return flow; in usnic_fwd_alloc_flow()
265 kfree(flow); in usnic_fwd_alloc_flow()
269 int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow) in usnic_fwd_dealloc_flow() argument
274 a0 = flow->flow_id; in usnic_fwd_dealloc_flow()
[all …]
/linux/tools/testing/selftests/bpf/progs/
H A Dtest_xdp_noinline.c123 struct flow_key flow; member
245 pckt->flow.port16[0] = udp->source; in parse_udp()
246 pckt->flow.port16[1] = udp->dest; in parse_udp()
248 pckt->flow.port16[0] = udp->dest; in parse_udp()
249 pckt->flow.port16[1] = udp->source; in parse_udp()
269 pckt->flow.port16[0] = tcp->source; in parse_tcp()
270 pckt->flow.port16[1] = tcp->dest; in parse_tcp()
272 pckt->flow.port16[0] = tcp->dest; in parse_tcp()
273 pckt->flow.port16[1] = tcp->source; in parse_tcp()
308 ip_suffix = pckt->flow.srcv6[3] ^ pckt->flow.port16[0]; in encap_v6()
[all …]
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/
H A Dgoto.c10 struct mlx5e_tc_flow *flow, in validate_goto_chain() argument
16 bool is_esw = mlx5e_is_eswitch_flow(flow); in validate_goto_chain()
17 bool ft_flow = mlx5e_is_ft_flow(flow); in validate_goto_chain()
66 struct mlx5e_tc_flow *flow = parse_state->flow; in tc_act_can_offload_goto() local
68 if (validate_goto_chain(flow->priv, flow, attr, act, extack)) in tc_act_can_offload_goto()
93 struct mlx5e_tc_flow *flow = parse_state->flow; in tc_act_post_parse_goto() local
112 if (!mlx5e_is_eswitch_flow(flow) && parse_attr->mirred_ifindex[0]) { in tc_act_post_parse_goto()
/linux/Documentation/bpf/
H A Dprog_flow_dissector.rst11 used in the various places in the networking subsystem (RFS, flow hash, etc).
13 BPF flow dissector is an attempt to reimplement C-based flow dissector logic
20 BPF flow dissector programs operate on an ``__sk_buff``. However, only the
22 ``flow_keys`` is ``struct bpf_flow_keys`` and contains flow dissector input
41 In the VLAN-less case, this is what the initial state of the BPF flow
49 +-- flow dissector starts here
58 In case of VLAN, flow dissector can be called with the two different states.
67 +-- flow dissector starts here
86 +-- flow dissector starts here
94 In this case VLAN information has been processed before the flow dissector
[all …]
/linux/Documentation/core-api/
H A Dgenericirq.rst52 optimize the flow of the interrupt handling for each specific interrupt
58 the flow control in the super-handler. This leads to a mix of flow logic
62 have different flow handling.
64 A more natural abstraction is the clean separation of the 'irq flow' and
68 reveals that most of them can use a generic set of 'irq flow' methods
71 IRQ flow itself but not in the chip details - and thus provides a more
74 Each interrupt descriptor is assigned its own high-level flow handler,
76 flow handler implementation also makes it simple to provide
82 IRQ-flow implementation for 'level type' interrupts and add a
104 2. High-level IRQ flow handlers
[all …]

12345678910>>...15