kernel: 5.10: simplify logic in packet mangling patch
I had quite a hard time to understand what the change to net/core/dev.c is supposed to do. Simplify the change by returning NETDEV_TX_OK in case a eth_mangle_tx callback was set but returned NULL instead of setting the return value in the else branch. Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
		| @@ -105,33 +105,18 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	help |  	help | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -3638,11 +3638,21 @@ static int xmit_one(struct sk_buff *skb, | @@ -3638,6 +3638,11 @@ static int xmit_one(struct sk_buff *skb, | ||||||
|  	if (dev_nit_active(dev)) |  	if (dev_nit_active(dev)) | ||||||
|  		dev_queue_xmit_nit(skb, dev); |  		dev_queue_xmit_nit(skb, dev); | ||||||
|   |   | ||||||
| -	len = skb->len; |  | ||||||
| -	PRANDOM_ADD_NOISE(skb, dev, txq, len + jiffies); |  | ||||||
| -	trace_net_dev_start_xmit(skb, dev); |  | ||||||
| -	rc = netdev_start_xmit(skb, dev, txq, more); |  | ||||||
| -	trace_net_dev_xmit(skb, rc, dev, len); |  | ||||||
| +#ifdef CONFIG_ETHERNET_PACKET_MANGLE | +#ifdef CONFIG_ETHERNET_PACKET_MANGLE | ||||||
| +	if (!dev->eth_mangle_tx || | +	if (dev->eth_mangle_tx && !(skb = dev->eth_mangle_tx(dev, skb))) | ||||||
| +	    (skb = dev->eth_mangle_tx(dev, skb)) != NULL) | +		return NETDEV_TX_OK; | ||||||
| +#else |  | ||||||
| +	if (1) |  | ||||||
| +#endif | +#endif | ||||||
| +	{ | + | ||||||
| +		len = skb->len; |  	len = skb->len; | ||||||
| +		PRANDOM_ADD_NOISE(skb, dev, txq, len + jiffies); |  	PRANDOM_ADD_NOISE(skb, dev, txq, len + jiffies); | ||||||
| +		trace_net_dev_start_xmit(skb, dev); |  	trace_net_dev_start_xmit(skb, dev); | ||||||
| +		rc = netdev_start_xmit(skb, dev, txq, more); |  | ||||||
| +		trace_net_dev_xmit(skb, rc, dev, len); |  | ||||||
| +	} else { |  | ||||||
| +		rc = NETDEV_TX_OK; |  | ||||||
| +	} |  | ||||||
|   |  | ||||||
|  	return rc; |  | ||||||
|  } |  | ||||||
| --- a/net/core/skbuff.c | --- a/net/core/skbuff.c | ||||||
| +++ b/net/core/skbuff.c | +++ b/net/core/skbuff.c | ||||||
| @@ -60,6 +60,7 @@ | @@ -60,6 +60,7 @@ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mathias Kresin
					Mathias Kresin