Re: [lng-odp] [PATCHv1 1/2] linux-generic: classification: implement vlan id packet matching rule

2017-02-14 Thread Maxim Uvarov
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 
> 
> On Thu, Feb 9, 2017 at 3:02 AM, Balasubramanian Manoharan
>  wrote:
>> Add implementation for outer and inner vlan ID packet matching rule
>>
>> Signed-off-by: Balasubramanian Manoharan 
>> ---
>>  .../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
>>



Re: [lng-odp] [PATCHv1 1/2] linux-generic: classification: implement vlan id packet matching rule

2017-02-09 Thread Bill Fischofer
For this series:

Reviewed-and-tested-by: Bill Fischofer 

On Thu, Feb 9, 2017 at 3:02 AM, Balasubramanian Manoharan
 wrote:
> Add implementation for outer and inner vlan ID packet matching rule
>
> Signed-off-by: Balasubramanian Manoharan 
> ---
>  .../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
>


[lng-odp] [PATCHv1 1/2] linux-generic: classification: implement vlan id packet matching rule

2017-02-09 Thread Balasubramanian Manoharan
Add implementation for outer and inner vlan ID packet matching rule

Signed-off-by: Balasubramanian Manoharan 
---
 .../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