Deleted Added
full compact
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 ---