[S25,01/12] ice: update ethtool stats on-demand
diff mbox series

Message ID 20190725095401.24590-1-anthony.l.nguyen@intel.com
State Under Review
Delegated to: Jeff Kirsher
Headers show
Series
  • [S25,01/12] ice: update ethtool stats on-demand
Related show

Commit Message

Tony Nguyen July 25, 2019, 9:53 a.m. UTC
From: Bruce Allan <bruce.w.allan@intel.com>

Users expect ethtool statistics to be updated on-demand when invoking
'ethtool -S <iface>' instead of providing a snapshot of statistics taken
once a second (the frequency of the watchdog task where stats are currently
updated).  Update stats every time 'ethtool -S <iface>' is run.

Also, fix an indentation style issue and an unnecessary local variable
initialization in ice_get_ethtool_stats() discovered while investigating
the subject issue.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h         | 2 ++
 drivers/net/ethernet/intel/ice/ice_ethtool.c | 7 +++++--
 drivers/net/ethernet/intel/ice/ice_main.c    | 6 ++----
 3 files changed, 9 insertions(+), 6 deletions(-)

Comments

Allan, Bruce W July 26, 2019, 3:11 p.m. UTC | #1
ACK

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@osuosl.org] On Behalf
> Of Tony Nguyen
> Sent: Thursday, July 25, 2019 2:54 AM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH S25 01/12] ice: update ethtool stats on-
> demand
> 
> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> Users expect ethtool statistics to be updated on-demand when invoking
> 'ethtool -S <iface>' instead of providing a snapshot of statistics taken
> once a second (the frequency of the watchdog task where stats are currently
> updated).  Update stats every time 'ethtool -S <iface>' is run.
> 
> Also, fix an indentation style issue and an unnecessary local variable
> initialization in ice_get_ethtool_stats() discovered while investigating
> the subject issue.
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h         | 2 ++
>  drivers/net/ethernet/intel/ice/ice_ethtool.c | 7 +++++--
>  drivers/net/ethernet/intel/ice/ice_main.c    | 6 ++----
>  3 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice.h
> b/drivers/net/ethernet/intel/ice/ice.h
> index 0e233b7c40bc..2165366e9250 100644
> --- a/drivers/net/ethernet/intel/ice/ice.h
> +++ b/drivers/net/ethernet/intel/ice/ice.h
> @@ -450,6 +450,8 @@ int ice_vsi_setup_tx_rings(struct ice_vsi *vsi);
>  int ice_vsi_setup_rx_rings(struct ice_vsi *vsi);
>  void ice_set_ethtool_ops(struct net_device *netdev);
>  int ice_vsi_recfg_qs(struct ice_vsi *vsi, int new_rx, int new_tx);
> +void ice_update_vsi_stats(struct ice_vsi *vsi);
> +void ice_update_pf_stats(struct ice_pf *pf);
>  int ice_up(struct ice_vsi *vsi);
>  int ice_down(struct ice_vsi *vsi);
>  int ice_vsi_cfg(struct ice_vsi *vsi);
> diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c
> b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> index b60bcbcf9bf2..4b2494e7fa78 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> @@ -1319,14 +1319,17 @@ ice_get_ethtool_stats(struct net_device *netdev,
>  	struct ice_vsi *vsi = np->vsi;
>  	struct ice_pf *pf = vsi->back;
>  	struct ice_ring *ring;
> -	unsigned int j = 0;
> +	unsigned int j;
>  	int i = 0;
>  	char *p;
> 
> +	ice_update_pf_stats(pf);
> +	ice_update_vsi_stats(vsi);
> +
>  	for (j = 0; j < ICE_VSI_STATS_LEN; j++) {
>  		p = (char *)vsi + ice_gstrings_vsi_stats[j].stat_offset;
>  		data[i++] = (ice_gstrings_vsi_stats[j].sizeof_stat ==
> -			    sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
> +			     sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
>  	}
> 
>  	/* populate per queue stats */
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c
> b/drivers/net/ethernet/intel/ice/ice_main.c
> index 833f0efc93f9..17358a10866d 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -34,8 +34,6 @@ static const struct net_device_ops ice_netdev_ops;
>  static void ice_rebuild(struct ice_pf *pf);
> 
>  static void ice_vsi_release_all(struct ice_pf *pf);
> -static void ice_update_vsi_stats(struct ice_vsi *vsi);
> -static void ice_update_pf_stats(struct ice_pf *pf);
> 
>  /**
>   * ice_get_tx_pending - returns number of Tx descriptors not processed
> @@ -3290,7 +3288,7 @@ static void ice_update_vsi_ring_stats(struct ice_vsi
> *vsi)
>   * ice_update_vsi_stats - Update VSI stats counters
>   * @vsi: the VSI to be updated
>   */
> -static void ice_update_vsi_stats(struct ice_vsi *vsi)
> +void ice_update_vsi_stats(struct ice_vsi *vsi)
>  {
>  	struct rtnl_link_stats64 *cur_ns = &vsi->net_stats;
>  	struct ice_eth_stats *cur_es = &vsi->eth_stats;
> @@ -3326,7 +3324,7 @@ static void ice_update_vsi_stats(struct ice_vsi *vsi)
>   * ice_update_pf_stats - Update PF port stats counters
>   * @pf: PF whose stats needs to be updated
>   */
> -static void ice_update_pf_stats(struct ice_pf *pf)
> +void ice_update_pf_stats(struct ice_pf *pf)
>  {
>  	struct ice_hw_port_stats *prev_ps, *cur_ps;
>  	struct ice_hw *hw = &pf->hw;
> --
> 2.20.1
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan@osuosl.org
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
Bowers, AndrewX July 31, 2019, 6:10 p.m. UTC | #2
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@osuosl.org] On
> Behalf Of Tony Nguyen
> Sent: Thursday, July 25, 2019 2:54 AM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH S25 01/12] ice: update ethtool stats on-
> demand
> 
> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> Users expect ethtool statistics to be updated on-demand when invoking
> 'ethtool -S <iface>' instead of providing a snapshot of statistics taken once a
> second (the frequency of the watchdog task where stats are currently
> updated).  Update stats every time 'ethtool -S <iface>' is run.
> 
> Also, fix an indentation style issue and an unnecessary local variable
> initialization in ice_get_ethtool_stats() discovered while investigating the
> subject issue.
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h         | 2 ++
>  drivers/net/ethernet/intel/ice/ice_ethtool.c | 7 +++++--
>  drivers/net/ethernet/intel/ice/ice_main.c    | 6 ++----
>  3 files changed, 9 insertions(+), 6 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>

Patch
diff mbox series

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index 0e233b7c40bc..2165366e9250 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -450,6 +450,8 @@  int ice_vsi_setup_tx_rings(struct ice_vsi *vsi);
 int ice_vsi_setup_rx_rings(struct ice_vsi *vsi);
 void ice_set_ethtool_ops(struct net_device *netdev);
 int ice_vsi_recfg_qs(struct ice_vsi *vsi, int new_rx, int new_tx);
+void ice_update_vsi_stats(struct ice_vsi *vsi);
+void ice_update_pf_stats(struct ice_pf *pf);
 int ice_up(struct ice_vsi *vsi);
 int ice_down(struct ice_vsi *vsi);
 int ice_vsi_cfg(struct ice_vsi *vsi);
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index b60bcbcf9bf2..4b2494e7fa78 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -1319,14 +1319,17 @@  ice_get_ethtool_stats(struct net_device *netdev,
 	struct ice_vsi *vsi = np->vsi;
 	struct ice_pf *pf = vsi->back;
 	struct ice_ring *ring;
-	unsigned int j = 0;
+	unsigned int j;
 	int i = 0;
 	char *p;
 
+	ice_update_pf_stats(pf);
+	ice_update_vsi_stats(vsi);
+
 	for (j = 0; j < ICE_VSI_STATS_LEN; j++) {
 		p = (char *)vsi + ice_gstrings_vsi_stats[j].stat_offset;
 		data[i++] = (ice_gstrings_vsi_stats[j].sizeof_stat ==
-			    sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
+			     sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
 	}
 
 	/* populate per queue stats */
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 833f0efc93f9..17358a10866d 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -34,8 +34,6 @@  static const struct net_device_ops ice_netdev_ops;
 static void ice_rebuild(struct ice_pf *pf);
 
 static void ice_vsi_release_all(struct ice_pf *pf);
-static void ice_update_vsi_stats(struct ice_vsi *vsi);
-static void ice_update_pf_stats(struct ice_pf *pf);
 
 /**
  * ice_get_tx_pending - returns number of Tx descriptors not processed
@@ -3290,7 +3288,7 @@  static void ice_update_vsi_ring_stats(struct ice_vsi *vsi)
  * ice_update_vsi_stats - Update VSI stats counters
  * @vsi: the VSI to be updated
  */
-static void ice_update_vsi_stats(struct ice_vsi *vsi)
+void ice_update_vsi_stats(struct ice_vsi *vsi)
 {
 	struct rtnl_link_stats64 *cur_ns = &vsi->net_stats;
 	struct ice_eth_stats *cur_es = &vsi->eth_stats;
@@ -3326,7 +3324,7 @@  static void ice_update_vsi_stats(struct ice_vsi *vsi)
  * ice_update_pf_stats - Update PF port stats counters
  * @pf: PF whose stats needs to be updated
  */
-static void ice_update_pf_stats(struct ice_pf *pf)
+void ice_update_pf_stats(struct ice_pf *pf)
 {
 	struct ice_hw_port_stats *prev_ps, *cur_ps;
 	struct ice_hw *hw = &pf->hw;