sfc: Split MAC stats DMA initiation and completion

From: Steve Hodgson <shodgson@solarflare.com>

Currently we initiate MAC stats DMA and busy-wait for completion when
stats are requested.  We can improve on this with a periodic timer to
initiate and poll for stats, and opportunistically poll when stats are
requested.

Since efx_nic::stats_disable_count and efx_stats_{disable,enable}()
are Falcon-specific, rename them and move them accordingly.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/drivers/net/sfc/falcon_boards.c b/drivers/net/sfc/falcon_boards.c
index ac1258e..72d1c78 100644
--- a/drivers/net/sfc/falcon_boards.c
+++ b/drivers/net/sfc/falcon_boards.c
@@ -347,14 +347,14 @@
 		 * MAC stats accordingly. */
 		efx->phy_mode = new_mode;
 		if (new_mode & PHY_MODE_SPECIAL)
-			efx_stats_disable(efx);
+			falcon_stop_nic_stats(efx);
 		if (falcon_board(efx)->type->id == FALCON_BOARD_SFE4001)
 			err = sfe4001_poweron(efx);
 		else
 			err = sfn4111t_reset(efx);
 		efx_reconfigure_port(efx);
 		if (!(new_mode & PHY_MODE_SPECIAL))
-			efx_stats_enable(efx);
+			falcon_start_nic_stats(efx);
 	}
 	rtnl_unlock();
 
@@ -441,7 +441,7 @@
 	if (efx->phy_mode & PHY_MODE_SPECIAL) {
 		/* PHY won't generate a 156.25 MHz clock and MAC stats fetch
 		 * will fail. */
-		efx_stats_disable(efx);
+		falcon_stop_nic_stats(efx);
 	}
 	rc = sfe4001_poweron(efx);
 	if (rc)
@@ -504,7 +504,7 @@
 			return;
 
 		efx->phy_mode = PHY_MODE_SPECIAL;
-		efx_stats_disable(efx);
+		falcon_stop_nic_stats(efx);
 	}
 
 	sfn4111t_reset(efx);
@@ -531,7 +531,7 @@
 	if (efx->phy_mode & PHY_MODE_SPECIAL)
 		/* PHY may not generate a 156.25 MHz clock and MAC
 		 * stats fetch will fail. */
-		efx_stats_disable(efx);
+		falcon_stop_nic_stats(efx);
 
 	return 0;