diff options
Diffstat (limited to 'net/mpls/af_mpls.c')
| -rw-r--r-- | net/mpls/af_mpls.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c index 0b80a7140cc4..5c161e7759b5 100644 --- a/net/mpls/af_mpls.c +++ b/net/mpls/af_mpls.c @@ -91,7 +91,7 @@ bool mpls_pkt_too_big(const struct sk_buff *skb, unsigned int mtu)  	if (skb->len <= mtu)  		return false; -	if (skb_is_gso(skb) && skb_gso_network_seglen(skb) <= mtu) +	if (skb_is_gso(skb) && skb_gso_validate_mtu(skb, mtu))  		return false;  	return true; @@ -1009,9 +1009,12 @@ static int mpls_dev_notify(struct notifier_block *this, unsigned long event,  	unsigned int flags;  	if (event == NETDEV_REGISTER) { -		/* For now just support ethernet devices */ -		if ((dev->type == ARPHRD_ETHER) || -		    (dev->type == ARPHRD_LOOPBACK)) { +		/* For now just support Ethernet, IPGRE, SIT and IPIP devices */ +		if (dev->type == ARPHRD_ETHER || +		    dev->type == ARPHRD_LOOPBACK || +		    dev->type == ARPHRD_IPGRE || +		    dev->type == ARPHRD_SIT || +		    dev->type == ARPHRD_TUNNEL) {  			mdev = mpls_add_dev(dev);  			if (IS_ERR(mdev))  				return notifier_from_errno(PTR_ERR(mdev));  |