Merge branch 'sh-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal...
[pandora-kernel.git] / drivers / net / bna / bnad.c
index 8e6ceab..7d25a97 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/if_vlan.h>
 #include <linux/if_ether.h>
 #include <linux/ip.h>
+#include <linux/prefetch.h>
 
 #include "bnad.h"
 #include "bna.h"
@@ -501,7 +502,7 @@ bnad_poll_cq(struct bnad *bnad, struct bna_ccb *ccb, int budget)
 
                skb_put(skb, ntohs(cmpl->length));
                if (likely
-                   (bnad->rx_csum &&
+                   ((bnad->netdev->features & NETIF_F_RXCSUM) &&
                     (((flags & BNA_CQ_EF_IPV4) &&
                      (flags & BNA_CQ_EF_L3_CKSUM_OK)) ||
                      (flags & BNA_CQ_EF_IPV6)) &&
@@ -2902,23 +2903,20 @@ bnad_netdev_init(struct bnad *bnad, bool using_dac)
 {
        struct net_device *netdev = bnad->netdev;
 
-       netdev->features |= NETIF_F_IPV6_CSUM;
-       netdev->features |= NETIF_F_TSO;
-       netdev->features |= NETIF_F_TSO6;
+       netdev->hw_features = NETIF_F_SG | NETIF_F_RXCSUM |
+               NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
+               NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_VLAN_TX;
 
-       netdev->features |= NETIF_F_GRO;
-       pr_warn("bna: GRO enabled, using kernel stack GRO\n");
+       netdev->vlan_features = NETIF_F_SG | NETIF_F_HIGHDMA |
+               NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
+               NETIF_F_TSO | NETIF_F_TSO6;
 
-       netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
+       netdev->features |= netdev->hw_features |
+               NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER;
 
        if (using_dac)
                netdev->features |= NETIF_F_HIGHDMA;
 
-       netdev->features |=
-               NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX |
-               NETIF_F_HW_VLAN_FILTER;
-
-       netdev->vlan_features = netdev->features;
        netdev->mem_start = bnad->mmio_start;
        netdev->mem_end = bnad->mmio_start + bnad->mmio_len - 1;
 
@@ -2969,7 +2967,6 @@ bnad_init(struct bnad *bnad,
 
        bnad->txq_depth = BNAD_TXQ_DEPTH;
        bnad->rxq_depth = BNAD_RXQ_DEPTH;
-       bnad->rx_csum = true;
 
        bnad->tx_coalescing_timeo = BFI_TX_COALESCING_TIMEO;
        bnad->rx_coalescing_timeo = BFI_RX_COALESCING_TIMEO;