net/bonding: use ptype flags for LACP Rx filtering
authorTomasz Kulasek <tomaszx.kulasek@intel.com>
Tue, 4 Jul 2017 16:46:25 +0000 (17:46 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 6 Jul 2017 13:00:57 +0000 (15:00 +0200)
Use packet types flags in mbuf to provide hint for filtering of LACP
control plane traffic from the data path.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
drivers/net/bonding/rte_eth_bond_pmd.c

index e097d01..a475c40 100644 (file)
@@ -180,6 +180,13 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
 
                /* Handle slow protocol packets. */
                while (j < num_rx_total) {
+
+                       /* If packet is not pure L2 and is known, skip it */
+                       if ((bufs[j]->packet_type & ~RTE_PTYPE_L2_ETHER) != 0) {
+                               j++;
+                               continue;
+                       }
+
                        if (j + 3 < num_rx_total)
                                rte_prefetch0(rte_pktmbuf_mtod(bufs[j + 3], void *));
 
@@ -187,7 +194,7 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
                        subtype = ((struct slow_protocol_frame *)hdr)->slow_protocol.subtype;
 
                        /* Remove packet from array if it is slow packet or slave is not
-                        * in collecting state or bondign interface is not in promiscus
+                        * in collecting state or bonding interface is not in promiscuous
                         * mode and packet address does not match. */
                        if (unlikely(is_lacp_packets(hdr->ether_type, subtype, bufs[j]->vlan_tci) ||
                                !collecting || (!promisc &&