Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[firefly-linux-kernel-4.4.55.git] / drivers / net / cxgb4vf / cxgb4vf_main.c
index 6bf464afa90ed1a60cf06bb91f31964cf82a7e5d..3c403f895750d90638d11d51ee34e0b52c22ef10 100644 (file)
@@ -280,9 +280,7 @@ static void name_msix_vecs(struct adapter *adapter)
                const struct port_info *pi = netdev_priv(dev);
                int qs, msi;
 
-               for (qs = 0, msi = MSIX_NIQFLINT;
-                    qs < pi->nqsets;
-                    qs++, msi++) {
+               for (qs = 0, msi = MSIX_IQFLINT; qs < pi->nqsets; qs++, msi++) {
                        snprintf(adapter->msix_info[msi].desc, namelen,
                                 "%s-%d", dev->name, qs);
                        adapter->msix_info[msi].desc[namelen] = 0;
@@ -309,7 +307,7 @@ static int request_msix_queue_irqs(struct adapter *adapter)
        /*
         * Ethernet queues.
         */
-       msi = MSIX_NIQFLINT;
+       msi = MSIX_IQFLINT;
        for_each_ethrxq(s, rxq) {
                err = request_irq(adapter->msix_info[msi].vec,
                                  t4vf_sge_intr_msix, 0,
@@ -337,7 +335,7 @@ static void free_msix_queue_irqs(struct adapter *adapter)
        int rxq, msi;
 
        free_irq(adapter->msix_info[MSIX_FW].vec, &s->fw_evtq);
-       msi = MSIX_NIQFLINT;
+       msi = MSIX_IQFLINT;
        for_each_ethrxq(s, rxq)
                free_irq(adapter->msix_info[msi++].vec,
                         &s->ethrxq[rxq].rspq);
@@ -527,7 +525,7 @@ static int setup_sge_queues(struct adapter *adapter)
         * brought up at which point lots of things get nailed down
         * permanently ...
         */
-       msix = MSIX_NIQFLINT;
+       msix = MSIX_IQFLINT;
        for_each_port(adapter, pidx) {
                struct net_device *dev = adapter->port[pidx];
                struct port_info *pi = netdev_priv(dev);
@@ -1365,6 +1363,8 @@ struct queue_port_stats {
        u64 rx_csum;
        u64 vlan_ex;
        u64 vlan_ins;
+       u64 lro_pkts;
+       u64 lro_merged;
 };
 
 /*
@@ -1402,6 +1402,8 @@ static const char stats_strings[][ETH_GSTRING_LEN] = {
        "RxCsumGood        ",
        "VLANextractions   ",
        "VLANinsertions    ",
+       "GROPackets        ",
+       "GROMerged         ",
 };
 
 /*
@@ -1451,6 +1453,8 @@ static void collect_sge_port_stats(const struct adapter *adapter,
                stats->rx_csum += rxq->stats.rx_cso;
                stats->vlan_ex += rxq->stats.vlan_ex;
                stats->vlan_ins += txq->vlan_ins;
+               stats->lro_pkts += rxq->stats.lro_pkts;
+               stats->lro_merged += rxq->stats.lro_merged;
        }
 }
 
@@ -1546,15 +1550,20 @@ static void cxgb4vf_get_wol(struct net_device *dev,
        memset(&wol->sopass, 0, sizeof(wol->sopass));
 }
 
+/*
+ * TCP Segmentation Offload flags which we support.
+ */
+#define TSO_FLAGS (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
+
 /*
  * Set TCP Segmentation Offloading feature capabilities.
  */
 static int cxgb4vf_set_tso(struct net_device *dev, u32 tso)
 {
        if (tso)
-               dev->features |= NETIF_F_TSO | NETIF_F_TSO6;
+               dev->features |= TSO_FLAGS;
        else
-               dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO6);
+               dev->features &= ~TSO_FLAGS;
        return 0;
 }
 
@@ -2045,7 +2054,7 @@ static int __devinit setup_debugfs(struct adapter *adapter)
  * Tear down the /sys/kernel/debug/cxgb4vf sub-nodes created above.  We leave
  * it to our caller to tear down the directory (debugfs_root).
  */
-static void __devexit cleanup_debugfs(struct adapter *adapter)
+static void cleanup_debugfs(struct adapter *adapter)
 {
        BUG_ON(adapter->debugfs_root == NULL);
 
@@ -2063,7 +2072,7 @@ static void __devexit cleanup_debugfs(struct adapter *adapter)
  * adapter parameters we're going to be using and initialize basic adapter
  * hardware support.
  */
-static int adap_init0(struct adapter *adapter)
+static int __devinit adap_init0(struct adapter *adapter)
 {
        struct vf_resources *vfres = &adapter->params.vfres;
        struct sge_params *sge_params = &adapter->params.sge;
@@ -2494,7 +2503,6 @@ static int __devinit cxgb4vf_pci_probe(struct pci_dev *pdev,
                version_printed = 1;
        }
 
-
        /*
         * Initialize generic PCI device state.
         */
@@ -2631,7 +2639,7 @@ static int __devinit cxgb4vf_pci_probe(struct pci_dev *pdev,
                netif_carrier_off(netdev);
                netdev->irq = pdev->irq;
 
-               netdev->features = (NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 |
+               netdev->features = (NETIF_F_SG | TSO_FLAGS |
                                    NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
                                    NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX |
                                    NETIF_F_GRO);