Lines Matching refs:stats
73 struct flow_stats *stats; in ovs_flow_stats_update() local
77 stats = rcu_dereference(flow->stats[node]); in ovs_flow_stats_update()
80 if (likely(stats)) { in ovs_flow_stats_update()
81 spin_lock(&stats->lock); in ovs_flow_stats_update()
86 stats = rcu_dereference(flow->stats[0]); /* Pre-allocated. */ in ovs_flow_stats_update()
87 spin_lock(&stats->lock); in ovs_flow_stats_update()
99 && likely(!rcu_access_pointer(flow->stats[node]))) { in ovs_flow_stats_update()
117 rcu_assign_pointer(flow->stats[node], in ovs_flow_stats_update()
126 stats->used = jiffies; in ovs_flow_stats_update()
127 stats->packet_count++; in ovs_flow_stats_update()
128 stats->byte_count += len; in ovs_flow_stats_update()
129 stats->tcp_flags |= tcp_flags; in ovs_flow_stats_update()
131 spin_unlock(&stats->lock); in ovs_flow_stats_update()
146 struct flow_stats *stats = rcu_dereference_ovsl(flow->stats[node]); in ovs_flow_stats_get() local
148 if (stats) { in ovs_flow_stats_get()
152 spin_lock_bh(&stats->lock); in ovs_flow_stats_get()
153 if (!*used || time_after(stats->used, *used)) in ovs_flow_stats_get()
154 *used = stats->used; in ovs_flow_stats_get()
155 *tcp_flags |= stats->tcp_flags; in ovs_flow_stats_get()
156 ovs_stats->n_packets += stats->packet_count; in ovs_flow_stats_get()
157 ovs_stats->n_bytes += stats->byte_count; in ovs_flow_stats_get()
158 spin_unlock_bh(&stats->lock); in ovs_flow_stats_get()
169 struct flow_stats *stats = ovsl_dereference(flow->stats[node]); in ovs_flow_stats_clear() local
171 if (stats) { in ovs_flow_stats_clear()
172 spin_lock_bh(&stats->lock); in ovs_flow_stats_clear()
173 stats->used = 0; in ovs_flow_stats_clear()
174 stats->packet_count = 0; in ovs_flow_stats_clear()
175 stats->byte_count = 0; in ovs_flow_stats_clear()
176 stats->tcp_flags = 0; in ovs_flow_stats_clear()
177 spin_unlock_bh(&stats->lock); in ovs_flow_stats_clear()