sfc: Clean up and correct comments on efx_monitor()
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 20 Sep 2010 08:44:10 +0000 (08:44 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Sep 2010 21:58:01 +0000 (14:58 -0700)
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/sfc/efx.c

index 4a1c93f165e63b337c811440bc67d0c51ba5c2d4..5be71f49a205a773164a36f9bab8f42804d84228 100644 (file)
@@ -124,8 +124,9 @@ MODULE_PARM_DESC(separate_tx_channels,
 static int napi_weight = 64;
 
 /* This is the time (in jiffies) between invocations of the hardware
- * monitor, which checks for known hardware bugs and resets the
- * hardware and driver as necessary.
+ * monitor.  On Falcon-based NICs, this will:
+ * - Check the on-board hardware monitor;
+ * - Poll the link state and reconfigure the hardware as necessary.
  */
 unsigned int efx_monitor_interval = 1 * HZ;
 
@@ -1545,8 +1546,7 @@ void efx_init_irq_moderation(struct efx_nic *efx, int tx_usecs, int rx_usecs,
  *
  **************************************************************************/
 
-/* Run periodically off the general workqueue. Serialised against
- * efx_reconfigure_port via the mac_lock */
+/* Run periodically off the general workqueue */
 static void efx_monitor(struct work_struct *data)
 {
        struct efx_nic *efx = container_of(data, struct efx_nic,
@@ -1559,16 +1559,13 @@ static void efx_monitor(struct work_struct *data)
 
        /* If the mac_lock is already held then it is likely a port
         * reconfiguration is already in place, which will likely do
-        * most of the work of check_hw() anyway. */
-       if (!mutex_trylock(&efx->mac_lock))
-               goto out_requeue;
-       if (!efx->port_enabled)
-               goto out_unlock;
-       efx->type->monitor(efx);
+        * most of the work of monitor() anyway. */
+       if (mutex_trylock(&efx->mac_lock)) {
+               if (efx->port_enabled)
+                       efx->type->monitor(efx);
+               mutex_unlock(&efx->mac_lock);
+       }
 
-out_unlock:
-       mutex_unlock(&efx->mac_lock);
-out_requeue:
        queue_delayed_work(efx->workqueue, &efx->monitor_work,
                           efx_monitor_interval);
 }