Lines Matching refs:flow
61 void ovs_flow_stats_update(struct sw_flow *flow, __be16 tcp_flags, in ovs_flow_stats_update() argument
68 stats = rcu_dereference(flow->stats[cpu]); in ovs_flow_stats_update()
74 if (cpu == 0 && unlikely(flow->stats_last_writer != cpu)) in ovs_flow_stats_update()
75 flow->stats_last_writer = cpu; in ovs_flow_stats_update()
77 stats = rcu_dereference(flow->stats[0]); /* Pre-allocated. */ in ovs_flow_stats_update()
83 if (unlikely(flow->stats_last_writer != cpu)) { in ovs_flow_stats_update()
89 if (likely(flow->stats_last_writer != -1) && in ovs_flow_stats_update()
90 likely(!rcu_access_pointer(flow->stats[cpu]))) { in ovs_flow_stats_update()
108 rcu_assign_pointer(flow->stats[cpu], in ovs_flow_stats_update()
111 flow->cpu_used_mask); in ovs_flow_stats_update()
115 flow->stats_last_writer = cpu; in ovs_flow_stats_update()
128 void ovs_flow_stats_get(const struct sw_flow *flow, in ovs_flow_stats_get() argument
140 cpu = cpumask_next(cpu, flow->cpu_used_mask)) { in ovs_flow_stats_get()
141 struct sw_flow_stats *stats = rcu_dereference_ovsl(flow->stats[cpu]); in ovs_flow_stats_get()
159 void ovs_flow_stats_clear(struct sw_flow *flow) in ovs_flow_stats_clear() argument
165 cpu = cpumask_next(cpu, flow->cpu_used_mask)) { in ovs_flow_stats_clear()
166 struct sw_flow_stats *stats = ovsl_dereference(flow->stats[cpu]); in ovs_flow_stats_clear()