Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ixgbe/if_ix.c
Show All 12 Lines | |||||
for (i = 0, tx_que = adapter->tx_queues; i < adapter->num_tx_queues; i++, tx_que++) { | for (i = 0, tx_que = adapter->tx_queues; i < adapter->num_tx_queues; i++, tx_que++) { | ||||
struct tx_ring *txr = &tx_que->txr; | struct tx_ring *txr = &tx_que->txr; | ||||
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); | snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); | ||||
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, | queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, | ||||
CTLFLAG_RD, NULL, "Queue Name"); | CTLFLAG_RD, NULL, "Queue Name"); | ||||
queue_list = SYSCTL_CHILDREN(queue_node); | queue_list = SYSCTL_CHILDREN(queue_node); | ||||
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_head", | SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_head", | ||||
CTLTYPE_UINT | CTLFLAG_RD, txr, sizeof(txr), | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
txr, sizeof(txr), | |||||
ixgbe_sysctl_tdh_handler, "IU", "Transmit Descriptor Head"); | ixgbe_sysctl_tdh_handler, "IU", "Transmit Descriptor Head"); | ||||
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_tail", | SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_tail", | ||||
CTLTYPE_UINT | CTLFLAG_RD, txr, sizeof(txr), | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
txr, sizeof(txr), | |||||
ixgbe_sysctl_tdt_handler, "IU", "Transmit Descriptor Tail"); | ixgbe_sysctl_tdt_handler, "IU", "Transmit Descriptor Tail"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "tso_tx", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "tso_tx", | ||||
CTLFLAG_RD, &txr->tso_tx, "TSO"); | CTLFLAG_RD, &txr->tso_tx, "TSO"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "tx_packets", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "tx_packets", | ||||
CTLFLAG_RD, &txr->total_packets, | CTLFLAG_RD, &txr->total_packets, | ||||
"Queue Packets Transmitted"); | "Queue Packets Transmitted"); | ||||
} | } | ||||
for (i = 0, rx_que = adapter->rx_queues; i < adapter->num_rx_queues; i++, rx_que++) { | for (i = 0, rx_que = adapter->rx_queues; i < adapter->num_rx_queues; i++, rx_que++) { | ||||
struct rx_ring *rxr = &rx_que->rxr; | struct rx_ring *rxr = &rx_que->rxr; | ||||
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); | snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); | ||||
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, | queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf, | ||||
CTLFLAG_RD, NULL, "Queue Name"); | CTLFLAG_RD, NULL, "Queue Name"); | ||||
queue_list = SYSCTL_CHILDREN(queue_node); | queue_list = SYSCTL_CHILDREN(queue_node); | ||||
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "interrupt_rate", | SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "interrupt_rate", | ||||
CTLTYPE_UINT | CTLFLAG_RW, &adapter->rx_queues[i], | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
&adapter->rx_queues[i], | |||||
sizeof(&adapter->rx_queues[i]), | sizeof(&adapter->rx_queues[i]), | ||||
ixgbe_sysctl_interrupt_rate_handler, "IU", | ixgbe_sysctl_interrupt_rate_handler, "IU", | ||||
"Interrupt Rate"); | "Interrupt Rate"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "irqs", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "irqs", | ||||
CTLFLAG_RD, &(adapter->rx_queues[i].irqs), | CTLFLAG_RD, &(adapter->rx_queues[i].irqs), | ||||
"irqs on this queue"); | "irqs on this queue"); | ||||
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_head", | SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_head", | ||||
CTLTYPE_UINT | CTLFLAG_RD, rxr, sizeof(rxr), | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
rxr, sizeof(rxr), | |||||
ixgbe_sysctl_rdh_handler, "IU", "Receive Descriptor Head"); | ixgbe_sysctl_rdh_handler, "IU", "Receive Descriptor Head"); | ||||
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_tail", | SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_tail", | ||||
CTLTYPE_UINT | CTLFLAG_RD, rxr, sizeof(rxr), | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
rxr, sizeof(rxr), | |||||
ixgbe_sysctl_rdt_handler, "IU", "Receive Descriptor Tail"); | ixgbe_sysctl_rdt_handler, "IU", "Receive Descriptor Tail"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_packets", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_packets", | ||||
CTLFLAG_RD, &rxr->rx_packets, "Queue Packets Received"); | CTLFLAG_RD, &rxr->rx_packets, "Queue Packets Received"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_bytes", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_bytes", | ||||
CTLFLAG_RD, &rxr->rx_bytes, "Queue Bytes Received"); | CTLFLAG_RD, &rxr->rx_bytes, "Queue Bytes Received"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_copies", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_copies", | ||||
CTLFLAG_RD, &rxr->rx_copies, "Copied RX Frames"); | CTLFLAG_RD, &rxr->rx_copies, "Copied RX Frames"); | ||||
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_discarded", | SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "rx_discarded", | ||||
Show All 24 Lines | |||||
struct sysctl_oid_list *child; | struct sysctl_oid_list *child; | ||||
struct sysctl_ctx_list *ctx_list; | struct sysctl_ctx_list *ctx_list; | ||||
ctx_list = device_get_sysctl_ctx(dev); | ctx_list = device_get_sysctl_ctx(dev); | ||||
child = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); | child = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); | ||||
/* Sysctls for all devices */ | /* Sysctls for all devices */ | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fc", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fc", | ||||
CTLTYPE_INT | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_flowcntl, "I", | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
adapter, 0, ixgbe_sysctl_flowcntl, "I", | |||||
IXGBE_SYSCTL_DESC_SET_FC); | IXGBE_SYSCTL_DESC_SET_FC); | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "advertise_speed", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "advertise_speed", | ||||
CTLTYPE_INT | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_advertise, "I", | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
adapter, 0, ixgbe_sysctl_advertise, "I", | |||||
IXGBE_SYSCTL_DESC_ADV_SPEED); | IXGBE_SYSCTL_DESC_ADV_SPEED); | ||||
#ifdef IXGBE_DEBUG | #ifdef IXGBE_DEBUG | ||||
/* testing sysctls (for all devices) */ | /* testing sysctls (for all devices) */ | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "power_state", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "power_state", | ||||
CTLTYPE_INT | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_power_state, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
adapter, 0, ixgbe_sysctl_power_state, | |||||
"I", "PCI Power State"); | "I", "PCI Power State"); | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "print_rss_config", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "print_rss_config", | ||||
CTLTYPE_STRING | CTLFLAG_RD, adapter, 0, | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0, | ||||
ixgbe_sysctl_print_rss_config, "A", "Prints RSS Configuration"); | ixgbe_sysctl_print_rss_config, "A", "Prints RSS Configuration"); | ||||
#endif | #endif | ||||
/* for X550 series devices */ | /* for X550 series devices */ | ||||
if (hw->mac.type >= ixgbe_mac_X550) | if (hw->mac.type >= ixgbe_mac_X550) | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "dmac", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "dmac", | ||||
CTLTYPE_U16 | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_dmac, | CTLTYPE_U16 | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
adapter, 0, ixgbe_sysctl_dmac, | |||||
"I", "DMA Coalesce"); | "I", "DMA Coalesce"); | ||||
/* for WoL-capable devices */ | /* for WoL-capable devices */ | ||||
if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) { | if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) { | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wol_enable", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wol_enable", | ||||
CTLTYPE_INT | CTLFLAG_RW, adapter, 0, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, | ||||
ixgbe_sysctl_wol_enable, "I", "Enable/Disable Wake on LAN"); | ixgbe_sysctl_wol_enable, "I", "Enable/Disable Wake on LAN"); | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wufc", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wufc", | ||||
CTLTYPE_U32 | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_wufc, | CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, | ||||
ixgbe_sysctl_wufc, | |||||
"I", "Enable/Disable Wake Up Filters"); | "I", "Enable/Disable Wake Up Filters"); | ||||
} | } | ||||
/* for X552/X557-AT devices */ | /* for X552/X557-AT devices */ | ||||
if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) { | if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) { | ||||
struct sysctl_oid *phy_node; | struct sysctl_oid *phy_node; | ||||
struct sysctl_oid_list *phy_list; | struct sysctl_oid_list *phy_list; | ||||
phy_node = SYSCTL_ADD_NODE(ctx_list, child, OID_AUTO, "phy", | phy_node = SYSCTL_ADD_NODE(ctx_list, child, OID_AUTO, "phy", | ||||
CTLFLAG_RD, NULL, "External PHY sysctls"); | CTLFLAG_RD, NULL, "External PHY sysctls"); | ||||
phy_list = SYSCTL_CHILDREN(phy_node); | phy_list = SYSCTL_CHILDREN(phy_node); | ||||
SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, "temp", | SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, "temp", | ||||
CTLTYPE_U16 | CTLFLAG_RD, adapter, 0, ixgbe_sysctl_phy_temp, | CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0, | ||||
ixgbe_sysctl_phy_temp, | |||||
"I", "Current External PHY Temperature (Celsius)"); | "I", "Current External PHY Temperature (Celsius)"); | ||||
SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, | SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, | ||||
"overtemp_occurred", CTLTYPE_U16 | CTLFLAG_RD, adapter, 0, | "overtemp_occurred", | ||||
CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0, | |||||
ixgbe_sysctl_phy_overtemp_occurred, "I", | ixgbe_sysctl_phy_overtemp_occurred, "I", | ||||
"External PHY High Temperature Event Occurred"); | "External PHY High Temperature Event Occurred"); | ||||
} | } | ||||
if (adapter->feat_cap & IXGBE_FEATURE_EEE) { | if (adapter->feat_cap & IXGBE_FEATURE_EEE) { | ||||
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "eee_state", | SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "eee_state", | ||||
CTLTYPE_INT | CTLFLAG_RW, adapter, 0, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, | ||||
ixgbe_sysctl_eee_state, "I", "EEE Power Save State"); | ixgbe_sysctl_eee_state, "I", "EEE Power Save State"); | ||||
} | } | ||||
} /* ixgbe_add_device_sysctls */ | } /* ixgbe_add_device_sysctls */ | ||||
/************************************************************************ | /************************************************************************ | ||||
* ixgbe_allocate_pci_resources | * ixgbe_allocate_pci_resources | ||||
************************************************************************/ | ************************************************************************/ | ||||
static int | static int | ||||
Show All 12 Lines |