that was merged,
Closing this thread.

Maxim.

On 02/10/17 05:22, Bill Fischofer wrote:
> For this series:
> 
> Reviewed-and-tested-by: Bill Fischofer <[email protected]>
> 
> On Thu, Feb 9, 2017 at 3:02 AM, Balasubramanian Manoharan
> <[email protected]> wrote:
>> Add implementation for outer and inner vlan ID packet matching rule
>>
>> Signed-off-by: Balasubramanian Manoharan <[email protected]>
>> ---
>>  .../include/odp_classification_inlines.h           | 41 
>> +++++++++++++++++++---
>>  1 file changed, 36 insertions(+), 5 deletions(-)
>>
>> diff --git a/platform/linux-generic/include/odp_classification_inlines.h 
>> b/platform/linux-generic/include/odp_classification_inlines.h
>> index e6f9be9..c9517d6 100644
>> --- a/platform/linux-generic/include/odp_classification_inlines.h
>> +++ b/platform/linux-generic/include/odp_classification_inlines.h
>> @@ -231,11 +231,26 @@ static inline int verify_pmr_ipv6_daddr(const uint8_t 
>> *pkt_addr,
>>         return 0;
>>  }
>>
>> -static inline int verify_pmr_vlan_id_0(const uint8_t *pkt_addr ODP_UNUSED,
>> -                                      odp_packet_hdr_t *pkt_hdr ODP_UNUSED,
>> -                                      pmr_term_value_t *term_value 
>> ODP_UNUSED)
>> +static inline int verify_pmr_vlan_id_0(const uint8_t *pkt_addr,
>> +                                      odp_packet_hdr_t *pkt_hdr,
>> +                                      pmr_term_value_t *term_value)
>>  {
>> -       ODP_UNIMPLEMENTED();
>> +       const _odp_ethhdr_t *eth;
>> +       const _odp_vlanhdr_t *vlan;
>> +       uint16_t tci;
>> +       uint16_t vlan_id;
>> +
>> +       if (!pkt_hdr->p.input_flags.vlan_qinq)
>> +               return 0;
>> +
>> +       eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
>> +       vlan = (const _odp_vlanhdr_t *)(eth + 1);
>> +       tci = odp_be_to_cpu_16(vlan->tci);
>> +       vlan_id = tci & 0x0fff;
>> +
>> +       if (term_value->match.value == (vlan_id & term_value->match.mask))
>> +               return 1;
>> +
>>         return 0;
>>  }
>>
>> @@ -243,7 +258,23 @@ static inline int verify_pmr_vlan_id_x(const uint8_t 
>> *pkt_addr ODP_UNUSED,
>>                                        odp_packet_hdr_t *pkt_hdr ODP_UNUSED,
>>                                        pmr_term_value_t *term_value 
>> ODP_UNUSED)
>>  {
>> -       ODP_UNIMPLEMENTED();
>> +       const _odp_ethhdr_t *eth;
>> +       const _odp_vlanhdr_t *vlan;
>> +       uint16_t tci;
>> +       uint16_t vlan_id;
>> +
>> +       if (!pkt_hdr->p.input_flags.vlan_qinq)
>> +               return 0;
>> +
>> +       eth = (const _odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset);
>> +       vlan = (const _odp_vlanhdr_t *)(eth + 1);
>> +       vlan++;
>> +       tci = odp_be_to_cpu_16(vlan->tci);
>> +       vlan_id = tci & 0x0fff;
>> +
>> +       if (term_value->match.value == (vlan_id & term_value->match.mask))
>> +               return 1;
>> +
>>         return 0;
>>  }
>>
>> --
>> 1.9.1
>>

Reply via email to