提交 785b6f97 编写于 作者: S Steve Glendinning 提交者: David S. Miller

smsc911x: define status word positions as constants

The vast majority of bit constants in this driver are defined in the
header file, but TX and RX status word bits are not.  This patch (which
should make no functional change) defines these, to make the driver
slightly more readable.
Signed-off-by: NSteve Glendinning <steve.glendinning@smsc.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 2e1ab634
...@@ -895,22 +895,22 @@ static void smsc911x_tx_update_txcounters(struct net_device *dev) ...@@ -895,22 +895,22 @@ static void smsc911x_tx_update_txcounters(struct net_device *dev)
SMSC_WARNING(HW, SMSC_WARNING(HW,
"Packet tag reserved bit is high"); "Packet tag reserved bit is high");
} else { } else {
if (unlikely(tx_stat & 0x00008000)) { if (unlikely(tx_stat & TX_STS_ES_)) {
dev->stats.tx_errors++; dev->stats.tx_errors++;
} else { } else {
dev->stats.tx_packets++; dev->stats.tx_packets++;
dev->stats.tx_bytes += (tx_stat >> 16); dev->stats.tx_bytes += (tx_stat >> 16);
} }
if (unlikely(tx_stat & 0x00000100)) { if (unlikely(tx_stat & TX_STS_EXCESS_COL_)) {
dev->stats.collisions += 16; dev->stats.collisions += 16;
dev->stats.tx_aborted_errors += 1; dev->stats.tx_aborted_errors += 1;
} else { } else {
dev->stats.collisions += dev->stats.collisions +=
((tx_stat >> 3) & 0xF); ((tx_stat >> 3) & 0xF);
} }
if (unlikely(tx_stat & 0x00000800)) if (unlikely(tx_stat & TX_STS_LOST_CARRIER_))
dev->stats.tx_carrier_errors += 1; dev->stats.tx_carrier_errors += 1;
if (unlikely(tx_stat & 0x00000200)) { if (unlikely(tx_stat & TX_STS_LATE_COL_)) {
dev->stats.collisions++; dev->stats.collisions++;
dev->stats.tx_aborted_errors++; dev->stats.tx_aborted_errors++;
} }
...@@ -924,19 +924,17 @@ smsc911x_rx_counterrors(struct net_device *dev, unsigned int rxstat) ...@@ -924,19 +924,17 @@ smsc911x_rx_counterrors(struct net_device *dev, unsigned int rxstat)
{ {
int crc_err = 0; int crc_err = 0;
if (unlikely(rxstat & 0x00008000)) { if (unlikely(rxstat & RX_STS_ES_)) {
dev->stats.rx_errors++; dev->stats.rx_errors++;
if (unlikely(rxstat & 0x00000002)) { if (unlikely(rxstat & RX_STS_CRC_ERR_)) {
dev->stats.rx_crc_errors++; dev->stats.rx_crc_errors++;
crc_err = 1; crc_err = 1;
} }
} }
if (likely(!crc_err)) { if (likely(!crc_err)) {
if (unlikely((rxstat & 0x00001020) == 0x00001020)) { if (unlikely((rxstat & RX_STS_FRAME_TYPE_) &&
/* Frame type indicates length, (rxstat & RX_STS_LENGTH_ERR_)))
* and length error is set */
dev->stats.rx_length_errors++; dev->stats.rx_length_errors++;
}
if (rxstat & RX_STS_MCAST_) if (rxstat & RX_STS_MCAST_)
dev->stats.multicast++; dev->stats.multicast++;
} }
......
...@@ -81,12 +81,19 @@ ...@@ -81,12 +81,19 @@
#define RX_STATUS_FIFO 0x40 #define RX_STATUS_FIFO 0x40
#define RX_STS_ES_ 0x00008000 #define RX_STS_ES_ 0x00008000
#define RX_STS_LENGTH_ERR_ 0x00001000
#define RX_STS_MCAST_ 0x00000400 #define RX_STS_MCAST_ 0x00000400
#define RX_STS_FRAME_TYPE_ 0x00000020
#define RX_STS_CRC_ERR_ 0x00000002
#define RX_STATUS_FIFO_PEEK 0x44 #define RX_STATUS_FIFO_PEEK 0x44
#define TX_STATUS_FIFO 0x48 #define TX_STATUS_FIFO 0x48
#define TX_STS_ES_ 0x00008000 #define TX_STS_ES_ 0x00008000
#define TX_STS_LOST_CARRIER_ 0x00000800
#define TX_STS_NO_CARRIER_ 0x00000400
#define TX_STS_LATE_COL_ 0x00000200
#define TX_STS_EXCESS_COL_ 0x00000100
#define TX_STATUS_FIFO_PEEK 0x4C #define TX_STATUS_FIFO_PEEK 0x4C
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册