[dpdk-dev] net/tap: fix the protocol field for non ip

Message ID 1523599127-19424-1-git-send-email-vipin.varghese@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Varghese, Vipin April 13, 2018, 5:58 a.m. UTC
  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: 5a3efcfffd06 ("net/tap: add tun support")
Cc: vipin.varghese@intel.com

Suggested-by: Ophir Munk <ophirmu@mellanox.com>
Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---
 drivers/net/tap/rte_eth_tap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Ferruh Yigit April 17, 2018, 5:45 p.m. UTC | #1
On 4/13/2018 6:58 AM, Vipin Varghese wrote:
> 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: 5a3efcfffd06 ("net/tap: add tun support")
> Cc: vipin.varghese@intel.com
> 
> Suggested-by: Ophir Munk <ophirmu@mellanox.com>
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>

Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
  
Ferruh Yigit April 17, 2018, 5:48 p.m. UTC | #2
On 4/17/2018 6:45 PM, Ferruh Yigit wrote:
> On 4/13/2018 6:58 AM, Vipin Varghese wrote:
>> 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: 5a3efcfffd06 ("net/tap: add tun support")

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

>> Cc: vipin.varghese@intel.com
>>
>> Suggested-by: Ophir Munk <ophirmu@mellanox.com>
>> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> 
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 915d937..66e026f 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -526,8 +526,8 @@  enum ioctl_mode {
 		 */
 		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);