Hi Tomasz, On Sat, May 27, 2017 at 01:27:43PM +0200, Tomasz Kulasek wrote: > New API funtions implemented: > > rte_eth_bond_8023ad_slow_queue_enable(uint8_t port_id); > rte_eth_bond_8023ad_slow_queue_disable(uint8_t port_id); > > rte_eth_bond_8023ad_slow_queue_enable should be called before bonding port > start to enable new path. > > When this option is enabled all slaves must support flow director's > filtering by ethernet type and support one additional queue on slaves > tx/rx. > > Signed-off-by: Tomasz Kulasek <tomaszx.kula...@intel.com> [...] > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c > b/drivers/net/bonding/rte_eth_bond_pmd.c > index 82959ab..558682c 100644 > --- a/drivers/net/bonding/rte_eth_bond_pmd.c > +++ b/drivers/net/bonding/rte_eth_bond_pmd.c > @@ -59,6 +59,12 @@ > /* Table for statistics in mode 5 TLB */ > static uint64_t tlb_last_obytets[RTE_MAX_ETHPORTS]; > > +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ > +#define _htons(x) ((uint16_t)((((x) & 0x00ffU) << 8) | (((x) & 0xff00U) >> > 8))) > +#else > +#define _htons(x) (x) > +#endif > + [...] > static inline size_t > get_vlan_offset(struct ether_hdr *eth_hdr, uint16_t *proto) > { > @@ -133,6 +139,215 @@ > (subtype == SLOW_SUBTYPE_MARKER || subtype == > SLOW_SUBTYPE_LACP)); > } > > +/***************************************************************************** > + * Flow director's setup for mode 4 optimization > + */ > + > +static struct rte_flow_item_eth flow_item_eth_type_8023ad = { > + .dst.addr_bytes = { 0 }, > + .src.addr_bytes = { 0 }, > + .type = _htons(ETHER_TYPE_SLOW), > +};
Might I interest you in a more generic alternative [1]? [1] http://dpdk.org/ml/archives/dev/2017-May/066097.html -- Adrien Mazarguil 6WIND