mirror of
https://github.com/openvswitch/ovs
synced 2025-10-25 15:07:05 +00:00
lib: Inline functions used in classifier_lookup.
This helps about 1% in TCP_CRR performance test. However, this also helps by clearly showing the classifier_lookup() cost in perf reports as one item. This also cleans up the flow/match APIs from functionality only used by the classifier, making is more straightforward to evolve them later. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
33
lib/match.c
33
lib/match.c
@@ -1244,13 +1244,6 @@ minimatch_equal(const struct minimatch *a, const struct minimatch *b)
|
||||
&& minimask_equal(&a->mask, &b->mask));
|
||||
}
|
||||
|
||||
/* Returns a hash value for 'match', given 'basis'. */
|
||||
uint32_t
|
||||
minimatch_hash(const struct minimatch *match, uint32_t basis)
|
||||
{
|
||||
return miniflow_hash(&match->flow, minimask_hash(&match->mask, basis));
|
||||
}
|
||||
|
||||
/* Returns true if 'target' satisifies 'match', that is, if each bit for which
|
||||
* 'match' specifies a particular value has the correct value in 'target'.
|
||||
*
|
||||
@@ -1275,32 +1268,6 @@ minimatch_matches_flow(const struct minimatch *match,
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Returns a hash value for the bits of range [start, end) in 'minimatch',
|
||||
* given 'basis'.
|
||||
*
|
||||
* The hash values returned by this function are the same as those returned by
|
||||
* flow_hash_in_minimask_range(), only the form of the arguments differ. */
|
||||
uint32_t
|
||||
minimatch_hash_range(const struct minimatch *match, uint8_t start, uint8_t end,
|
||||
uint32_t *basis)
|
||||
{
|
||||
unsigned int offset;
|
||||
const uint32_t *p, *q;
|
||||
uint32_t hash = *basis;
|
||||
int n, i;
|
||||
|
||||
n = count_1bits(miniflow_get_map_in_range(&match->mask.masks, start, end,
|
||||
&offset));
|
||||
q = match->mask.masks.values + offset;
|
||||
p = match->flow.values + offset;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
hash = mhash_add(hash, p[i] & q[i]);
|
||||
}
|
||||
*basis = hash; /* Allow continuation from the unfinished value. */
|
||||
return mhash_finish(hash, (offset + n) * 4);
|
||||
}
|
||||
|
||||
/* Appends a string representation of 'match' to 's'. If 'priority' is
|
||||
* different from OFP_DEFAULT_PRIORITY, includes it in 's'. */
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user