mirror of
https://github.com/ipxe/ipxe
synced 2025-12-28 10:32:52 +03:00
[netdevice] Retain and report detailed error breakdowns
netdev_rx_err() and netdev_tx_complete_err() get passed the error code, but currently use it only in debug messages. Retain error numbers and frequencey counts for up to NETDEV_MAX_UNIQUE_ERRORS (4) different errors for each of TX and RX. This allows the "ifstat" command to report the reasons for TX/RX errors in most cases, even in non-debug builds.
This commit is contained in:
@@ -193,16 +193,25 @@ struct net_device_operations {
|
||||
void ( * irq ) ( struct net_device *netdev, int enable );
|
||||
};
|
||||
|
||||
/** Network device error */
|
||||
struct net_device_error {
|
||||
/** Error status code */
|
||||
int rc;
|
||||
/** Error count */
|
||||
unsigned int count;
|
||||
};
|
||||
|
||||
/** Maximum number of unique errors that we will keep track of */
|
||||
#define NETDEV_MAX_UNIQUE_ERRORS 4
|
||||
|
||||
/** Network device statistics */
|
||||
struct net_device_stats {
|
||||
/** Count of successfully completed transmissions */
|
||||
unsigned int tx_ok;
|
||||
/** Count of transmission errors */
|
||||
unsigned int tx_err;
|
||||
/** Count of successfully received packets */
|
||||
unsigned int rx_ok;
|
||||
/** Count of reception errors */
|
||||
unsigned int rx_err;
|
||||
/** Count of successful completions */
|
||||
unsigned int good;
|
||||
/** Count of error completions */
|
||||
unsigned int bad;
|
||||
/** Error breakdowns */
|
||||
struct net_device_error errors[NETDEV_MAX_UNIQUE_ERRORS];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -250,8 +259,10 @@ struct net_device {
|
||||
struct list_head tx_queue;
|
||||
/** RX packet queue */
|
||||
struct list_head rx_queue;
|
||||
/** Device statistics */
|
||||
struct net_device_stats stats;
|
||||
/** TX statistics */
|
||||
struct net_device_stats tx_stats;
|
||||
/** RX statistics */
|
||||
struct net_device_stats rx_stats;
|
||||
|
||||
/** Configuration settings applicable to this device */
|
||||
struct simple_settings settings;
|
||||
|
||||
Reference in New Issue
Block a user