net/sfc/base: do not ignore MAC stats update period
authorAndrew Rybchenko <arybchenko@solarflare.com>
Thu, 9 Mar 2017 17:22:58 +0000 (17:22 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 4 Apr 2017 16:59:40 +0000 (18:59 +0200)
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
drivers/net/sfc/base/efx_mcdi.c
drivers/net/sfc/base/efx_mcdi.h

index ac432a6..c9d29a7 100644 (file)
@@ -1722,7 +1722,8 @@ static    __checkReturn   efx_rc_t
 efx_mcdi_mac_stats(
        __in            efx_nic_t *enp,
        __in_opt        efsys_mem_t *esmp,
-       __in            efx_stats_action_t action)
+       __in            efx_stats_action_t action,
+       __in            uint16_t period_ms)
 {
        efx_mcdi_req_t req;
        uint8_t payload[MAX(MC_CMD_MAC_STATS_IN_LEN,
@@ -1747,7 +1748,7 @@ efx_mcdi_mac_stats(
            MAC_STATS_IN_PERIODIC_CHANGE, enable | events | disable,
            MAC_STATS_IN_PERIODIC_ENABLE, enable | events,
            MAC_STATS_IN_PERIODIC_NOEVENT, !events,
-           MAC_STATS_IN_PERIOD_MS, (enable | events) ? 1000 : 0);
+           MAC_STATS_IN_PERIOD_MS, (enable | events) ? period_ms : 0);
 
        if (esmp != NULL) {
                int bytes = MC_CMD_MAC_NSTATS * sizeof (uint64_t);
@@ -1797,7 +1798,7 @@ efx_mcdi_mac_stats_clear(
 {
        efx_rc_t rc;
 
-       if ((rc = efx_mcdi_mac_stats(enp, NULL, EFX_STATS_CLEAR)) != 0)
+       if ((rc = efx_mcdi_mac_stats(enp, NULL, EFX_STATS_CLEAR, 0)) != 0)
                goto fail1;
 
        return (0);
@@ -1820,7 +1821,7 @@ efx_mcdi_mac_stats_upload(
         * avoid having to pull the statistics buffer into the cache to
         * maintain cumulative statistics.
         */
-       if ((rc = efx_mcdi_mac_stats(enp, esmp, EFX_STATS_UPLOAD)) != 0)
+       if ((rc = efx_mcdi_mac_stats(enp, esmp, EFX_STATS_UPLOAD, 0)) != 0)
                goto fail1;
 
        return (0);
@@ -1835,7 +1836,7 @@ fail1:
 efx_mcdi_mac_stats_periodic(
        __in            efx_nic_t *enp,
        __in            efsys_mem_t *esmp,
-       __in            uint16_t period,
+       __in            uint16_t period_ms,
        __in            boolean_t events)
 {
        efx_rc_t rc;
@@ -1844,14 +1845,17 @@ efx_mcdi_mac_stats_periodic(
         * The MC DMAs aggregate statistics for our convenience, so we can
         * avoid having to pull the statistics buffer into the cache to
         * maintain cumulative statistics.
-        * Huntington uses a fixed 1sec period, so use that on Siena too.
+        * Huntington uses a fixed 1sec period.
+        * Medford uses a fixed 1sec period before v6.2.1.1033 firmware.
         */
-       if (period == 0)
-               rc = efx_mcdi_mac_stats(enp, NULL, EFX_STATS_DISABLE);
+       if (period_ms == 0)
+               rc = efx_mcdi_mac_stats(enp, NULL, EFX_STATS_DISABLE, 0);
        else if (events)
-               rc = efx_mcdi_mac_stats(enp, esmp, EFX_STATS_ENABLE_EVENTS);
+               rc = efx_mcdi_mac_stats(enp, esmp, EFX_STATS_ENABLE_EVENTS,
+                   period_ms);
        else
-               rc = efx_mcdi_mac_stats(enp, esmp, EFX_STATS_ENABLE_NOEVENTS);
+               rc = efx_mcdi_mac_stats(enp, esmp, EFX_STATS_ENABLE_NOEVENTS,
+                   period_ms);
 
        if (rc != 0)
                goto fail1;
index 814f3f4..7faabbb 100644 (file)
@@ -216,7 +216,7 @@ extern      __checkReturn   efx_rc_t
 efx_mcdi_mac_stats_periodic(
        __in            efx_nic_t *enp,
        __in            efsys_mem_t *esmp,
-       __in            uint16_t period,
+       __in            uint16_t period_ms,
        __in            boolean_t events);