|
@@ -2089,25 +2089,6 @@ static int dev_gso_segment(struct sk_buff *skb, netdev_features_t features)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Try to orphan skb early, right before transmission by the device.
|
|
|
- * We cannot orphan skb if tx timestamp is requested or the sk-reference
|
|
|
- * is needed on driver level for other reasons, e.g. see net/can/raw.c
|
|
|
- */
|
|
|
-static inline void skb_orphan_try(struct sk_buff *skb)
|
|
|
-{
|
|
|
- struct sock *sk = skb->sk;
|
|
|
-
|
|
|
- if (sk && !skb_shinfo(skb)->tx_flags) {
|
|
|
- /* skb_tx_hash() wont be able to get sk.
|
|
|
- * We copy sk_hash into skb->rxhash
|
|
|
- */
|
|
|
- if (!skb->rxhash)
|
|
|
- skb->rxhash = sk->sk_hash;
|
|
|
- skb_orphan(skb);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static bool can_checksum_protocol(netdev_features_t features, __be16 protocol)
|
|
|
{
|
|
|
return ((features & NETIF_F_GEN_CSUM) ||
|
|
@@ -2193,8 +2174,6 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
|
|
|
if (!list_empty(&ptype_all))
|
|
|
dev_queue_xmit_nit(skb, dev);
|
|
|
|
|
|
- skb_orphan_try(skb);
|
|
|
-
|
|
|
features = netif_skb_features(skb);
|
|
|
|
|
|
if (vlan_tx_tag_present(skb) &&
|
|
@@ -2304,7 +2283,7 @@ u16 __skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb,
|
|
|
if (skb->sk && skb->sk->sk_hash)
|
|
|
hash = skb->sk->sk_hash;
|
|
|
else
|
|
|
- hash = (__force u16) skb->protocol ^ skb->rxhash;
|
|
|
+ hash = (__force u16) skb->protocol;
|
|
|
hash = jhash_1word(hash, hashrnd);
|
|
|
|
|
|
return (u16) (((u64) hash * qcount) >> 32) + qoffset;
|