ipv4: remove unused macro (FIB_RES_RESET) from ip_fib.h.
[deliverable/linux.git] / net / core / dev.c
index cfc614ec3719c2380eb10f571b4f57a6e85730ff..81442957c5c2f06669f7c848e21b2b3fdf42ba80 100644 (file)
@@ -1336,7 +1336,12 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
 {
        struct packet_type *ptype;
 
+#ifdef CONFIG_NET_CLS_ACT
+       if (!(skb->tstamp.tv64 && (G_TC_FROM(skb->tc_verd) & AT_INGRESS)))
+               net_timestamp(skb);
+#else
        net_timestamp(skb);
+#endif
 
        rcu_read_lock();
        list_for_each_entry_rcu(ptype, &ptype_all, list) {
@@ -1730,11 +1735,12 @@ u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb)
 {
        u32 hash;
 
-       if (skb_rx_queue_recorded(skb)) {
-               hash = skb_get_rx_queue(skb);
-       } else if (skb->sk && skb->sk->sk_hash) {
+       if (skb_rx_queue_recorded(skb))
+               return skb_get_rx_queue(skb) % dev->real_num_tx_queues;
+
+       if (skb->sk && skb->sk->sk_hash)
                hash = skb->sk->sk_hash;
-       else
+       else
                hash = skb->protocol;
 
        hash = jhash_1word(hash, skb_tx_hashrnd);
@@ -2373,18 +2379,13 @@ void *skb_gro_header(struct sk_buff *skb, unsigned int hlen)
        unsigned int offset = skb_gro_offset(skb);
 
        hlen += offset;
-       if (hlen <= skb_headlen(skb))
-               return skb->data + offset;
-
-       if (unlikely(!skb_shinfo(skb)->nr_frags ||
-                    skb_shinfo(skb)->frags[0].size <=
-                    hlen - skb_headlen(skb) ||
+       if (unlikely(skb_headlen(skb) ||
+                    skb_shinfo(skb)->frags[0].size < hlen ||
                     PageHighMem(skb_shinfo(skb)->frags[0].page)))
                return pskb_may_pull(skb, hlen) ? skb->data + offset : NULL;
 
        return page_address(skb_shinfo(skb)->frags[0].page) +
-              skb_shinfo(skb)->frags[0].page_offset +
-              offset - skb_headlen(skb);
+              skb_shinfo(skb)->frags[0].page_offset + offset;
 }
 EXPORT_SYMBOL(skb_gro_header);
 
@@ -4391,7 +4392,7 @@ int register_netdevice(struct net_device *dev)
        dev->iflink = -1;
 
 #ifdef CONFIG_COMPAT_NET_DEV_OPS
-       /* Netdevice_ops API compatiability support.
+       /* Netdevice_ops API compatibility support.
         * This is temporary until all network devices are converted.
         */
        if (dev->netdev_ops) {
@@ -4402,7 +4403,7 @@ int register_netdevice(struct net_device *dev)
                        dev->name, netdev_drivername(dev, drivername, 64));
 
                /* This works only because net_device_ops and the
-                  compatiablity structure are the same. */
+                  compatibility structure are the same. */
                dev->netdev_ops = (void *) &(dev->init);
        }
 #endif
This page took 0.037234 seconds and 5 git commands to generate.