bxe_stats.c (295830) | bxe_stats.c (296071) |
---|---|
1/*- 2 * Copyright (c) 2007-2014 QLogic Corporation. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 24 * THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2007-2014 QLogic Corporation. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 24 * THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/dev/bxe/bxe_stats.c 295830 2016-02-19 22:46:52Z davidcs $"); | 28__FBSDID("$FreeBSD: head/sys/dev/bxe/bxe_stats.c 296071 2016-02-25 22:44:00Z davidcs $"); |
29 30#include "bxe.h" 31#include "bxe_stats.h" 32 33#ifdef __i386__ 34#define BITS_PER_LONG 32 35#else 36#define BITS_PER_LONG 64 --- 136 unchanged lines hidden (view full) --- 173 174 BXE_STATS_UNLOCK(sc); 175 } 176} 177 178static void 179bxe_hw_stats_post(struct bxe_softc *sc) 180{ | 29 30#include "bxe.h" 31#include "bxe_stats.h" 32 33#ifdef __i386__ 34#define BITS_PER_LONG 32 35#else 36#define BITS_PER_LONG 64 --- 136 unchanged lines hidden (view full) --- 173 174 BXE_STATS_UNLOCK(sc); 175 } 176} 177 178static void 179bxe_hw_stats_post(struct bxe_softc *sc) 180{ |
181 struct dmae_command *dmae = &sc->stats_dmae; | 181 struct dmae_cmd *dmae = &sc->stats_dmae; |
182 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 183 int loader_idx; 184 uint32_t opcode; 185 186 *stats_comp = DMAE_COMP_VAL; 187 if (CHIP_REV_IS_SLOW(sc)) { 188 return; 189 } --- 6 unchanged lines hidden (view full) --- 196 197 /* loader */ 198 if (sc->executer_idx) { 199 loader_idx = PMF_DMAE_C(sc); 200 opcode = bxe_dmae_opcode(sc, DMAE_SRC_PCI, DMAE_DST_GRC, 201 TRUE, DMAE_COMP_GRC); 202 opcode = bxe_dmae_opcode_clr_src_reset(opcode); 203 | 182 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 183 int loader_idx; 184 uint32_t opcode; 185 186 *stats_comp = DMAE_COMP_VAL; 187 if (CHIP_REV_IS_SLOW(sc)) { 188 return; 189 } --- 6 unchanged lines hidden (view full) --- 196 197 /* loader */ 198 if (sc->executer_idx) { 199 loader_idx = PMF_DMAE_C(sc); 200 opcode = bxe_dmae_opcode(sc, DMAE_SRC_PCI, DMAE_DST_GRC, 201 TRUE, DMAE_COMP_GRC); 202 opcode = bxe_dmae_opcode_clr_src_reset(opcode); 203 |
204 memset(dmae, 0, sizeof(struct dmae_command)); | 204 memset(dmae, 0, sizeof(struct dmae_cmd)); |
205 dmae->opcode = opcode; 206 dmae->src_addr_lo = U64_LO(BXE_SP_MAPPING(sc, dmae[0])); 207 dmae->src_addr_hi = U64_HI(BXE_SP_MAPPING(sc, dmae[0])); 208 dmae->dst_addr_lo = ((DMAE_REG_CMD_MEM + | 205 dmae->opcode = opcode; 206 dmae->src_addr_lo = U64_LO(BXE_SP_MAPPING(sc, dmae[0])); 207 dmae->src_addr_hi = U64_HI(BXE_SP_MAPPING(sc, dmae[0])); 208 dmae->dst_addr_lo = ((DMAE_REG_CMD_MEM + |
209 sizeof(struct dmae_command) * | 209 sizeof(struct dmae_cmd) * |
210 (loader_idx + 1)) >> 2); 211 dmae->dst_addr_hi = 0; | 210 (loader_idx + 1)) >> 2); 211 dmae->dst_addr_hi = 0; |
212 dmae->len = sizeof(struct dmae_command) >> 2; | 212 dmae->len = sizeof(struct dmae_cmd) >> 2; |
213 if (CHIP_IS_E1(sc)) { 214 dmae->len--; 215 } 216 dmae->comp_addr_lo = (dmae_reg_go_c[loader_idx + 1] >> 2); 217 dmae->comp_addr_hi = 0; 218 dmae->comp_val = 1; 219 220 *stats_comp = 0; --- 25 unchanged lines hidden (view full) --- 246 247/* 248 * Statistics service functions 249 */ 250 251static void 252bxe_stats_pmf_update(struct bxe_softc *sc) 253{ | 213 if (CHIP_IS_E1(sc)) { 214 dmae->len--; 215 } 216 dmae->comp_addr_lo = (dmae_reg_go_c[loader_idx + 1] >> 2); 217 dmae->comp_addr_hi = 0; 218 dmae->comp_val = 1; 219 220 *stats_comp = 0; --- 25 unchanged lines hidden (view full) --- 246 247/* 248 * Statistics service functions 249 */ 250 251static void 252bxe_stats_pmf_update(struct bxe_softc *sc) 253{ |
254 struct dmae_command *dmae; | 254 struct dmae_cmd *dmae; |
255 uint32_t opcode; 256 int loader_idx = PMF_DMAE_C(sc); 257 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 258 259 if (sc->devinfo.bc_ver <= 0x06001400) { 260 /* 261 * Bootcode v6.0.21 fixed a GRC timeout that occurs when accessing 262 * BRB registers while the BRB block is in reset. The DMA transfer --- 42 unchanged lines hidden (view full) --- 305 *stats_comp = 0; 306 bxe_hw_stats_post(sc); 307 bxe_stats_comp(sc); 308} 309 310static void 311bxe_port_stats_init(struct bxe_softc *sc) 312{ | 255 uint32_t opcode; 256 int loader_idx = PMF_DMAE_C(sc); 257 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 258 259 if (sc->devinfo.bc_ver <= 0x06001400) { 260 /* 261 * Bootcode v6.0.21 fixed a GRC timeout that occurs when accessing 262 * BRB registers while the BRB block is in reset. The DMA transfer --- 42 unchanged lines hidden (view full) --- 305 *stats_comp = 0; 306 bxe_hw_stats_post(sc); 307 bxe_stats_comp(sc); 308} 309 310static void 311bxe_port_stats_init(struct bxe_softc *sc) 312{ |
313 struct dmae_command *dmae; | 313 struct dmae_cmd *dmae; |
314 int port = SC_PORT(sc); 315 uint32_t opcode; 316 int loader_idx = PMF_DMAE_C(sc); 317 uint32_t mac_addr; 318 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 319 320 /* sanity */ 321 if (!sc->link_vars.link_up || !sc->port.pmf) { --- 211 unchanged lines hidden (view full) --- 533 dmae->comp_val = DMAE_COMP_VAL; 534 535 *stats_comp = 0; 536} 537 538static void 539bxe_func_stats_init(struct bxe_softc *sc) 540{ | 314 int port = SC_PORT(sc); 315 uint32_t opcode; 316 int loader_idx = PMF_DMAE_C(sc); 317 uint32_t mac_addr; 318 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 319 320 /* sanity */ 321 if (!sc->link_vars.link_up || !sc->port.pmf) { --- 211 unchanged lines hidden (view full) --- 533 dmae->comp_val = DMAE_COMP_VAL; 534 535 *stats_comp = 0; 536} 537 538static void 539bxe_func_stats_init(struct bxe_softc *sc) 540{ |
541 struct dmae_command *dmae = &sc->stats_dmae; | 541 struct dmae_cmd *dmae = &sc->stats_dmae; |
542 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 543 544 /* sanity */ 545 if (!sc->func_stx) { 546 BLOGE(sc, "BUG!\n"); 547 return; 548 } 549 550 sc->executer_idx = 0; | 542 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 543 544 /* sanity */ 545 if (!sc->func_stx) { 546 BLOGE(sc, "BUG!\n"); 547 return; 548 } 549 550 sc->executer_idx = 0; |
551 memset(dmae, 0, sizeof(struct dmae_command)); | 551 memset(dmae, 0, sizeof(struct dmae_cmd)); |
552 553 dmae->opcode = bxe_dmae_opcode(sc, DMAE_SRC_PCI, DMAE_DST_GRC, 554 TRUE, DMAE_COMP_PCI); 555 dmae->src_addr_lo = U64_LO(BXE_SP_MAPPING(sc, func_stats)); 556 dmae->src_addr_hi = U64_HI(BXE_SP_MAPPING(sc, func_stats)); 557 dmae->dst_addr_lo = (sc->func_stx >> 2); 558 dmae->dst_addr_hi = 0; 559 dmae->len = (sizeof(struct host_func_stats) >> 2); --- 774 unchanged lines hidden (view full) --- 1334 1335 bxe_hw_stats_post(sc); 1336 bxe_storm_stats_post(sc); 1337} 1338 1339static void 1340bxe_port_stats_stop(struct bxe_softc *sc) 1341{ | 552 553 dmae->opcode = bxe_dmae_opcode(sc, DMAE_SRC_PCI, DMAE_DST_GRC, 554 TRUE, DMAE_COMP_PCI); 555 dmae->src_addr_lo = U64_LO(BXE_SP_MAPPING(sc, func_stats)); 556 dmae->src_addr_hi = U64_HI(BXE_SP_MAPPING(sc, func_stats)); 557 dmae->dst_addr_lo = (sc->func_stx >> 2); 558 dmae->dst_addr_hi = 0; 559 dmae->len = (sizeof(struct host_func_stats) >> 2); --- 774 unchanged lines hidden (view full) --- 1334 1335 bxe_hw_stats_post(sc); 1336 bxe_storm_stats_post(sc); 1337} 1338 1339static void 1340bxe_port_stats_stop(struct bxe_softc *sc) 1341{ |
1342 struct dmae_command *dmae; | 1342 struct dmae_cmd *dmae; |
1343 uint32_t opcode; 1344 int loader_idx = PMF_DMAE_C(sc); 1345 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 1346 1347 sc->executer_idx = 0; 1348 1349 opcode = bxe_dmae_opcode(sc, DMAE_SRC_PCI, DMAE_DST_GRC, FALSE, 0); 1350 --- 110 unchanged lines hidden (view full) --- 1461 "state %d -> event %d -> state %d\n", 1462 state, event, sc->stats_state); 1463 } 1464} 1465 1466static void 1467bxe_port_stats_base_init(struct bxe_softc *sc) 1468{ | 1343 uint32_t opcode; 1344 int loader_idx = PMF_DMAE_C(sc); 1345 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 1346 1347 sc->executer_idx = 0; 1348 1349 opcode = bxe_dmae_opcode(sc, DMAE_SRC_PCI, DMAE_DST_GRC, FALSE, 0); 1350 --- 110 unchanged lines hidden (view full) --- 1461 "state %d -> event %d -> state %d\n", 1462 state, event, sc->stats_state); 1463 } 1464} 1465 1466static void 1467bxe_port_stats_base_init(struct bxe_softc *sc) 1468{ |
1469 struct dmae_command *dmae; | 1469 struct dmae_cmd *dmae; |
1470 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 1471 1472 /* sanity */ 1473 if (!sc->port.pmf || !sc->port.port_stx) { 1474 BLOGE(sc, "BUG!\n"); 1475 return; 1476 } 1477 --- 363 unchanged lines hidden --- | 1470 uint32_t *stats_comp = BXE_SP(sc, stats_comp); 1471 1472 /* sanity */ 1473 if (!sc->port.pmf || !sc->port.port_stx) { 1474 BLOGE(sc, "BUG!\n"); 1475 return; 1476 } 1477 --- 363 unchanged lines hidden --- |