Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[sfrench/cifs-2.6.git] / drivers / net / ethernet / intel / igb / igb_main.c
index 1d71ec360b1c8203e9b4f815ee561d3e4c141475..39f33afc479c1abffc9d4f1546c077d364bd26c4 100644 (file)
@@ -2480,7 +2480,7 @@ static int igb_set_features(struct net_device *netdev,
        else
                igb_reset(adapter);
 
-       return 0;
+       return 1;
 }
 
 static int igb_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
@@ -3452,6 +3452,9 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                        break;
                }
        }
+
+       dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NEVER_SKIP);
+
        pm_runtime_put_noidle(&pdev->dev);
        return 0;
 
@@ -6026,7 +6029,7 @@ static int igb_tx_map(struct igb_ring *tx_ring,
        /* Make sure there is space in the ring for the next send. */
        igb_maybe_stop_tx(tx_ring, DESC_NEEDED);
 
-       if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) {
+       if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {
                writel(i, tx_ring->tail);
        }
        return 0;
@@ -8043,7 +8046,7 @@ static struct sk_buff *igb_construct_skb(struct igb_ring *rx_ring,
        /* Determine available headroom for copy */
        headlen = size;
        if (headlen > IGB_RX_HDR_LEN)
-               headlen = eth_get_headlen(va, IGB_RX_HDR_LEN);
+               headlen = eth_get_headlen(skb->dev, va, IGB_RX_HDR_LEN);
 
        /* align pull length to size of long to optimize memcpy performance */
        memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long)));