/linux/drivers/net/wireless/broadcom/brcm80211/brcmfmac/ |
H A D | flowring.c | 43 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 D | flowring.h | 50 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 D | ipu-dp.c | 46 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 D | fq_impl.h | 16 __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 D | mscc_macsec.c | 371 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 D | nf_flow_table_core.c | 21 flow_offload_fill_dir(struct flow_offload *flow, in flow_offload_fill_dir() argument 24 struct flow_offload_tuple *ft = &flow->tuplehash[dir].tuple; in flow_offload_fill_dir() 25 struct nf_conntrack_tuple *ctt = &flow->ct->tuplehash[dir].tuple; in flow_offload_fill_dir() 54 struct flow_offload *flow; in flow_offload_alloc() local 59 flow = kzalloc(sizeof(*flow), GFP_ATOMIC); in flow_offload_alloc() 60 if (!flow) in flow_offload_alloc() 64 flow->ct = ct; in flow_offload_alloc() 66 flow_offload_fill_dir(flow, FLOW_OFFLOAD_DIR_ORIGINAL); in flow_offload_alloc() 67 flow_offload_fill_dir(flow, FLOW_OFFLOAD_DIR_REPLY); in flow_offload_alloc() 70 __set_bit(NF_FLOW_SNAT, &flow->flags); in flow_offload_alloc() [all …]
|
H A D | nf_flow_table_offload.c | 24 struct flow_offload *flow; member 224 const struct flow_offload *flow, in flow_offload_eth_src() argument 236 this_tuple = &flow->tuplehash[dir].tuple; in flow_offload_eth_src() 243 other_tuple = &flow->tuplehash[!dir].tuple; in flow_offload_eth_src() 271 const struct flow_offload *flow, in flow_offload_eth_dst() argument 286 this_tuple = &flow->tuplehash[dir].tuple; in flow_offload_eth_dst() 293 other_tuple = &flow->tuplehash[!dir].tuple; in flow_offload_eth_dst() 328 const struct flow_offload *flow, in flow_offload_ipv4_snat() argument 339 addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr; in flow_offload_ipv4_snat() 343 addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr; in flow_offload_ipv4_snat() [all …]
|
H A D | nf_flow_table_ip.c | 22 static int nf_flow_state_check(struct flow_offload *flow, int proto, in nf_flow_state_check() argument 31 if (tcph->syn && test_bit(NF_FLOW_CLOSING, &flow->flags)) { in nf_flow_state_check() 32 flow_offload_teardown(flow); in nf_flow_state_check() 37 !test_bit(NF_FLOW_CLOSING, &flow->flags)) in nf_flow_state_check() 38 set_bit(NF_FLOW_CLOSING, &flow->flags); in nf_flow_state_check() 80 static void nf_flow_snat_ip(const struct flow_offload *flow, in nf_flow_snat_ip() argument 89 new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr; in nf_flow_snat_ip() 94 new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr; in nf_flow_snat_ip() 103 static void nf_flow_dnat_ip(const struct flow_offload *flow, in nf_flow_dnat_ip() argument 112 new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v4.s_addr; in nf_flow_dnat_ip() [all …]
|
H A D | nf_tables_offload.c | 12 struct nft_flow_rule *flow; in nft_flow_rule_alloc() local 14 flow = kzalloc(sizeof(struct nft_flow_rule), GFP_KERNEL); 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 …]
|
/linux/tools/testing/selftests/bpf/progs/ |
H A D | bpf_qdisc_fq.c | 106 struct fq_flow_node __kptr * flow; member 168 struct fq_flow_node *flow, u32 *flow_cnt) in fq_flows_add_head() argument 171 bpf_list_push_front(head, &flow->list_node); in fq_flows_add_head() 178 struct fq_flow_node *flow, u32 *flow_cnt) in fq_flows_add_tail() argument 181 bpf_list_push_back(head, &flow->list_node); in fq_flows_add_tail() 220 static void fq_flow_set_detached(struct fq_flow_node *flow) in fq_flow_set_detached() argument 222 flow->age = bpf_jiffies64(); in fq_flow_set_detached() 225 static bool fq_flow_is_detached(struct fq_flow_node *flow) in fq_flow_is_detached() argument 227 return flow->age != 0 && flow->age != ~0ULL; in fq_flow_is_detached() 240 struct fq_flow_node *flow; in fq_new_flow() local [all …]
|
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/ |
H A D | tc_priv.h | 131 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 D | tc_tun_encap.c | 82 int mlx5e_tc_set_attr_rx_tun(struct mlx5e_tc_flow *flow, in mlx5e_tc_set_attr_rx_tun() argument 85 struct mlx5_esw_flow_attr *esw_attr = flow->attr->esw_attr; in mlx5e_tc_set_attr_rx_tun() 125 flow_flag_set(flow, TUN_RX); in mlx5e_tc_set_attr_rx_tun() 126 flow->attr->tun_ip_version = ip_version; in mlx5e_tc_set_attr_rx_tun() 161 struct mlx5e_tc_flow *flow; in mlx5e_tc_encap_flows_add() local 182 list_for_each_entry(flow, flow_list, tmp_list) { in mlx5e_tc_encap_flows_add() 183 if (!mlx5e_is_offloaded_flow(flow) || !flow_flag_test(flow, SLOW)) in mlx5e_tc_encap_flows_add() 186 spec = &flow->attr->parse_attr->spec; in mlx5e_tc_encap_flows_add() 188 attr = mlx5e_tc_get_encap_attr(flow); in mlx5e_tc_encap_flows_add() 190 esw_attr->dests[flow->tmp_entry_index].pkt_reformat = e->pkt_reformat; in mlx5e_tc_encap_flows_add() [all …]
|
H A D | tc_tun_encap.h | 10 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 D | flow_table.c | 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() 99 kmem_cache_free(flow_cache, flow); in ovs_flow_alloc() 108 static void flow_free(struct sw_flow *flow) in flow_free() argument [all …]
|
/linux/drivers/net/ethernet/broadcom/bnxt/ |
H A D | bnxt_tc.c | 370 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 D | tid_rdma.c | 134 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/drivers/net/ethernet/mellanox/mlx5/core/ |
H A D | en_tc.c | 178 static void mlx5e_put_flow_tunnel_id(struct mlx5e_tc_flow *flow); 179 static void free_flow_post_acts(struct mlx5e_tc_flow *flow); 180 static void mlx5_free_flow_attr_actions(struct mlx5e_tc_flow *flow, 603 struct mlx5e_tc_flow *flow); 605 struct mlx5e_tc_flow *mlx5e_flow_get(struct mlx5e_tc_flow *flow) in mlx5e_flow_get() argument 607 if (!flow || !refcount_inc_not_zero(&flow->refcnt)) in mlx5e_flow_get() 609 return flow; in mlx5e_flow_get() 612 void mlx5e_flow_put(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow) in mlx5e_flow_put() argument 614 if (refcount_dec_and_test(&flow->refcnt)) { in mlx5e_flow_put() 615 mlx5e_tc_del_flow(priv, flow); in mlx5e_flow_put() [all …]
|
/linux/samples/bpf/ |
H A D | sockex2_kern.c | 62 struct flow_key_record *flow) in parse_ip() argument 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() argument 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() argument 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() [all …]
|
/linux/drivers/infiniband/hw/usnic/ |
H A D | usnic_fwd.c | 203 struct usnic_fwd_flow *flow; in usnic_fwd_alloc_flow() local 213 flow = kzalloc(sizeof(*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/Documentation/networking/ |
H A D | openvswitch.rst | 8 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/net/ipv4/netfilter/ |
H A D | ipt_rpfilter.c | 58 struct flowi4 flow; in rpfilter_mt() local 74 memset(&flow, 0, sizeof(flow)); in rpfilter_mt() 75 flow.flowi4_iif = LOOPBACK_IFINDEX; in rpfilter_mt() 76 flow.daddr = iph->saddr; in rpfilter_mt() 77 flow.saddr = rpfilter_get_saddr(iph->daddr); in rpfilter_mt() 78 flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0; in rpfilter_mt() 79 flow.flowi4_tos = inet_dscp_to_dsfield(ip4h_dscp(iph)); in rpfilter_mt() 80 flow.flowi4_scope = RT_SCOPE_UNIVERSE; in rpfilter_mt() 81 flow.flowi4_l3mdev = l3mdev_master_ifindex_rcu(xt_in(par)); in rpfilter_mt() 82 flow.flowi4_uid = sock_net_uid(xt_net(par), NULL); in rpfilter_mt() [all …]
|
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/ |
H A D | goto.c | 10 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/net/sched/ |
H A D | sch_fq_pie.c | 119 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 D | sch_hhf.c | 184 struct hh_flow_state *flow, *next; in seek_list() local 190 list_for_each_entry_safe(flow, next, head, flowchain) { in seek_list() 191 u32 prev = flow->hit_timestamp + q->hhf_evict_timeout; in seek_list() 197 if (list_is_last(&flow->flowchain, head)) in seek_list() 199 list_del(&flow->flowchain); in seek_list() 200 kfree(flow); in seek_list() 202 } else if (flow->hash_id == hash) { in seek_list() 203 return flow; in seek_list() 215 struct hh_flow_state *flow; in alloc_new_hh() local 220 list_for_each_entry(flow, head, flowchain) { in alloc_new_hh() [all …]
|
H A D | cls_flow.c | 67 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 …]
|