liquidio: deprecate 1-bit flag indicating watchdog kernel thread is running
authorFelix Manlunas <felix.manlunas@cavium.com>
Thu, 26 Oct 2017 01:04:56 +0000 (18:04 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Oct 2017 13:13:19 +0000 (22:13 +0900)
Deprecate the 1-bit flag (bit 2 in the SLI_SCRATCH_1 Octeon register) that
indicates that the liquidio watchdog kernel thread is running for this NIC.
Reason is:  it is incompatible with the firmware's use for SLI_SCRATCH_1.

In lieu of checking that now-deprecated flag, check the value of
oct_dev->adapter_refcount to determine whether or not to create the
watchdog kernel thread.

Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: Raghu Vatsavayi <raghu.vatsavayi@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/liquidio/lio_main.c

index b4f753c5630866c792f452d431a68f50bfdb5d3f..accd038f3f34a45035f9075a720566feef4a0ac4 100644 (file)
@@ -1196,19 +1196,13 @@ liquidio_probe(struct pci_dev *pdev,
        }
 
        if (OCTEON_CN23XX_PF(oct_dev)) {
-               u64 scratch1;
                u8 bus, device, function;
 
-               scratch1 = octeon_read_csr64(oct_dev, CN23XX_SLI_SCRATCH1);
-               if (!(scratch1 & 4ULL)) {
-                       /* Bit 2 of SLI_SCRATCH_1 is a flag that indicates that
-                        * the lio watchdog kernel thread is running for this
-                        * NIC.  Each NIC gets one watchdog kernel thread.
+               if (atomic_read(oct_dev->adapter_refcount) == 1) {
+                       /* Each NIC gets one watchdog kernel thread.  The first
+                        * PF (of each NIC) that gets pci_driver->probe()'d
+                        * creates that thread.
                         */
-                       scratch1 |= 4ULL;
-                       octeon_write_csr64(oct_dev, CN23XX_SLI_SCRATCH1,
-                                          scratch1);
-
                        bus = pdev->bus->number;
                        device = PCI_SLOT(pdev->devfn);
                        function = PCI_FUNC(pdev->devfn);