From: Balasubramanian Manoharan <[email protected]> Fix for incorrect pmr_term_value update in odp_pmr_create_match() and odp_pmr_create_range() functions. Fixes https://bugs.linaro.org/show_bug.cgi?id=1381
Signed-off-by: Balasubramanian Manoharan <[email protected]> --- v2: Fixes checkpatch issue pointed by Bill platform/linux-generic/odp_classification.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 9fb034f..609faa9 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -438,6 +438,7 @@ odp_pmr_t odp_pmr_create_match(odp_pmr_term_e term, pmr->s.pmr_term_value[0].mask.mask = 0; memcpy(&pmr->s.pmr_term_value[0].mask.val, val, val_sz); memcpy(&pmr->s.pmr_term_value[0].mask.mask, mask, val_sz); + pmr->s.pmr_term_value[0].mask.val &= pmr->s.pmr_term_value[0].mask.mask; UNLOCK(&pmr->s.lock); return id; } @@ -460,7 +461,7 @@ odp_pmr_t odp_pmr_create_range(odp_pmr_term_e term, return ODP_PMR_INVAL; pmr->s.num_pmr = 1; - pmr->s.pmr_term_value[0].match_type = ODP_PMR_MASK; + pmr->s.pmr_term_value[0].match_type = ODP_PMR_RANGE; pmr->s.pmr_term_value[0].term = term; pmr->s.pmr_term_value[0].range.val1 = 0; pmr->s.pmr_term_value[0].range.val2 = 0; @@ -601,6 +602,8 @@ int odp_pmr_match_set_create(int num_terms, odp_pmr_match_t *terms, terms[i].mask.val, val_sz); memcpy(&pmr->s.pmr_term_value[i].mask.mask, terms[i].mask.mask, val_sz); + pmr->s.pmr_term_value[i].mask.val &= pmr->s + .pmr_term_value[i].mask.mask; } else { val_sz = terms[i].range.val_sz; if (val_sz > ODP_PMR_TERM_BYTES_MAX) -- 2.0.1.472.g6f92e5f _______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
