@@ -1787,104 +1787,121 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,
1787
1787
data [i ++ ] = pf -> stats .priority_xon_2_xoff [j ];
1788
1788
}
1789
1789
1790
- static void i40e_get_strings (struct net_device * netdev , u32 stringset ,
1791
- u8 * data )
1790
+ static void i40e_get_stat_strings (struct net_device * netdev , u8 * data )
1792
1791
{
1793
1792
struct i40e_netdev_priv * np = netdev_priv (netdev );
1794
1793
struct i40e_vsi * vsi = np -> vsi ;
1795
1794
struct i40e_pf * pf = vsi -> back ;
1796
1795
char * p = (char * )data ;
1797
1796
unsigned int i ;
1798
1797
1798
+ for (i = 0 ; i < I40E_NETDEV_STATS_LEN ; i ++ ) {
1799
+ snprintf (p , ETH_GSTRING_LEN , "%s" ,
1800
+ i40e_gstrings_net_stats [i ].stat_string );
1801
+ p += ETH_GSTRING_LEN ;
1802
+ }
1803
+ for (i = 0 ; i < I40E_MISC_STATS_LEN ; i ++ ) {
1804
+ snprintf (p , ETH_GSTRING_LEN , "%s" ,
1805
+ i40e_gstrings_misc_stats [i ].stat_string );
1806
+ p += ETH_GSTRING_LEN ;
1807
+ }
1808
+ for (i = 0 ; i < I40E_MAX_NUM_QUEUES (netdev ); i ++ ) {
1809
+ snprintf (p , ETH_GSTRING_LEN , "tx-%u.tx_packets" , i );
1810
+ p += ETH_GSTRING_LEN ;
1811
+ snprintf (p , ETH_GSTRING_LEN , "tx-%u.tx_bytes" , i );
1812
+ p += ETH_GSTRING_LEN ;
1813
+ snprintf (p , ETH_GSTRING_LEN , "rx-%u.rx_packets" , i );
1814
+ p += ETH_GSTRING_LEN ;
1815
+ snprintf (p , ETH_GSTRING_LEN , "rx-%u.rx_bytes" , i );
1816
+ p += ETH_GSTRING_LEN ;
1817
+ }
1818
+ if (vsi != pf -> vsi [pf -> lan_vsi ] || pf -> hw .partition_id != 1 )
1819
+ return ;
1820
+
1821
+ for (i = 0 ; i < I40E_VEB_STATS_LEN ; i ++ ) {
1822
+ snprintf (p , ETH_GSTRING_LEN , "veb.%s" ,
1823
+ i40e_gstrings_veb_stats [i ].stat_string );
1824
+ p += ETH_GSTRING_LEN ;
1825
+ }
1826
+ for (i = 0 ; i < I40E_MAX_TRAFFIC_CLASS ; i ++ ) {
1827
+ snprintf (p , ETH_GSTRING_LEN ,
1828
+ "veb.tc_%u_tx_packets" , i );
1829
+ p += ETH_GSTRING_LEN ;
1830
+ snprintf (p , ETH_GSTRING_LEN ,
1831
+ "veb.tc_%u_tx_bytes" , i );
1832
+ p += ETH_GSTRING_LEN ;
1833
+ snprintf (p , ETH_GSTRING_LEN ,
1834
+ "veb.tc_%u_rx_packets" , i );
1835
+ p += ETH_GSTRING_LEN ;
1836
+ snprintf (p , ETH_GSTRING_LEN ,
1837
+ "veb.tc_%u_rx_bytes" , i );
1838
+ p += ETH_GSTRING_LEN ;
1839
+ }
1840
+
1841
+ for (i = 0 ; i < I40E_GLOBAL_STATS_LEN ; i ++ ) {
1842
+ snprintf (p , ETH_GSTRING_LEN , "port.%s" ,
1843
+ i40e_gstrings_stats [i ].stat_string );
1844
+ p += ETH_GSTRING_LEN ;
1845
+ }
1846
+ for (i = 0 ; i < I40E_MAX_USER_PRIORITY ; i ++ ) {
1847
+ snprintf (p , ETH_GSTRING_LEN ,
1848
+ "port.tx_priority_%u_xon" , i );
1849
+ p += ETH_GSTRING_LEN ;
1850
+ snprintf (p , ETH_GSTRING_LEN ,
1851
+ "port.tx_priority_%u_xoff" , i );
1852
+ p += ETH_GSTRING_LEN ;
1853
+ }
1854
+ for (i = 0 ; i < I40E_MAX_USER_PRIORITY ; i ++ ) {
1855
+ snprintf (p , ETH_GSTRING_LEN ,
1856
+ "port.rx_priority_%u_xon" , i );
1857
+ p += ETH_GSTRING_LEN ;
1858
+ snprintf (p , ETH_GSTRING_LEN ,
1859
+ "port.rx_priority_%u_xoff" , i );
1860
+ p += ETH_GSTRING_LEN ;
1861
+ }
1862
+ for (i = 0 ; i < I40E_MAX_USER_PRIORITY ; i ++ ) {
1863
+ snprintf (p , ETH_GSTRING_LEN ,
1864
+ "port.rx_priority_%u_xon_2_xoff" , i );
1865
+ p += ETH_GSTRING_LEN ;
1866
+ }
1867
+ /* BUG_ON(p - data != I40E_STATS_LEN * ETH_GSTRING_LEN); */
1868
+ }
1869
+
1870
+ static void i40e_get_priv_flag_strings (struct net_device * netdev , u8 * data )
1871
+ {
1872
+ struct i40e_netdev_priv * np = netdev_priv (netdev );
1873
+ struct i40e_vsi * vsi = np -> vsi ;
1874
+ struct i40e_pf * pf = vsi -> back ;
1875
+ char * p = (char * )data ;
1876
+ unsigned int i ;
1877
+
1878
+ for (i = 0 ; i < I40E_PRIV_FLAGS_STR_LEN ; i ++ ) {
1879
+ snprintf (p , ETH_GSTRING_LEN , "%s" ,
1880
+ i40e_gstrings_priv_flags [i ].flag_string );
1881
+ p += ETH_GSTRING_LEN ;
1882
+ }
1883
+ if (pf -> hw .pf_id != 0 )
1884
+ return ;
1885
+ for (i = 0 ; i < I40E_GL_PRIV_FLAGS_STR_LEN ; i ++ ) {
1886
+ snprintf (p , ETH_GSTRING_LEN , "%s" ,
1887
+ i40e_gl_gstrings_priv_flags [i ].flag_string );
1888
+ p += ETH_GSTRING_LEN ;
1889
+ }
1890
+ }
1891
+
1892
+ static void i40e_get_strings (struct net_device * netdev , u32 stringset ,
1893
+ u8 * data )
1894
+ {
1799
1895
switch (stringset ) {
1800
1896
case ETH_SS_TEST :
1801
1897
memcpy (data , i40e_gstrings_test ,
1802
1898
I40E_TEST_LEN * ETH_GSTRING_LEN );
1803
1899
break ;
1804
1900
case ETH_SS_STATS :
1805
- for (i = 0 ; i < I40E_NETDEV_STATS_LEN ; i ++ ) {
1806
- snprintf (p , ETH_GSTRING_LEN , "%s" ,
1807
- i40e_gstrings_net_stats [i ].stat_string );
1808
- p += ETH_GSTRING_LEN ;
1809
- }
1810
- for (i = 0 ; i < I40E_MISC_STATS_LEN ; i ++ ) {
1811
- snprintf (p , ETH_GSTRING_LEN , "%s" ,
1812
- i40e_gstrings_misc_stats [i ].stat_string );
1813
- p += ETH_GSTRING_LEN ;
1814
- }
1815
- for (i = 0 ; i < I40E_MAX_NUM_QUEUES (netdev ); i ++ ) {
1816
- snprintf (p , ETH_GSTRING_LEN , "tx-%d.tx_packets" , i );
1817
- p += ETH_GSTRING_LEN ;
1818
- snprintf (p , ETH_GSTRING_LEN , "tx-%d.tx_bytes" , i );
1819
- p += ETH_GSTRING_LEN ;
1820
- snprintf (p , ETH_GSTRING_LEN , "rx-%d.rx_packets" , i );
1821
- p += ETH_GSTRING_LEN ;
1822
- snprintf (p , ETH_GSTRING_LEN , "rx-%d.rx_bytes" , i );
1823
- p += ETH_GSTRING_LEN ;
1824
- }
1825
- if (vsi != pf -> vsi [pf -> lan_vsi ] || pf -> hw .partition_id != 1 )
1826
- return ;
1827
-
1828
- for (i = 0 ; i < I40E_VEB_STATS_LEN ; i ++ ) {
1829
- snprintf (p , ETH_GSTRING_LEN , "veb.%s" ,
1830
- i40e_gstrings_veb_stats [i ].stat_string );
1831
- p += ETH_GSTRING_LEN ;
1832
- }
1833
- for (i = 0 ; i < I40E_MAX_TRAFFIC_CLASS ; i ++ ) {
1834
- snprintf (p , ETH_GSTRING_LEN ,
1835
- "veb.tc_%u_tx_packets" , i );
1836
- p += ETH_GSTRING_LEN ;
1837
- snprintf (p , ETH_GSTRING_LEN ,
1838
- "veb.tc_%u_tx_bytes" , i );
1839
- p += ETH_GSTRING_LEN ;
1840
- snprintf (p , ETH_GSTRING_LEN ,
1841
- "veb.tc_%u_rx_packets" , i );
1842
- p += ETH_GSTRING_LEN ;
1843
- snprintf (p , ETH_GSTRING_LEN ,
1844
- "veb.tc_%u_rx_bytes" , i );
1845
- p += ETH_GSTRING_LEN ;
1846
- }
1847
- for (i = 0 ; i < I40E_GLOBAL_STATS_LEN ; i ++ ) {
1848
- snprintf (p , ETH_GSTRING_LEN , "port.%s" ,
1849
- i40e_gstrings_stats [i ].stat_string );
1850
- p += ETH_GSTRING_LEN ;
1851
- }
1852
- for (i = 0 ; i < I40E_MAX_USER_PRIORITY ; i ++ ) {
1853
- snprintf (p , ETH_GSTRING_LEN ,
1854
- "port.tx_priority_%d_xon" , i );
1855
- p += ETH_GSTRING_LEN ;
1856
- snprintf (p , ETH_GSTRING_LEN ,
1857
- "port.tx_priority_%d_xoff" , i );
1858
- p += ETH_GSTRING_LEN ;
1859
- }
1860
- for (i = 0 ; i < I40E_MAX_USER_PRIORITY ; i ++ ) {
1861
- snprintf (p , ETH_GSTRING_LEN ,
1862
- "port.rx_priority_%d_xon" , i );
1863
- p += ETH_GSTRING_LEN ;
1864
- snprintf (p , ETH_GSTRING_LEN ,
1865
- "port.rx_priority_%d_xoff" , i );
1866
- p += ETH_GSTRING_LEN ;
1867
- }
1868
- for (i = 0 ; i < I40E_MAX_USER_PRIORITY ; i ++ ) {
1869
- snprintf (p , ETH_GSTRING_LEN ,
1870
- "port.rx_priority_%d_xon_2_xoff" , i );
1871
- p += ETH_GSTRING_LEN ;
1872
- }
1873
- /* BUG_ON(p - data != I40E_STATS_LEN * ETH_GSTRING_LEN); */
1901
+ i40e_get_stat_strings (netdev , data );
1874
1902
break ;
1875
1903
case ETH_SS_PRIV_FLAGS :
1876
- for (i = 0 ; i < I40E_PRIV_FLAGS_STR_LEN ; i ++ ) {
1877
- snprintf (p , ETH_GSTRING_LEN , "%s" ,
1878
- i40e_gstrings_priv_flags [i ].flag_string );
1879
- p += ETH_GSTRING_LEN ;
1880
- }
1881
- if (pf -> hw .pf_id != 0 )
1882
- break ;
1883
- for (i = 0 ; i < I40E_GL_PRIV_FLAGS_STR_LEN ; i ++ ) {
1884
- snprintf (p , ETH_GSTRING_LEN , "%s" ,
1885
- i40e_gl_gstrings_priv_flags [i ].flag_string );
1886
- p += ETH_GSTRING_LEN ;
1887
- }
1904
+ i40e_get_priv_flag_strings (netdev , data );
1888
1905
break ;
1889
1906
default :
1890
1907
break ;
0 commit comments