@@ -706,112 +706,105 @@ static void bnxt_get_ethtool_stats(struct net_device *dev,
706706static void bnxt_get_strings (struct net_device * dev , u32 stringset , u8 * buf )
707707{
708708 struct bnxt * bp = netdev_priv (dev );
709- static const char * const * str ;
710709 u32 i , j , num_str ;
710+ const char * str ;
711711
712712 switch (stringset ) {
713713 case ETH_SS_STATS :
714714 for (i = 0 ; i < bp -> cp_nr_rings ; i ++ ) {
715- if (is_rx_ring (bp , i )) {
716- num_str = NUM_RING_RX_HW_STATS ;
717- for (j = 0 ; j < num_str ; j ++ ) {
718- sprintf (buf , "[%d]: %s" , i ,
719- bnxt_ring_rx_stats_str [j ]);
720- buf += ETH_GSTRING_LEN ;
715+ if (is_rx_ring (bp , i ))
716+ for (j = 0 ; j < NUM_RING_RX_HW_STATS ; j ++ ) {
717+ str = bnxt_ring_rx_stats_str [j ];
718+ ethtool_sprintf (& buf , "[%d]: %s" , i ,
719+ str );
721720 }
722- }
723- if (is_tx_ring (bp , i )) {
724- num_str = NUM_RING_TX_HW_STATS ;
725- for (j = 0 ; j < num_str ; j ++ ) {
726- sprintf (buf , "[%d]: %s" , i ,
727- bnxt_ring_tx_stats_str [j ]);
728- buf += ETH_GSTRING_LEN ;
721+ if (is_tx_ring (bp , i ))
722+ for (j = 0 ; j < NUM_RING_TX_HW_STATS ; j ++ ) {
723+ str = bnxt_ring_tx_stats_str [j ];
724+ ethtool_sprintf (& buf , "[%d]: %s" , i ,
725+ str );
729726 }
730- }
731727 num_str = bnxt_get_num_tpa_ring_stats (bp );
732728 if (!num_str || !is_rx_ring (bp , i ))
733729 goto skip_tpa_stats ;
734730
735731 if (bp -> max_tpa_v2 )
736- str = bnxt_ring_tpa2_stats_str ;
732+ for (j = 0 ; j < num_str ; j ++ ) {
733+ str = bnxt_ring_tpa2_stats_str [j ];
734+ ethtool_sprintf (& buf , "[%d]: %s" , i ,
735+ str );
736+ }
737737 else
738- str = bnxt_ring_tpa_stats_str ;
739-
740- for (j = 0 ; j < num_str ; j ++ ) {
741- sprintf (buf , "[%d]: %s" , i , str [j ]);
742- buf += ETH_GSTRING_LEN ;
743- }
744- skip_tpa_stats :
745- if (is_rx_ring (bp , i )) {
746- num_str = NUM_RING_RX_SW_STATS ;
747738 for (j = 0 ; j < num_str ; j ++ ) {
748- sprintf ( buf , "[%d]: %s" , i ,
749- bnxt_rx_sw_stats_str [ j ]);
750- buf += ETH_GSTRING_LEN ;
739+ str = bnxt_ring_tpa_stats_str [ j ];
740+ ethtool_sprintf ( & buf , "[%d]: %s" , i ,
741+ str ) ;
751742 }
743+ skip_tpa_stats :
744+ if (is_rx_ring (bp , i ))
745+ for (j = 0 ; j < NUM_RING_RX_SW_STATS ; j ++ ) {
746+ str = bnxt_rx_sw_stats_str [j ];
747+ ethtool_sprintf (& buf , "[%d]: %s" , i ,
748+ str );
749+ }
750+ for (j = 0 ; j < NUM_RING_CMN_SW_STATS ; j ++ ) {
751+ str = bnxt_cmn_sw_stats_str [j ];
752+ ethtool_sprintf (& buf , "[%d]: %s" , i , str );
752753 }
753- num_str = NUM_RING_CMN_SW_STATS ;
754- for (j = 0 ; j < num_str ; j ++ ) {
755- sprintf (buf , "[%d]: %s" , i ,
756- bnxt_cmn_sw_stats_str [j ]);
757- buf += ETH_GSTRING_LEN ;
758- }
759- }
760- for (i = 0 ; i < BNXT_NUM_RING_ERR_STATS ; i ++ ) {
761- strscpy (buf , bnxt_ring_err_stats_arr [i ], ETH_GSTRING_LEN );
762- buf += ETH_GSTRING_LEN ;
763754 }
755+ for (i = 0 ; i < BNXT_NUM_RING_ERR_STATS ; i ++ )
756+ ethtool_puts (& buf , bnxt_ring_err_stats_arr [i ]);
764757
765- if (bp -> flags & BNXT_FLAG_PORT_STATS ) {
758+ if (bp -> flags & BNXT_FLAG_PORT_STATS )
766759 for (i = 0 ; i < BNXT_NUM_PORT_STATS ; i ++ ) {
767- strcpy ( buf , bnxt_port_stats_arr [i ].string ) ;
768- buf += ETH_GSTRING_LEN ;
760+ str = bnxt_port_stats_arr [i ].string ;
761+ ethtool_puts ( & buf , str ) ;
769762 }
770- }
763+
771764 if (bp -> flags & BNXT_FLAG_PORT_STATS_EXT ) {
772765 u32 len ;
773766
774767 len = min_t (u32 , bp -> fw_rx_stats_ext_size ,
775768 ARRAY_SIZE (bnxt_port_stats_ext_arr ));
776769 for (i = 0 ; i < len ; i ++ ) {
777- strcpy ( buf , bnxt_port_stats_ext_arr [i ].string ) ;
778- buf += ETH_GSTRING_LEN ;
770+ str = bnxt_port_stats_ext_arr [i ].string ;
771+ ethtool_puts ( & buf , str ) ;
779772 }
773+
780774 len = min_t (u32 , bp -> fw_tx_stats_ext_size ,
781775 ARRAY_SIZE (bnxt_tx_port_stats_ext_arr ));
782776 for (i = 0 ; i < len ; i ++ ) {
783- strcpy (buf ,
784- bnxt_tx_port_stats_ext_arr [i ].string );
785- buf += ETH_GSTRING_LEN ;
777+ str = bnxt_tx_port_stats_ext_arr [i ].string ;
778+ ethtool_puts (& buf , str );
786779 }
780+
787781 if (bp -> pri2cos_valid ) {
788782 for (i = 0 ; i < 8 ; i ++ ) {
789- strcpy (buf ,
790- bnxt_rx_bytes_pri_arr [i ].string );
791- buf += ETH_GSTRING_LEN ;
783+ str = bnxt_rx_bytes_pri_arr [i ].string ;
784+ ethtool_puts (& buf , str );
792785 }
786+
793787 for (i = 0 ; i < 8 ; i ++ ) {
794- strcpy (buf ,
795- bnxt_rx_pkts_pri_arr [i ].string );
796- buf += ETH_GSTRING_LEN ;
788+ str = bnxt_rx_pkts_pri_arr [i ].string ;
789+ ethtool_puts (& buf , str );
797790 }
791+
798792 for (i = 0 ; i < 8 ; i ++ ) {
799- strcpy (buf ,
800- bnxt_tx_bytes_pri_arr [i ].string );
801- buf += ETH_GSTRING_LEN ;
793+ str = bnxt_tx_bytes_pri_arr [i ].string ;
794+ ethtool_puts (& buf , str );
802795 }
796+
803797 for (i = 0 ; i < 8 ; i ++ ) {
804- strcpy (buf ,
805- bnxt_tx_pkts_pri_arr [i ].string );
806- buf += ETH_GSTRING_LEN ;
798+ str = bnxt_tx_pkts_pri_arr [i ].string ;
799+ ethtool_puts (& buf , str );
807800 }
808801 }
809802 }
810803 break ;
811804 case ETH_SS_TEST :
812805 if (bp -> num_tests )
813- memcpy ( buf , bp -> test_info -> string ,
814- bp -> num_tests * ETH_GSTRING_LEN );
806+ for ( i = 0 ; i < bp -> num_tests ; i ++ )
807+ ethtool_puts ( & buf , bp -> test_info -> string [ i ] );
815808 break ;
816809 default :
817810 netdev_err (bp -> dev , "bnxt_get_strings invalid request %x\n" ,
0 commit comments