diff options
author | gnn <gnn@FreeBSD.org> | 2010-06-24 21:17:58 +0000 |
---|---|---|
committer | gnn <gnn@FreeBSD.org> | 2010-06-24 21:17:58 +0000 |
commit | 866d360f3fad296b08b7b176b2a5e1fa2c0e16e2 (patch) | |
tree | 489f5a82b6eadb3f51bdba723e69f897bfa7f548 /sys/dev/e1000 | |
parent | e02fe12ea6d0bd6499a10a6ac3a7a53177fc4341 (diff) | |
download | FreeBSD-src-866d360f3fad296b08b7b176b2a5e1fa2c0e16e2.zip FreeBSD-src-866d360f3fad296b08b7b176b2a5e1fa2c0e16e2.tar.gz |
Make sure that all the exposed counters and variables are actually
being updated.
Pointed out by: jfv
Diffstat (limited to 'sys/dev/e1000')
-rw-r--r-- | sys/dev/e1000/if_igb.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c index 3901e0d..adabcfe 100644 --- a/sys/dev/e1000/if_igb.c +++ b/sys/dev/e1000/if_igb.c @@ -4814,6 +4814,18 @@ igb_update_stats_counters(struct adapter *adapter) /* Tx Errors */ ifp->if_oerrors = adapter->stats.ecol + adapter->stats.latecol + adapter->watchdog_events; + + /* Driver specific counters */ + adapter->device_control = E1000_READ_REG(&adapter->hw, E1000_CTRL); + adapter->rx_control = E1000_READ_REG(&adapter->hw, E1000_RCTL); + adapter->int_mask = E1000_READ_REG(&adapter->hw, E1000_IMS); + adapter->eint_mask = E1000_READ_REG(&adapter->hw, E1000_EIMS); + adapter->packet_buf_alloc_tx = ((E1000_READ_REG(&adapter->hw, E1000_PBA) + & 0xffff0000) >> 16); + + adapter->packet_buf_alloc_rx = (E1000_READ_REG(&adapter->hw, E1000_PBA) + & 0xffff); + } @@ -4897,6 +4909,11 @@ igb_add_hw_stats(struct adapter *adapter) } for (int i = 0; i < adapter->num_queues; i++, rxr++) { + snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); + queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, + CTLFLAG_RD, NULL, "Queue Name"); + queue_list = SYSCTL_CHILDREN(queue_node); + struct lro_ctrl *lro = &rxr->lro; snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); |