sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c
authorBen Hutchings <bhutchings@solarflare.com>
Wed, 25 Nov 2009 16:11:45 +0000 (16:11 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 26 Nov 2009 23:59:40 +0000 (15:59 -0800)
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/sfc/efx.c
drivers/net/sfc/falcon.c
drivers/net/sfc/falcon.h

index 41ca5dbb4c44d3fae6f94da0dbb2c058c137e199..d17cea9f4e883929e37e4b0094708c0ff8ae4037 100644 (file)
@@ -1293,7 +1293,6 @@ static void efx_monitor(struct work_struct *data)
 {
        struct efx_nic *efx = container_of(data, struct efx_nic,
                                           monitor_work.work);
-       int rc;
 
        EFX_TRACE(efx, "hardware monitor executing on CPU %d\n",
                  raw_smp_processor_id());
@@ -1305,15 +1304,7 @@ static void efx_monitor(struct work_struct *data)
                goto out_requeue;
        if (!efx->port_enabled)
                goto out_unlock;
-       rc = falcon_board(efx)->type->monitor(efx);
-       if (rc) {
-               EFX_ERR(efx, "Board sensor %s; shutting down PHY\n",
-                       (rc == -ERANGE) ? "reported fault" : "failed");
-               efx->phy_mode |= PHY_MODE_LOW_POWER;
-               falcon_sim_phy_event(efx);
-       }
-       efx->phy_op->poll(efx);
-       efx->mac_op->poll(efx);
+       falcon_monitor(efx);
 
 out_unlock:
        mutex_unlock(&efx->mac_lock);
index 3ab2daff6b487b7a065e9cf8308158ad77f38527..c43c5e6f077b3634e0d5f5acace161b87773c95f 100644 (file)
@@ -2612,6 +2612,21 @@ fail5:
        return rc;
 }
 
+void falcon_monitor(struct efx_nic *efx)
+{
+       int rc;
+
+       rc = falcon_board(efx)->type->monitor(efx);
+       if (rc) {
+               EFX_ERR(efx, "Board sensor %s; shutting down PHY\n",
+                       (rc == -ERANGE) ? "reported fault" : "failed");
+               efx->phy_mode |= PHY_MODE_LOW_POWER;
+               falcon_sim_phy_event(efx);
+       }
+       efx->phy_op->poll(efx);
+       efx->mac_op->poll(efx);
+}
+
 /* Zeroes out the SRAM contents.  This routine must be called in
  * process context and is allowed to sleep.
  */
index 61fab0a00cc3beafeae2145ce1dbc74cddf011c7..05e51c2a6d8a1e46239f336726803d420fc69ea5 100644 (file)
@@ -158,6 +158,7 @@ extern int falcon_probe_nic(struct efx_nic *efx);
 extern int falcon_init_nic(struct efx_nic *efx);
 extern int falcon_flush_queues(struct efx_nic *efx);
 extern int falcon_reset_hw(struct efx_nic *efx, enum reset_type method);
+extern void falcon_monitor(struct efx_nic *efx);
 extern void falcon_remove_nic(struct efx_nic *efx);
 extern void falcon_update_nic_stats(struct efx_nic *efx);
 extern void falcon_start_nic_stats(struct efx_nic *efx);