Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / drivers / net / qlge / qlge_main.c
index 5bb3119..930ae45 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/delay.h>
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
+#include <linux/prefetch.h>
 #include <net/ip6_checksum.h>
 
 #include "qlge.h"
@@ -1571,7 +1572,7 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev,
        skb->protocol = eth_type_trans(skb, ndev);
        skb_checksum_none_assert(skb);
 
-       if (qdev->rx_csum &&
+       if ((ndev->features & NETIF_F_RXCSUM) &&
                !(ib_mac_rsp->flags1 & IB_MAC_CSUM_ERR_MASK)) {
                /* TCP frame. */
                if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_T) {
@@ -1684,7 +1685,7 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
        /* If rx checksum is on, and there are no
         * csum or frame errors.
         */
-       if (qdev->rx_csum &&
+       if ((ndev->features & NETIF_F_RXCSUM) &&
                !(ib_mac_rsp->flags1 & IB_MAC_CSUM_ERR_MASK)) {
                /* TCP frame. */
                if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_T) {
@@ -2004,7 +2005,7 @@ static void ql_process_mac_split_rx_intr(struct ql_adapter *qdev,
        /* If rx checksum is on, and there are no
         * csum or frame errors.
         */
-       if (qdev->rx_csum &&
+       if ((ndev->features & NETIF_F_RXCSUM) &&
                !(ib_mac_rsp->flags1 & IB_MAC_CSUM_ERR_MASK)) {
                /* TCP frame. */
                if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_T) {
@@ -4412,12 +4413,12 @@ error:
        rtnl_unlock();
 }
 
-static struct nic_operations qla8012_nic_ops = {
+static const struct nic_operations qla8012_nic_ops = {
        .get_flash              = ql_get_8012_flash_params,
        .port_initialize        = ql_8012_port_initialize,
 };
 
-static struct nic_operations qla8000_nic_ops = {
+static const struct nic_operations qla8000_nic_ops = {
        .get_flash              = ql_get_8000_flash_params,
        .port_initialize        = ql_8000_port_initialize,
 };
@@ -4621,7 +4622,6 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
        /*
         * Set up the operating parameters.
         */
-       qdev->rx_csum = 1;
        qdev->workqueue = create_singlethread_workqueue(ndev->name);
        INIT_DELAYED_WORK(&qdev->asic_reset_work, ql_asic_reset_work);
        INIT_DELAYED_WORK(&qdev->mpi_reset_work, ql_mpi_reset_work);
@@ -4695,15 +4695,11 @@ static int __devinit qlge_probe(struct pci_dev *pdev,
 
        qdev = netdev_priv(ndev);
        SET_NETDEV_DEV(ndev, &pdev->dev);
-       ndev->features = (0
-                         | NETIF_F_IP_CSUM
-                         | NETIF_F_SG
-                         | NETIF_F_TSO
-                         | NETIF_F_TSO6
-                         | NETIF_F_TSO_ECN
-                         | NETIF_F_HW_VLAN_TX
-                         | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER);
-       ndev->features |= NETIF_F_GRO;
+       ndev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM |
+               NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN |
+               NETIF_F_HW_VLAN_TX | NETIF_F_RXCSUM;
+       ndev->features = ndev->hw_features |
+               NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER;
 
        if (test_bit(QL_DMA64, &qdev->flags))
                ndev->features |= NETIF_F_HIGHDMA;