From e9adf70ee5e1e0f85c5c2a6550ee1b0fe96ccab5 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 1 Oct 2012 20:58:35 +0100 Subject: [PATCH] --- yaml --- r: 341687 b: refs/heads/master c: 876be083b669c43203c0ee8709d749896e1d8d60 h: refs/heads/master i: 341685: 7e4228a44c356da8185d548b23e7ee67b5e526d1 341683: 31105a2736efd496c484ecdccbce85603cd75f48 341679: 44a85b2b31d14fc072f9cc22e5db5261bb2101a0 v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/sfc/mcdi.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d6df4342e68b..131c4cb08cdc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c3771a35bebeea16c4fd94d1116010cc02b1f75e +refs/heads/master: 876be083b669c43203c0ee8709d749896e1d8d60 diff --git a/trunk/drivers/net/ethernet/sfc/mcdi.c b/trunk/drivers/net/ethernet/sfc/mcdi.c index e1967fbad161..3ef71a0f99a8 100644 --- a/trunk/drivers/net/ethernet/sfc/mcdi.c +++ b/trunk/drivers/net/ethernet/sfc/mcdi.c @@ -207,7 +207,9 @@ static int efx_mcdi_poll(struct efx_nic *efx) return 0; } -/* Test and clear MC-rebooted flag for this port/function */ +/* Test and clear MC-rebooted flag for this port/function; reset + * software state as necessary. + */ int efx_mcdi_poll_reboot(struct efx_nic *efx) { unsigned int addr = FR_CZ_MC_TREG_SMEM + MCDI_STATUS(efx); @@ -223,6 +225,11 @@ int efx_mcdi_poll_reboot(struct efx_nic *efx) if (value == 0) return 0; + /* MAC statistics have been cleared on the NIC; clear our copy + * so that efx_update_diff_stat() can continue to work. + */ + memset(&efx->mac_stats, 0, sizeof(efx->mac_stats)); + EFX_ZERO_DWORD(reg); efx_writed(efx, ®, addr);