Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/bxe/bxe.c
Show All 12 Lines | |||||
uint8_t undi; | uint8_t undi; | ||||
}; | }; | ||||
static LIST_HEAD(, bxe_prev_list_node) bxe_prev_list = LIST_HEAD_INITIALIZER(bxe_prev_list); | static LIST_HEAD(, bxe_prev_list_node) bxe_prev_list = LIST_HEAD_INITIALIZER(bxe_prev_list); | ||||
static int load_count[2][3] = { {0} }; /* per-path: 0-common, 1-port0, 2-port1 */ | static int load_count[2][3] = { {0} }; /* per-path: 0-common, 1-port0, 2-port1 */ | ||||
/* Tunable device values... */ | /* Tunable device values... */ | ||||
SYSCTL_NODE(_hw, OID_AUTO, bxe, CTLFLAG_RD, 0, "bxe driver parameters"); | SYSCTL_NODE(_hw, OID_AUTO, bxe, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | ||||
"bxe driver parameters"); | |||||
/* Debug */ | /* Debug */ | ||||
unsigned long bxe_debug = 0; | unsigned long bxe_debug = 0; | ||||
SYSCTL_ULONG(_hw_bxe, OID_AUTO, debug, CTLFLAG_RDTUN, | SYSCTL_ULONG(_hw_bxe, OID_AUTO, debug, CTLFLAG_RDTUN, | ||||
&bxe_debug, 0, "Debug logging mode"); | &bxe_debug, 0, "Debug logging mode"); | ||||
/* Interrupt Mode: 0 (IRQ), 1 (MSI/IRQ), and 2 (MSI-X/MSI/IRQ) */ | /* Interrupt Mode: 0 (IRQ), 1 (MSI/IRQ), and 2 (MSI-X/MSI/IRQ) */ | ||||
static int bxe_interrupt_mode = INTR_MODE_MSIX; | static int bxe_interrupt_mode = INTR_MODE_MSIX; | ||||
Show All 24 Lines | |||||
CTLFLAG_RD, &sc->grcdump_done, 0, | CTLFLAG_RD, &sc->grcdump_done, 0, | ||||
"set by driver when grcdump is done"); | "set by driver when grcdump is done"); | ||||
sc->rx_budget = bxe_rx_budget; | sc->rx_budget = bxe_rx_budget; | ||||
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "rx_budget", | SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "rx_budget", | ||||
CTLFLAG_RW, &sc->rx_budget, 0, | CTLFLAG_RW, &sc->rx_budget, 0, | ||||
"rx processing budget"); | "rx processing budget"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pause_param", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pause_param", | ||||
CTLTYPE_UINT | CTLFLAG_RW, sc, 0, | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | ||||
bxe_sysctl_pauseparam, "IU", | bxe_sysctl_pauseparam, "IU", | ||||
"need pause frames- DEF:0/TX:1/RX:2/BOTH:3/AUTO:4/AUTOTX:5/AUTORX:6/AUTORXTX:7/NONE:8"); | "need pause frames- DEF:0/TX:1/RX:2/BOTH:3/AUTO:4/AUTOTX:5/AUTORX:6/AUTORXTX:7/NONE:8"); | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "state", | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "state", | ||||
CTLTYPE_UINT | CTLFLAG_RW, sc, 0, | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, | ||||
bxe_sysctl_state, "IU", "dump driver state"); | bxe_sysctl_state, "IU", "dump driver state"); | ||||
for (i = 0; i < BXE_NUM_ETH_STATS; i++) { | for (i = 0; i < BXE_NUM_ETH_STATS; i++) { | ||||
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, | SYSCTL_ADD_PROC(ctx, children, OID_AUTO, | ||||
bxe_eth_stats_arr[i].string, | bxe_eth_stats_arr[i].string, | ||||
CTLTYPE_U64 | CTLFLAG_RD, sc, i, | CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, i, | ||||
bxe_sysctl_eth_stat, "LU", | bxe_sysctl_eth_stat, "LU", bxe_eth_stats_arr[i].string); | ||||
bxe_eth_stats_arr[i].string); | |||||
} | } | ||||
/* add a new parent node for all queues "dev.bxe.#.queue" */ | /* add a new parent node for all queues "dev.bxe.#.queue" */ | ||||
queue_top = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "queue", | queue_top = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "queue", | ||||
CTLFLAG_RD, NULL, "queue"); | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "queue"); | ||||
queue_top_children = SYSCTL_CHILDREN(queue_top); | queue_top_children = SYSCTL_CHILDREN(queue_top); | ||||
for (i = 0; i < sc->num_queues; i++) { | for (i = 0; i < sc->num_queues; i++) { | ||||
/* add a new parent node for a single queue "dev.bxe.#.queue.#" */ | /* add a new parent node for a single queue "dev.bxe.#.queue.#" */ | ||||
snprintf(queue_num_buf, sizeof(queue_num_buf), "%d", i); | snprintf(queue_num_buf, sizeof(queue_num_buf), "%d", i); | ||||
queue = SYSCTL_ADD_NODE(ctx, queue_top_children, OID_AUTO, | queue = SYSCTL_ADD_NODE(ctx, queue_top_children, OID_AUTO, | ||||
queue_num_buf, CTLFLAG_RD, NULL, | queue_num_buf, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "single queue"); | ||||
"single queue"); | |||||
queue_children = SYSCTL_CHILDREN(queue); | queue_children = SYSCTL_CHILDREN(queue); | ||||
for (j = 0; j < BXE_NUM_ETH_Q_STATS; j++) { | for (j = 0; j < BXE_NUM_ETH_Q_STATS; j++) { | ||||
q_stat = ((i << 16) | j); | q_stat = ((i << 16) | j); | ||||
SYSCTL_ADD_PROC(ctx, queue_children, OID_AUTO, | SYSCTL_ADD_PROC(ctx, queue_children, OID_AUTO, | ||||
bxe_eth_q_stats_arr[j].string, | bxe_eth_q_stats_arr[j].string, | ||||
CTLTYPE_U64 | CTLFLAG_RD, sc, q_stat, | CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, q_stat, | ||||
bxe_sysctl_eth_q_stat, "LU", | bxe_sysctl_eth_q_stat, "LU", bxe_eth_q_stats_arr[j].string); | ||||
bxe_eth_q_stats_arr[j].string); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
static int | static int | ||||
bxe_alloc_buf_rings(struct bxe_softc *sc) | bxe_alloc_buf_rings(struct bxe_softc *sc) | ||||
{ | { | ||||
#if __FreeBSD_version >= 901504 | #if __FreeBSD_version >= 901504 | ||||
Show All 12 Lines |