Yeah I'd definitely like to see a re-spin of this with a "relaxed increment" helper.
Acked-by: Ethan Jackson <et...@nicira.com> On Wed, Apr 1, 2015 at 9:21 AM, Daniele Di Proietto <diproiet...@vmware.com> wrote: > We used to count exact match cache hits and masked classifier hits > together. This commit splits the DP_STAT_HIT counter into two. > This change will be used by future commits. > > Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com> > --- > lib/dpif-netdev.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c > index a882e9c..8f267f6 100644 > --- a/lib/dpif-netdev.c > +++ b/lib/dpif-netdev.c > @@ -220,7 +220,8 @@ static struct dp_netdev_port *dp_netdev_lookup_port(const > struct dp_netdev *dp, > odp_port_t); > > enum dp_stat_type { > - DP_STAT_HIT, /* Packets that matched in the flow table. */ > + DP_STAT_EXACT_HIT, /* Packets that had an exact match (emc). */ > + DP_STAT_MASKED_HIT, /* Packets that matched in the flow table. */ > DP_STAT_MISS, /* Packets that did not match. */ > DP_STAT_LOST, /* Packets not passed up to the client. */ > DP_N_STATS > @@ -757,7 +758,9 @@ dpif_netdev_get_stats(const struct dpif *dpif, struct > dpif_dp_stats *stats) > unsigned long long n; > stats->n_flows += cmap_count(&pmd->flow_table); > > - atomic_read_relaxed(&pmd->stats.n[DP_STAT_HIT], &n); > + atomic_read_relaxed(&pmd->stats.n[DP_STAT_MASKED_HIT], &n); > + stats->n_hit += n; > + atomic_read_relaxed(&pmd->stats.n[DP_STAT_EXACT_HIT], &n); > stats->n_hit += n; > atomic_read_relaxed(&pmd->stats.n[DP_STAT_MISS], &n); > stats->n_missed += n; > @@ -2807,7 +2810,8 @@ packet_batch_init(struct packet_batch *batch, struct > dp_netdev_flow *flow) > > static inline void > packet_batch_execute(struct packet_batch *batch, > - struct dp_netdev_pmd_thread *pmd) > + struct dp_netdev_pmd_thread *pmd, > + enum dp_stat_type hit_type) > { > struct dp_netdev_actions *actions; > struct dp_netdev_flow *flow = batch->flow; > @@ -2820,7 +2824,7 @@ packet_batch_execute(struct packet_batch *batch, > dp_netdev_execute_actions(pmd, batch->packets, batch->packet_count, true, > actions->actions, actions->size); > > - dp_netdev_count_packet(pmd, DP_STAT_HIT, batch->packet_count); > + dp_netdev_count_packet(pmd, hit_type, batch->packet_count); > } > > static inline bool > @@ -2911,7 +2915,7 @@ emc_processing(struct dp_netdev_pmd_thread *pmd, struct > dp_packet **packets, > } > > for (i = 0; i < n_batches; i++) { > - packet_batch_execute(&batches[i], pmd); > + packet_batch_execute(&batches[i], pmd, DP_STAT_EXACT_HIT); > } > > return notfound_cnt; > @@ -3048,7 +3052,7 @@ fast_path_processing(struct dp_netdev_pmd_thread *pmd, > } > > for (i = 0; i < n_batches; i++) { > - packet_batch_execute(&batches[i], pmd); > + packet_batch_execute(&batches[i], pmd, DP_STAT_MASKED_HIT); > } > } > > -- > 2.1.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev