staging: et131x: Fix stats->rx_packets accounting
PATCH 1/2 staging: et131x: Fix stats->rx_packets accounting
The net_device_stats->rx_packets counter is not getting updated. This is due to checking a fMP_ADAPTER_LINK_DETECTION flag prior to updating which is never set.
Solved by using netif_carrier_ok() to test for a link, and removing the fMP_ADAPTER_LINK_DETECTION flag, which looks to be a broken mechanism.
Signed-off-by Mark Einon <[email protected]>
--- drivers/staging/et131x/et1310_phy.c | 4 +--- drivers/staging/et131x/et1310_rx.c | 5 ++--- drivers/staging/et131x/et131x_defs.h | 1 - drivers/staging/et131x/et131x_initpci.c | 1 - drivers/staging/et131x/et131x_netdev.c | 4 ---- 5 files changed, 3 insertions(+), 12 deletions(-)
drivers/staging/et131x/et1310_phy.c +1 -3
@@ -750,7 +750,6 @@ void et131x_Mii_check(struct et131x_adapter *etdev,spin_lock_irqsave (&etdev->Lock, flags); etdev->MediaState =NETIF_STATUS_MEDIA_CONNECT ; - etdev->Flags &= ~fMP_ADAPTER_LINK_DETECTION;spin_unlock_irqrestore (&etdev->Lock, flags);
@@ -780,8 +779,7 @@ void et131x_Mii_check(struct et131x_adapter *etdev,* Timer expires, we can report disconnected (handled * in the LinkDetectionDPC). */ -if (!(etdev->Flags & fMP_ADAPTER_LINK_DETECTION) || - (etdev->MediaState ==NETIF_STATUS_MEDIA_DISCONNECT )) { +if ((etdev->MediaState ==NETIF_STATUS_MEDIA_DISCONNECT )) {spin_lock_irqsave (&etdev->Lock, flags); etdev->MediaState =NETIF_STATUS_MEDIA_DISCONNECT ;
drivers/staging/et131x/et1310_rx.c +2 -3
@@ -1126,10 +1126,9 @@ void et131x_handle_recv_interrupt(struct et131x_adapter *etdev)* Free buffer ring. */ if (!etdev->PacketFilter || - !(etdev->Flags & fMP_ADAPTER_LINK_DETECTION) || - rfd->len ==0 ) { + !netif_carrier_ok (etdev->netdev) || + rfd->len ==0 )continue ; - }/* Increment the number of packets we received */ etdev->stats.ipackets++;
drivers/staging/et131x/et131x_defs.h +0 -1
@@ -95,7 +95,6 @@#define fMP_ADAPTER_HARDWARE_ERROR 0x04000000#define fMP_ADAPTER_REMOVE_IN_PROGRESS 0x08000000#define fMP_ADAPTER_HALT_IN_PROGRESS 0x10000000 -#define fMP_ADAPTER_LINK_DETECTION 0x20000000#define fMP_ADAPTER_FAIL_SEND_MASK 0x3ff00000#define fMP_ADAPTER_NOT_READY_MASK 0x3ff00000
drivers/staging/et131x/et131x_initpci.c +0 -1
@@ -312,7 +312,6 @@ void et131x_link_detection_handler(unsigned long data)spin_lock_irqsave (&etdev->Lock, flags); etdev->MediaState =NETIF_STATUS_MEDIA_DISCONNECT ; - etdev->Flags &= ~fMP_ADAPTER_LINK_DETECTION;spin_unlock_irqrestore (&etdev->Lock, flags);
drivers/staging/et131x/et131x_netdev.c +0 -4
@@ -450,10 +450,6 @@ void et131x_tx_timeout(struct net_device *netdev)struct tcb *tcb;unsigned long flags; -/* Just skip this part if the adapter is doing link detection */ -if (etdev->Flags & fMP_ADAPTER_LINK_DETECTION) -return ; -/* Any nonrecoverable hardware error? * Checks adapter->flags for any failure in phy reading */
Signature · 1 line
1.7.4.4
PATCH 2/2 staging: et131x: Remove some unecessary packet accounting code
The ce_stats ipackets and opackets members are only used to update the net_device_stats->[r,t]x_packets counters, so get rid of them.
Signed-off-by Mark Einon <[email protected]>
--- drivers/staging/et131x/et1310_rx.c | 2 +- drivers/staging/et131x/et1310_tx.c | 2 +- drivers/staging/et131x/et131x_adapter.h | 5 ----- drivers/staging/et131x/et131x_netdev.c | 6 +----- 4 files changed, 3 insertions(+), 12 deletions(-)
drivers/staging/et131x/et1310_rx.c +1 -1
@@ -1131,7 +1131,7 @@ void et131x_handle_recv_interrupt(struct et131x_adapter *etdev)continue ;/* Increment the number of packets we received */ - etdev->stats.ipackets++; + etdev->net_stats.rx_packets++;/* Set the status on the packet, either resources or success */ if (etdev->rx_ring.nReadyRecv <RFD_LOW_WATER_MARK ) {
drivers/staging/et131x/et1310_tx.c +1 -1
@@ -673,7 +673,7 @@ inline void et131x_free_send_packet(struct et131x_adapter *etdev,/* Add the TCB to the Ready Q */ spin_lock_irqsave (&etdev->TCBReadyQLock, flags); - etdev->stats.opackets++; + etdev->net_stats.tx_packets++;if (etdev->tx_ring.tcb_qtail) etdev->tx_ring.tcb_qtail->next = tcb;
drivers/staging/et131x/et131x_adapter.h +0 -5
@@ -99,10 +99,6 @@ struct rfd {/* Struct to define some device statistics */ struct ce_stats { -/* Link Input/Output stats */ -uint64_t ipackets;/* # of in packets */ -uint64_t opackets;/* # of out packets */ -/* MIB II variables * * NOTE: atomic_t types are only guaranteed to store 24-bits; if we
@@ -242,7 +238,6 @@ struct et131x_adapter {struct ce_stats stats; struct net_device_stats net_stats; - struct net_device_stats net_stats_prev; };#endif /* __ET131X_ADAPTER_H__ */
drivers/staging/et131x/et131x_netdev.c +1 -5
@@ -88,22 +88,18 @@#include "et131x_adapter.h" #include "et131x.h" -struct net_device_stats *et131x_stats (struct net_device *netdev); -/** * et131x_stats - Return the current device statistics. * @netdev: device whose stats are being queried * * Returns 0 on success, errno on failure (as defined in errno.h) */ -struct net_device_stats *et131x_stats (struct net_device *netdev) +static struct net_device_stats *et131x_stats (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev);struct net_device_stats *stats = &adapter->net_stats;struct ce_stats *devstat = &adapter->stats; - stats->rx_packets = devstat->ipackets; - stats->tx_packets = devstat->opackets; stats->rx_errors = devstat->length_err + devstat->alignment_err + devstat->crc_err + devstat->code_violations + devstat->other_errors; stats->tx_errors = devstat->max_pkt_error;
Signature · 1 line
1.7.4.4