Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 103022
b: refs/heads/master
c: 4b8e365
h: refs/heads/master
v: v3
  • Loading branch information
Lennert Buytenhek committed Jun 12, 2008
1 parent 9dd384b commit 231d7ce
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 59 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0a6cf74dd5ec440b7681880984d9455353f673ec
refs/heads/master: 4b8e3655978690cee49416c61c5cccf166fd390b
92 changes: 34 additions & 58 deletions trunk/drivers/net/mv643xx_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,42 +169,6 @@ static char mv643xx_driver_version[] = "1.0";
#define PORT_DEFAULT_TRANSMIT_QUEUE_SIZE 800
#define PORT_DEFAULT_RECEIVE_QUEUE_SIZE 400

/* Gigabit Ethernet Unit Global Registers */

/* MIB Counters register definitions */
#define ETH_MIB_GOOD_OCTETS_RECEIVED_LOW 0x0
#define ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH 0x4
#define ETH_MIB_BAD_OCTETS_RECEIVED 0x8
#define ETH_MIB_INTERNAL_MAC_TRANSMIT_ERR 0xc
#define ETH_MIB_GOOD_FRAMES_RECEIVED 0x10
#define ETH_MIB_BAD_FRAMES_RECEIVED 0x14
#define ETH_MIB_BROADCAST_FRAMES_RECEIVED 0x18
#define ETH_MIB_MULTICAST_FRAMES_RECEIVED 0x1c
#define ETH_MIB_FRAMES_64_OCTETS 0x20
#define ETH_MIB_FRAMES_65_TO_127_OCTETS 0x24
#define ETH_MIB_FRAMES_128_TO_255_OCTETS 0x28
#define ETH_MIB_FRAMES_256_TO_511_OCTETS 0x2c
#define ETH_MIB_FRAMES_512_TO_1023_OCTETS 0x30
#define ETH_MIB_FRAMES_1024_TO_MAX_OCTETS 0x34
#define ETH_MIB_GOOD_OCTETS_SENT_LOW 0x38
#define ETH_MIB_GOOD_OCTETS_SENT_HIGH 0x3c
#define ETH_MIB_GOOD_FRAMES_SENT 0x40
#define ETH_MIB_EXCESSIVE_COLLISION 0x44
#define ETH_MIB_MULTICAST_FRAMES_SENT 0x48
#define ETH_MIB_BROADCAST_FRAMES_SENT 0x4c
#define ETH_MIB_UNREC_MAC_CONTROL_RECEIVED 0x50
#define ETH_MIB_FC_SENT 0x54
#define ETH_MIB_GOOD_FC_RECEIVED 0x58
#define ETH_MIB_BAD_FC_RECEIVED 0x5c
#define ETH_MIB_UNDERSIZE_RECEIVED 0x60
#define ETH_MIB_FRAGMENTS_RECEIVED 0x64
#define ETH_MIB_OVERSIZE_RECEIVED 0x68
#define ETH_MIB_JABBER_RECEIVED 0x6c
#define ETH_MIB_MAC_RECEIVE_ERROR 0x70
#define ETH_MIB_BAD_CRC_EVENT 0x74
#define ETH_MIB_COLLISION 0x78
#define ETH_MIB_LATE_COLLISION 0x7c

/* Port serial status reg (PSR) */
#define ETH_INTERFACE_PCM 0x00000001
#define ETH_LINK_IS_UP 0x00000002
Expand Down Expand Up @@ -1156,8 +1120,7 @@ static void eth_clear_mib_counters(struct mv643xx_private *mp)
int i;

/* Perform dummy reads from MIB counters */
for (i = ETH_MIB_GOOD_OCTETS_RECEIVED_LOW; i < ETH_MIB_LATE_COLLISION;
i += 4)
for (i = 0; i < 0x80; i += 4)
rdl(mp, MIB_COUNTERS(port_num) + i);
}

Expand All @@ -1169,26 +1132,39 @@ static inline u32 read_mib(struct mv643xx_private *mp, int offset)
static void eth_update_mib_counters(struct mv643xx_private *mp)
{
struct mv643xx_mib_counters *p = &mp->mib_counters;
int offset;

p->good_octets_received +=
read_mib(mp, ETH_MIB_GOOD_OCTETS_RECEIVED_LOW);
p->good_octets_received +=
(u64)read_mib(mp, ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH) << 32;

for (offset = ETH_MIB_BAD_OCTETS_RECEIVED;
offset <= ETH_MIB_FRAMES_1024_TO_MAX_OCTETS;
offset += 4)
*(u32 *)((char *)p + offset) += read_mib(mp, offset);

p->good_octets_sent += read_mib(mp, ETH_MIB_GOOD_OCTETS_SENT_LOW);
p->good_octets_sent +=
(u64)read_mib(mp, ETH_MIB_GOOD_OCTETS_SENT_HIGH) << 32;

for (offset = ETH_MIB_GOOD_FRAMES_SENT;
offset <= ETH_MIB_LATE_COLLISION;
offset += 4)
*(u32 *)((char *)p + offset) += read_mib(mp, offset);

p->good_octets_received += read_mib(mp, 0x00);
p->good_octets_received += (u64)read_mib(mp, 0x04) << 32;
p->bad_octets_received += read_mib(mp, 0x08);
p->internal_mac_transmit_err += read_mib(mp, 0x0c);
p->good_frames_received += read_mib(mp, 0x10);
p->bad_frames_received += read_mib(mp, 0x14);
p->broadcast_frames_received += read_mib(mp, 0x18);
p->multicast_frames_received += read_mib(mp, 0x1c);
p->frames_64_octets += read_mib(mp, 0x20);
p->frames_65_to_127_octets += read_mib(mp, 0x24);
p->frames_128_to_255_octets += read_mib(mp, 0x28);
p->frames_256_to_511_octets += read_mib(mp, 0x2c);
p->frames_512_to_1023_octets += read_mib(mp, 0x30);
p->frames_1024_to_max_octets += read_mib(mp, 0x34);
p->good_octets_sent += read_mib(mp, 0x38);
p->good_octets_sent += (u64)read_mib(mp, 0x3c) << 32;
p->good_frames_sent += read_mib(mp, 0x40);
p->excessive_collision += read_mib(mp, 0x44);
p->multicast_frames_sent += read_mib(mp, 0x48);
p->broadcast_frames_sent += read_mib(mp, 0x4c);
p->unrec_mac_control_received += read_mib(mp, 0x50);
p->fc_sent += read_mib(mp, 0x54);
p->good_fc_received += read_mib(mp, 0x58);
p->bad_fc_received += read_mib(mp, 0x5c);
p->undersize_received += read_mib(mp, 0x60);
p->fragments_received += read_mib(mp, 0x64);
p->oversize_received += read_mib(mp, 0x68);
p->jabber_received += read_mib(mp, 0x6c);
p->mac_receive_error += read_mib(mp, 0x70);
p->bad_crc_event += read_mib(mp, 0x74);
p->collision += read_mib(mp, 0x78);
p->late_collision += read_mib(mp, 0x7c);
}


Expand Down

0 comments on commit 231d7ce

Please sign in to comment.