[dpdk-dev] [PATCH v6 5/9] librte_ether:add data structures of VxLAN filter

Thomas Monjalon thomas.monjalon at 6wind.com
Wed Oct 22 11:31:06 CEST 2014


2014-10-22 02:25, Liu, Jijiang:
> From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com]
> > 2014-10-21 16:46, Jijiang Liu:
> > > +#define RTE_TUNNEL_FILTER_IMAC_IVLAN (ETH_TUNNEL_FILTER_IMAC | \
> > > +					ETH_TUNNEL_FILTER_IVLAN)
> > > +#define RTE_TUNNEL_FILTER_IMAC_IVLAN_TENID (ETH_TUNNEL_FILTER_IMAC | \
> > > +					ETH_TUNNEL_FILTER_IVLAN | \
> > > +					ETH_TUNNEL_FILTER_TENID)
> > > +#define RTE_TUNNEL_FILTER_IMAC_TENID (ETH_TUNNEL_FILTER_IMAC | \
> > > +					ETH_TUNNEL_FILTER_TENID)
> > > +#define RTE_TUNNEL_FILTER_OMAC_TENID_IMAC (ETH_TUNNEL_FILTER_OMAC | \
> > > +					ETH_TUNNEL_FILTER_TENID | \
> > > +					ETH_TUNNEL_FILTER_IMAC)
> > 
> > I thought you agree that these definitions are useless?
> 
> Sorry, this MAY be  some misunderstanding, I don't think these definition
> are useless. I just thought change "uint16_t filter_type" is better than
> define "enum filter_type".
> 
> Let me explain here again.
> The filter condition are: 
> 1.  inner MAC + inner VLAN
> 2. inner MAC + IVLAN + tenant ID
> ..
> 5. outer MAC + tenant ID + inner MAC
> 
> For each filter condition, we need to check if the mandatory parameters are
> valid by checking corresponding bit MASK.

Checking bit mask doesn't imply to define all combinations of bit masks.
There's probably something obvious that one of us is missing.

> An pseudo code example:
> 
>        Switch (filter_type)
>        Case 1:  //inner MAC + inner VLAN
> 	If (filter_type & ETH_TUNNEL_FILTER_IMAC )
>                             if   (IMAC==NULL)
>                                       return -1;
> 
>        case 5: // outer MAC + tenant ID + inner MAC
>             If (filter_type & ETH_TUNNEL_FILTER_IMAC )
>                             if   (IMAC==NULL)
>                                       return -1;
>           
>              If (filter_type & ETH_TUNNEL_FILTER_OMAC )
>                             if   (IMAC==NULL)
>                                       return -1;
>    ......



More information about the dev mailing list