i40evf: fix MAC deletion when stopping
[dpdk.git] / examples / tep_termination / vxlan_setup.c
index a1cd218..51ad133 100644 (file)
@@ -218,13 +218,20 @@ vxlan_port_init(uint8_t port, struct rte_mempool *mbuf_pool)
 static int
 vxlan_rx_process(struct rte_mbuf *pkt)
 {
-       return decapsulation(pkt);
+       int ret = 0;
+
+       if (rx_decap)
+               ret = decapsulation(pkt);
+
+       return ret;
 }
 
 static void
 vxlan_tx_process(uint8_t queue_id, struct rte_mbuf *pkt)
 {
-       encapsulation(pkt, queue_id);
+       if (tx_encap)
+               encapsulation(pkt, queue_id);
+
        return;
 }
 
@@ -427,6 +434,16 @@ vxlan_rx_pkts(struct virtio_net *dev, struct rte_mbuf **pkts_burst,
        struct rte_mbuf *pkts_valid[rx_count];
 
        for (i = 0; i < rx_count; i++) {
+               if (enable_stats) {
+                       rte_atomic64_add(
+                               &dev_statistics[dev->device_fh].rx_bad_ip_csum,
+                               (pkts_burst[i]->ol_flags & PKT_RX_IP_CKSUM_BAD)
+                               != 0);
+                       rte_atomic64_add(
+                               &dev_statistics[dev->device_fh].rx_bad_ip_csum,
+                               (pkts_burst[i]->ol_flags & PKT_RX_L4_CKSUM_BAD)
+                               != 0);
+               }
                ret = vxlan_rx_process(pkts_burst[i]);
                if (unlikely(ret < 0))
                        continue;