forked from Minki/linux
[BNX2X]: correct statistics
Errors were summed improperly, some stats were missing. Signed-off-by: Eliezer Tamir <eliezert@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
49d6677211
commit
0e39e645b3
@ -4972,39 +4972,37 @@ static void bnx2x_update_net_stats(struct bnx2x *bp)
|
||||
|
||||
nstats->rx_bytes = bnx2x_hilo(&estats->total_bytes_received_hi);
|
||||
|
||||
nstats->tx_bytes =
|
||||
bnx2x_hilo(&estats->total_bytes_transmitted_hi);
|
||||
nstats->tx_bytes = bnx2x_hilo(&estats->total_bytes_transmitted_hi);
|
||||
|
||||
nstats->rx_dropped = estats->checksum_discard +
|
||||
estats->mac_discard;
|
||||
nstats->rx_dropped = estats->checksum_discard + estats->mac_discard;
|
||||
nstats->tx_dropped = 0;
|
||||
|
||||
nstats->multicast =
|
||||
bnx2x_hilo(&estats->total_multicast_packets_transmitted_hi);
|
||||
|
||||
nstats->collisions =
|
||||
estats->single_collision_transmit_frames +
|
||||
estats->multiple_collision_transmit_frames +
|
||||
estats->late_collision_frames +
|
||||
estats->excessive_collision_frames;
|
||||
nstats->collisions = estats->single_collision_transmit_frames +
|
||||
estats->multiple_collision_transmit_frames +
|
||||
estats->late_collision_frames +
|
||||
estats->excessive_collision_frames;
|
||||
|
||||
nstats->rx_length_errors = estats->runt_packets_received +
|
||||
estats->jabber_packets_received;
|
||||
nstats->rx_over_errors = estats->no_buff_discard;
|
||||
nstats->rx_over_errors = estats->brb_discard +
|
||||
estats->brb_truncate_discard;
|
||||
nstats->rx_crc_errors = estats->crc_receive_errors;
|
||||
nstats->rx_frame_errors = estats->alignment_errors;
|
||||
nstats->rx_fifo_errors = estats->brb_discard +
|
||||
estats->brb_truncate_discard;
|
||||
nstats->rx_fifo_errors = estats->no_buff_discard;
|
||||
nstats->rx_missed_errors = estats->xxoverflow_discard;
|
||||
|
||||
nstats->rx_errors = nstats->rx_length_errors +
|
||||
nstats->rx_over_errors +
|
||||
nstats->rx_crc_errors +
|
||||
nstats->rx_frame_errors +
|
||||
nstats->rx_fifo_errors;
|
||||
nstats->rx_fifo_errors +
|
||||
nstats->rx_missed_errors;
|
||||
|
||||
nstats->tx_aborted_errors = estats->late_collision_frames +
|
||||
estats->excessive_collision_frames;
|
||||
estats->excessive_collision_frames;
|
||||
nstats->tx_carrier_errors = estats->false_carrier_detections;
|
||||
nstats->tx_fifo_errors = 0;
|
||||
nstats->tx_heartbeat_errors = 0;
|
||||
@ -8755,81 +8753,87 @@ static void bnx2x_self_test(struct net_device *dev,
|
||||
static struct {
|
||||
char string[ETH_GSTRING_LEN];
|
||||
} bnx2x_stats_str_arr[BNX2X_NUM_STATS] = {
|
||||
{ "rx_bytes"}, /* 0 */
|
||||
{ "rx_error_bytes"}, /* 1 */
|
||||
{ "tx_bytes"}, /* 2 */
|
||||
{ "tx_error_bytes"}, /* 3 */
|
||||
{ "rx_ucast_packets"}, /* 4 */
|
||||
{ "rx_mcast_packets"}, /* 5 */
|
||||
{ "rx_bcast_packets"}, /* 6 */
|
||||
{ "tx_ucast_packets"}, /* 7 */
|
||||
{ "tx_mcast_packets"}, /* 8 */
|
||||
{ "tx_bcast_packets"}, /* 9 */
|
||||
{ "tx_mac_errors"}, /* 10 */
|
||||
{ "tx_carrier_errors"}, /* 11 */
|
||||
{ "rx_crc_errors"}, /* 12 */
|
||||
{ "rx_align_errors"}, /* 13 */
|
||||
{ "tx_single_collisions"}, /* 14 */
|
||||
{ "tx_multi_collisions"}, /* 15 */
|
||||
{ "tx_deferred"}, /* 16 */
|
||||
{ "tx_excess_collisions"}, /* 17 */
|
||||
{ "tx_late_collisions"}, /* 18 */
|
||||
{ "tx_total_collisions"}, /* 19 */
|
||||
{ "rx_fragments"}, /* 20 */
|
||||
{ "rx_jabbers"}, /* 21 */
|
||||
{ "rx_undersize_packets"}, /* 22 */
|
||||
{ "rx_oversize_packets"}, /* 23 */
|
||||
{ "rx_xon_frames"}, /* 24 */
|
||||
{ "rx_xoff_frames"}, /* 25 */
|
||||
{ "tx_xon_frames"}, /* 26 */
|
||||
{ "tx_xoff_frames"}, /* 27 */
|
||||
{ "rx_mac_ctrl_frames"}, /* 28 */
|
||||
{ "rx_filtered_packets"}, /* 29 */
|
||||
{ "rx_discards"}, /* 30 */
|
||||
{ "rx_bytes"},
|
||||
{ "rx_error_bytes"},
|
||||
{ "tx_bytes"},
|
||||
{ "tx_error_bytes"},
|
||||
{ "rx_ucast_packets"},
|
||||
{ "rx_mcast_packets"},
|
||||
{ "rx_bcast_packets"},
|
||||
{ "tx_ucast_packets"},
|
||||
{ "tx_mcast_packets"},
|
||||
{ "tx_bcast_packets"},
|
||||
{ "tx_mac_errors"}, /* 10 */
|
||||
{ "tx_carrier_errors"},
|
||||
{ "rx_crc_errors"},
|
||||
{ "rx_align_errors"},
|
||||
{ "tx_single_collisions"},
|
||||
{ "tx_multi_collisions"},
|
||||
{ "tx_deferred"},
|
||||
{ "tx_excess_collisions"},
|
||||
{ "tx_late_collisions"},
|
||||
{ "tx_total_collisions"},
|
||||
{ "rx_fragments"}, /* 20 */
|
||||
{ "rx_jabbers"},
|
||||
{ "rx_undersize_packets"},
|
||||
{ "rx_oversize_packets"},
|
||||
{ "rx_xon_frames"},
|
||||
{ "rx_xoff_frames"},
|
||||
{ "tx_xon_frames"},
|
||||
{ "tx_xoff_frames"},
|
||||
{ "rx_mac_ctrl_frames"},
|
||||
{ "rx_filtered_packets"},
|
||||
{ "rx_discards"}, /* 30 */
|
||||
{ "brb_discard"},
|
||||
{ "brb_truncate"},
|
||||
{ "xxoverflow"}
|
||||
};
|
||||
|
||||
#define STATS_OFFSET32(offset_name) \
|
||||
(offsetof(struct bnx2x_eth_stats, offset_name) / 4)
|
||||
|
||||
static unsigned long bnx2x_stats_offset_arr[BNX2X_NUM_STATS] = {
|
||||
STATS_OFFSET32(total_bytes_received_hi), /* 0 */
|
||||
STATS_OFFSET32(stat_IfHCInBadOctets_hi), /* 1 */
|
||||
STATS_OFFSET32(total_bytes_transmitted_hi), /* 2 */
|
||||
STATS_OFFSET32(stat_IfHCOutBadOctets_hi), /* 3 */
|
||||
STATS_OFFSET32(total_unicast_packets_received_hi), /* 4 */
|
||||
STATS_OFFSET32(total_multicast_packets_received_hi), /* 5 */
|
||||
STATS_OFFSET32(total_broadcast_packets_received_hi), /* 6 */
|
||||
STATS_OFFSET32(total_unicast_packets_transmitted_hi), /* 7 */
|
||||
STATS_OFFSET32(total_multicast_packets_transmitted_hi), /* 8 */
|
||||
STATS_OFFSET32(total_broadcast_packets_transmitted_hi), /* 9 */
|
||||
STATS_OFFSET32(stat_Dot3statsInternalMacTransmitErrors), /* 10 */
|
||||
STATS_OFFSET32(stat_Dot3StatsCarrierSenseErrors), /* 11 */
|
||||
STATS_OFFSET32(crc_receive_errors), /* 12 */
|
||||
STATS_OFFSET32(alignment_errors), /* 13 */
|
||||
STATS_OFFSET32(single_collision_transmit_frames), /* 14 */
|
||||
STATS_OFFSET32(multiple_collision_transmit_frames), /* 15 */
|
||||
STATS_OFFSET32(stat_Dot3StatsDeferredTransmissions), /* 16 */
|
||||
STATS_OFFSET32(excessive_collision_frames), /* 17 */
|
||||
STATS_OFFSET32(late_collision_frames), /* 18 */
|
||||
STATS_OFFSET32(number_of_bugs_found_in_stats_spec), /* 19 */
|
||||
STATS_OFFSET32(runt_packets_received), /* 20 */
|
||||
STATS_OFFSET32(jabber_packets_received), /* 21 */
|
||||
STATS_OFFSET32(error_runt_packets_received), /* 22 */
|
||||
STATS_OFFSET32(error_jabber_packets_received), /* 23 */
|
||||
STATS_OFFSET32(pause_xon_frames_received), /* 24 */
|
||||
STATS_OFFSET32(pause_xoff_frames_received), /* 25 */
|
||||
STATS_OFFSET32(pause_xon_frames_transmitted), /* 26 */
|
||||
STATS_OFFSET32(pause_xoff_frames_transmitted), /* 27 */
|
||||
STATS_OFFSET32(control_frames_received), /* 28 */
|
||||
STATS_OFFSET32(mac_filter_discard), /* 29 */
|
||||
STATS_OFFSET32(no_buff_discard), /* 30 */
|
||||
STATS_OFFSET32(total_bytes_received_hi),
|
||||
STATS_OFFSET32(stat_IfHCInBadOctets_hi),
|
||||
STATS_OFFSET32(total_bytes_transmitted_hi),
|
||||
STATS_OFFSET32(stat_IfHCOutBadOctets_hi),
|
||||
STATS_OFFSET32(total_unicast_packets_received_hi),
|
||||
STATS_OFFSET32(total_multicast_packets_received_hi),
|
||||
STATS_OFFSET32(total_broadcast_packets_received_hi),
|
||||
STATS_OFFSET32(total_unicast_packets_transmitted_hi),
|
||||
STATS_OFFSET32(total_multicast_packets_transmitted_hi),
|
||||
STATS_OFFSET32(total_broadcast_packets_transmitted_hi),
|
||||
STATS_OFFSET32(stat_Dot3statsInternalMacTransmitErrors), /* 10 */
|
||||
STATS_OFFSET32(stat_Dot3StatsCarrierSenseErrors),
|
||||
STATS_OFFSET32(crc_receive_errors),
|
||||
STATS_OFFSET32(alignment_errors),
|
||||
STATS_OFFSET32(single_collision_transmit_frames),
|
||||
STATS_OFFSET32(multiple_collision_transmit_frames),
|
||||
STATS_OFFSET32(stat_Dot3StatsDeferredTransmissions),
|
||||
STATS_OFFSET32(excessive_collision_frames),
|
||||
STATS_OFFSET32(late_collision_frames),
|
||||
STATS_OFFSET32(number_of_bugs_found_in_stats_spec),
|
||||
STATS_OFFSET32(runt_packets_received), /* 20 */
|
||||
STATS_OFFSET32(jabber_packets_received),
|
||||
STATS_OFFSET32(error_runt_packets_received),
|
||||
STATS_OFFSET32(error_jabber_packets_received),
|
||||
STATS_OFFSET32(pause_xon_frames_received),
|
||||
STATS_OFFSET32(pause_xoff_frames_received),
|
||||
STATS_OFFSET32(pause_xon_frames_transmitted),
|
||||
STATS_OFFSET32(pause_xoff_frames_transmitted),
|
||||
STATS_OFFSET32(control_frames_received),
|
||||
STATS_OFFSET32(mac_filter_discard),
|
||||
STATS_OFFSET32(no_buff_discard), /* 30 */
|
||||
STATS_OFFSET32(brb_discard),
|
||||
STATS_OFFSET32(brb_truncate_discard),
|
||||
STATS_OFFSET32(xxoverflow_discard)
|
||||
};
|
||||
|
||||
static u8 bnx2x_stats_len_arr[BNX2X_NUM_STATS] = {
|
||||
8, 0, 8, 0, 8, 8, 8, 8, 8, 8,
|
||||
4, 0, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4,
|
||||
4, 4, 4, 4
|
||||
};
|
||||
|
||||
static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
|
||||
@ -9372,11 +9376,6 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
static struct net_device_stats *bnx2x_get_stats(struct net_device *dev)
|
||||
{
|
||||
return &dev->stats;
|
||||
}
|
||||
|
||||
/* Called with rtnl_lock */
|
||||
static int bnx2x_open(struct net_device *dev)
|
||||
{
|
||||
@ -9784,7 +9783,6 @@ static int __devinit bnx2x_init_one(struct pci_dev *pdev,
|
||||
dev->hard_start_xmit = bnx2x_start_xmit;
|
||||
dev->watchdog_timeo = TX_TIMEOUT;
|
||||
|
||||
dev->get_stats = bnx2x_get_stats;
|
||||
dev->ethtool_ops = &bnx2x_ethtool_ops;
|
||||
dev->open = bnx2x_open;
|
||||
dev->stop = bnx2x_close;
|
||||
|
@ -854,8 +854,8 @@ struct bnx2x {
|
||||
#define MAX_SPQ_PENDING 8
|
||||
|
||||
|
||||
#define BNX2X_NUM_STATS 31
|
||||
#define BNX2X_NUM_TESTS 2
|
||||
#define BNX2X_NUM_STATS 34
|
||||
#define BNX2X_NUM_TESTS 1
|
||||
|
||||
|
||||
#define DPM_TRIGER_TYPE 0x40
|
||||
|
Loading…
Reference in New Issue
Block a user