mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	macvlan: forbid L2 fowarding offload for macvtap
L2 fowarding offload will bypass the rx handler of real device. This will make the packet could not be forwarded to macvtap device. Another problem is the dev_hard_start_xmit() called for macvtap does not have any synchronization. Fix this by forbidding L2 forwarding for macvtap. Cc: John Fastabend <john.r.fastabend@intel.com> Cc: Neil Horman <nhorman@tuxdriver.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Acked-by: John Fastabend <john.r.fastabend@intel.com.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									c4d7099867
								
							
						
					
					
						commit
						b13ba1b83f
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -338,6 +338,8 @@ static const struct header_ops macvlan_hard_header_ops = {
 | 
			
		|||
	.cache_update	= eth_header_cache_update,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct rtnl_link_ops macvlan_link_ops;
 | 
			
		||||
 | 
			
		||||
static int macvlan_open(struct net_device *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct macvlan_dev *vlan = netdev_priv(dev);
 | 
			
		||||
| 
						 | 
				
			
			@ -353,7 +355,8 @@ static int macvlan_open(struct net_device *dev)
 | 
			
		|||
		goto hash_add;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (lowerdev->features & NETIF_F_HW_L2FW_DOFFLOAD) {
 | 
			
		||||
	if (lowerdev->features & NETIF_F_HW_L2FW_DOFFLOAD &&
 | 
			
		||||
	    dev->rtnl_link_ops == &macvlan_link_ops) {
 | 
			
		||||
		vlan->fwd_priv =
 | 
			
		||||
		      lowerdev->netdev_ops->ndo_dfwd_add_station(lowerdev, dev);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue