net/tap: fix protocol field for non-IP
authorVipin Varghese <vipin.varghese@intel.com>
Fri, 13 Apr 2018 05:58:47 +0000 (11:28 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 27 Apr 2018 14:54:55 +0000 (15:54 +0100)
When non IP packets are sent on TUN interface, the logic put Ipv6 as
protocol field in header. With the current patch, the check is modified
for ipv4, ipv6 and non ip.

Fixes: 204d026a3922 ("net/tap: support tun")

Suggested-by: Ophir Munk <ophirmu@mellanox.com>
Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/tap/rte_eth_tap.c

index cca5852..8bea266 100644 (file)
@@ -526,8 +526,8 @@ pmd_tx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
                 */
                char *buff_data = rte_pktmbuf_mtod(seg, void *);
                j = (*buff_data & 0xf0);
-               if (j & (0x40 | 0x60))
-                       pi.proto = (j == 0x40) ? 0x0008 : 0xdd86;
+               pi.proto = (j == 0x40) ? 0x0008 :
+                               (j == 0x60) ? 0xdd86 : 0x00;
 
                iovecs[0].iov_base = &pi;
                iovecs[0].iov_len = sizeof(pi);