summaryrefslogtreecommitdiffstats
path: root/sys/dev/e1000
diff options
context:
space:
mode:
authorgnn <gnn@FreeBSD.org>2010-06-24 21:17:58 +0000
committergnn <gnn@FreeBSD.org>2010-06-24 21:17:58 +0000
commit866d360f3fad296b08b7b176b2a5e1fa2c0e16e2 (patch)
tree489f5a82b6eadb3f51bdba723e69f897bfa7f548 /sys/dev/e1000
parente02fe12ea6d0bd6499a10a6ac3a7a53177fc4341 (diff)
downloadFreeBSD-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.c17
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);
OpenPOWER on IntegriCloud