Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
Show All 12 Lines | |||||
struct sysctl_oid_list *coal_list; | struct sysctl_oid_list *coal_list; | ||||
const char *pnameunit; | const char *pnameunit; | ||||
dev = priv->dev; | dev = priv->dev; | ||||
ctx = &priv->conf_ctx; | ctx = &priv->conf_ctx; | ||||
pnameunit = device_get_nameunit(priv->mdev->pdev->dev.bsddev); | pnameunit = device_get_nameunit(priv->mdev->pdev->dev.bsddev); | ||||
sysctl_ctx_init(ctx); | sysctl_ctx_init(ctx); | ||||
priv->conf_sysctl = SYSCTL_ADD_NODE(ctx, SYSCTL_STATIC_CHILDREN(_hw), | priv->conf_sysctl = SYSCTL_ADD_NODE(ctx, SYSCTL_STATIC_CHILDREN(_hw), | ||||
OID_AUTO, dev->if_xname, CTLFLAG_RD, 0, "mlx4 10gig ethernet"); | OID_AUTO, dev->if_xname, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | ||||
"mlx4 10gig ethernet"); | |||||
node = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(priv->conf_sysctl), OID_AUTO, | node = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(priv->conf_sysctl), OID_AUTO, | ||||
"conf", CTLFLAG_RD, NULL, "Configuration"); | "conf", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Configuration"); | ||||
node_list = SYSCTL_CHILDREN(node); | node_list = SYSCTL_CHILDREN(node); | ||||
SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "msg_enable", | SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "msg_enable", | ||||
CTLFLAG_RW, &priv->msg_enable, 0, | CTLFLAG_RW, &priv->msg_enable, 0, | ||||
"Driver message enable bitfield"); | "Driver message enable bitfield"); | ||||
SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "rx_rings", | SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "rx_rings", | ||||
CTLFLAG_RD, &priv->rx_ring_num, 0, | CTLFLAG_RD, &priv->rx_ring_num, 0, | ||||
"Number of receive rings"); | "Number of receive rings"); | ||||
Show All 15 Lines | |||||
SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "port_num", | SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "port_num", | ||||
CTLFLAG_RD, &priv->port, 0, | CTLFLAG_RD, &priv->port, 0, | ||||
"Port Number"); | "Port Number"); | ||||
SYSCTL_ADD_STRING(ctx, node_list, OID_AUTO, "device_name", | SYSCTL_ADD_STRING(ctx, node_list, OID_AUTO, "device_name", | ||||
CTLFLAG_RD, __DECONST(void *, pnameunit), 0, | CTLFLAG_RD, __DECONST(void *, pnameunit), 0, | ||||
"PCI device name"); | "PCI device name"); | ||||
/* Add coalescer configuration. */ | /* Add coalescer configuration. */ | ||||
coal = SYSCTL_ADD_NODE(ctx, node_list, OID_AUTO, | coal = SYSCTL_ADD_NODE(ctx, node_list, OID_AUTO, | ||||
"coalesce", CTLFLAG_RD, NULL, "Interrupt coalesce configuration"); | "coalesce", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, | ||||
"Interrupt coalesce configuration"); | |||||
coal_list = SYSCTL_CHILDREN(coal); | coal_list = SYSCTL_CHILDREN(coal); | ||||
SYSCTL_ADD_UINT(ctx, coal_list, OID_AUTO, "pkt_rate_low", | SYSCTL_ADD_UINT(ctx, coal_list, OID_AUTO, "pkt_rate_low", | ||||
CTLFLAG_RW, &priv->pkt_rate_low, 0, | CTLFLAG_RW, &priv->pkt_rate_low, 0, | ||||
"Packets per-second for minimum delay"); | "Packets per-second for minimum delay"); | ||||
SYSCTL_ADD_UINT(ctx, coal_list, OID_AUTO, "rx_usecs_low", | SYSCTL_ADD_UINT(ctx, coal_list, OID_AUTO, "rx_usecs_low", | ||||
CTLFLAG_RW, &priv->rx_usecs_low, 0, | CTLFLAG_RW, &priv->rx_usecs_low, 0, | ||||
"Minimum RX delay in micro-seconds"); | "Minimum RX delay in micro-seconds"); | ||||
SYSCTL_ADD_UINT(ctx, coal_list, OID_AUTO, "pkt_rate_high", | SYSCTL_ADD_UINT(ctx, coal_list, OID_AUTO, "pkt_rate_high", | ||||
Show All 23 Lines | |||||
struct mlx4_en_tx_ring *tx_ring; | struct mlx4_en_tx_ring *tx_ring; | ||||
struct mlx4_en_rx_ring *rx_ring; | struct mlx4_en_rx_ring *rx_ring; | ||||
char namebuf[128]; | char namebuf[128]; | ||||
int i; | int i; | ||||
ctx = &priv->stat_ctx; | ctx = &priv->stat_ctx; | ||||
sysctl_ctx_init(ctx); | sysctl_ctx_init(ctx); | ||||
priv->stat_sysctl = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(priv->conf_sysctl), OID_AUTO, | priv->stat_sysctl = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(priv->conf_sysctl), OID_AUTO, | ||||
"stat", CTLFLAG_RD, NULL, "Statistics"); | "stat", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Statistics"); | ||||
node_list = SYSCTL_CHILDREN(priv->stat_sysctl); | node_list = SYSCTL_CHILDREN(priv->stat_sysctl); | ||||
#ifdef MLX4_EN_PERF_STAT | #ifdef MLX4_EN_PERF_STAT | ||||
SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "tx_poll", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "tx_poll", CTLFLAG_RD, | ||||
&priv->pstats.tx_poll, "TX Poll calls"); | &priv->pstats.tx_poll, "TX Poll calls"); | ||||
SYSCTL_ADD_QUAD(ctx, node_list, OID_AUTO, "tx_pktsz_avg", CTLFLAG_RD, | SYSCTL_ADD_QUAD(ctx, node_list, OID_AUTO, "tx_pktsz_avg", CTLFLAG_RD, | ||||
&priv->pstats.tx_pktsz_avg, "TX average packet size"); | &priv->pstats.tx_pktsz_avg, "TX average packet size"); | ||||
SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "inflight_avg", CTLFLAG_RD, | SYSCTL_ADD_UINT(ctx, node_list, OID_AUTO, "inflight_avg", CTLFLAG_RD, | ||||
Show All 24 Lines | |||||
SYSCTL_ADD_U64(ctx, node_list, OID_AUTO, "tx_gt_1548_bytes_packets", CTLFLAG_RD, | SYSCTL_ADD_U64(ctx, node_list, OID_AUTO, "tx_gt_1548_bytes_packets", CTLFLAG_RD, | ||||
&priv->pkstats.tx_gt_1548_bytes_packets, 0, | &priv->pkstats.tx_gt_1548_bytes_packets, 0, | ||||
"TX Greater Then 1548 Bytes Packets"); | "TX Greater Then 1548 Bytes Packets"); | ||||
for (i = 0; i < priv->tx_ring_num; i++) { | for (i = 0; i < priv->tx_ring_num; i++) { | ||||
tx_ring = priv->tx_ring[i]; | tx_ring = priv->tx_ring[i]; | ||||
snprintf(namebuf, sizeof(namebuf), "tx_ring%d", i); | snprintf(namebuf, sizeof(namebuf), "tx_ring%d", i); | ||||
ring_node = SYSCTL_ADD_NODE(ctx, node_list, OID_AUTO, namebuf, | ring_node = SYSCTL_ADD_NODE(ctx, node_list, OID_AUTO, namebuf, | ||||
CTLFLAG_RD, NULL, "TX Ring"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "TX Ring"); | ||||
ring_list = SYSCTL_CHILDREN(ring_node); | ring_list = SYSCTL_CHILDREN(ring_node); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "packets", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "packets", | ||||
CTLFLAG_RD, &tx_ring->packets, 0, "TX packets"); | CTLFLAG_RD, &tx_ring->packets, 0, "TX packets"); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "bytes", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "bytes", | ||||
CTLFLAG_RD, &tx_ring->bytes, 0, "TX bytes"); | CTLFLAG_RD, &tx_ring->bytes, 0, "TX bytes"); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "tso_packets", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "tso_packets", | ||||
CTLFLAG_RD, &tx_ring->tso_packets, 0, "TSO packets"); | CTLFLAG_RD, &tx_ring->tso_packets, 0, "TSO packets"); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "defrag_attempts", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "defrag_attempts", | ||||
CTLFLAG_RD, &tx_ring->defrag_attempts, 0, | CTLFLAG_RD, &tx_ring->defrag_attempts, 0, | ||||
"Oversized chains defragged"); | "Oversized chains defragged"); | ||||
} | } | ||||
for (i = 0; i < priv->rx_ring_num; i++) { | for (i = 0; i < priv->rx_ring_num; i++) { | ||||
rx_ring = priv->rx_ring[i]; | rx_ring = priv->rx_ring[i]; | ||||
snprintf(namebuf, sizeof(namebuf), "rx_ring%d", i); | snprintf(namebuf, sizeof(namebuf), "rx_ring%d", i); | ||||
ring_node = SYSCTL_ADD_NODE(ctx, node_list, OID_AUTO, namebuf, | ring_node = SYSCTL_ADD_NODE(ctx, node_list, OID_AUTO, namebuf, | ||||
CTLFLAG_RD, NULL, "RX Ring"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "RX Ring"); | ||||
ring_list = SYSCTL_CHILDREN(ring_node); | ring_list = SYSCTL_CHILDREN(ring_node); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "packets", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "packets", | ||||
CTLFLAG_RD, &rx_ring->packets, 0, "RX packets"); | CTLFLAG_RD, &rx_ring->packets, 0, "RX packets"); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "bytes", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "bytes", | ||||
CTLFLAG_RD, &rx_ring->bytes, 0, "RX bytes"); | CTLFLAG_RD, &rx_ring->bytes, 0, "RX bytes"); | ||||
SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "error", | SYSCTL_ADD_U64(ctx, ring_list, OID_AUTO, "error", | ||||
CTLFLAG_RD, &rx_ring->errors, 0, "RX soft errors"); | CTLFLAG_RD, &rx_ring->errors, 0, "RX soft errors"); | ||||
} | } | ||||
Show All 12 Lines |