Lines Matching +full:page +full:- +full:based

1 /*-
2 * Copyright (c) 2009-2016 Solarflare Communications Inc.
40 /* Get port mask from one-based MCDI port number */
41 #define MCDI_MON_PORT_MASK(_emip) (1U << ((_emip)->emi_port - 1))
56 efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip); in mcdi_mon_decode_stats()
62 uint32_t page = 0; in mcdi_mon_decode_stats() local
73 EFSYS_ASSERT(emip->emi_port > 0); /* MCDI port number is one-based */ in mcdi_mon_decode_stats()
82 * sensor readings do not include entries for the per-page NEXT_PAGE in mcdi_mon_decode_stats()
96 page++; in mcdi_mon_decode_stats()
98 /* This sensor is one of the page boundary bits. */ in mcdi_mon_decode_stats()
101 if (~(sensor_mask[page]) & (1U << sensor)) in mcdi_mon_decode_stats()
136 EFSYS_MEM_READD(esmp, 4 * (idx - 1), &dword); in mcdi_mon_decode_stats()
163 efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip); in mcdi_mon_ev()
171 EFSYS_ASSERT(emip->emi_port > 0); /* MCDI port number is one-based */ in mcdi_mon_ev()
180 (8 * enp->en_nic_cfg.enc_mcdi_sensor_mask_size)); in mcdi_mon_ev()
183 EFSYS_ASSERT(enp->en_nic_cfg.enc_mcdi_sensor_maskp != NULL); in mcdi_mon_ev()
184 EFSYS_ASSERT((enp->en_nic_cfg.enc_mcdi_sensor_maskp[ in mcdi_mon_ev()
188 /* And we need to understand it, to get port-map */ in mcdi_mon_ev()
200 valuep->emsv_value = value; in mcdi_mon_ev()
201 valuep->emsv_state = state; in mcdi_mon_ev()
259 int page; in efx_mcdi_sensor_info_npages() local
264 page = 0; in efx_mcdi_sensor_info_npages()
273 MCDI_IN_SET_DWORD(req, SENSOR_INFO_EXT_IN_PAGE, page++); in efx_mcdi_sensor_info_npages()
284 *npagesp = page; in efx_mcdi_sensor_info_npages()
303 uint32_t page; in efx_mcdi_sensor_info() local
313 for (page = 0; page < npages; page++) { in efx_mcdi_sensor_info()
323 MCDI_IN_SET_DWORD(req, SENSOR_INFO_EXT_IN_PAGE, page); in efx_mcdi_sensor_info()
334 if ((page != (npages - 1)) && in efx_mcdi_sensor_info()
339 sensor_maskp[page] = mask; in efx_mcdi_sensor_info()
342 if (sensor_maskp[npages - 1] & (1U << MC_CMD_SENSOR_PAGE0_NEXT)) { in efx_mcdi_sensor_info()
364 __in uint32_t page,
366 __out_ecount((sizeof (*mask_part) * 8) - 1)
381 ((sizeof (*mask_part) * 8) - 1) * sizeof (efx_mon_stat_limits_t));
389 MCDI_IN_SET_DWORD(req, SENSOR_INFO_EXT_IN_PAGE, page);
403 *mask_part = maskp->ed_u32[0];
409 /* Only next page bit set. */
413 mask_copy = mask_copy & ~(mask_copy ^ (mask_copy - 1));
415 limits->emlv_warning_min = EFX_QWORD_FIELD(*limit_info,
418 limits->emlv_warning_max = EFX_QWORD_FIELD(*limit_info,
421 limits->emlv_fatal_min = EFX_QWORD_FIELD(*limit_info,
424 limits->emlv_fatal_max = EFX_QWORD_FIELD(*limit_info,
446 efx_nic_cfg_t *encp = &(enp->en_nic_cfg); in mcdi_mon_stats_update()
447 uint32_t size = encp->enc_mon_stat_dma_buf_size; in mcdi_mon_stats_update()
456 encp->enc_mcdi_sensor_maskp, in mcdi_mon_stats_update()
457 encp->enc_mcdi_sensor_mask_size, in mcdi_mon_stats_update()
478 x = (input_mask ^ (input_mask - 1)); in lowest_set_bit()
505 uint32_t page; in mcdi_mon_limits_update() local
511 page = 0; in mcdi_mon_limits_update()
512 page--; in mcdi_mon_limits_update()
514 page++; in mcdi_mon_limits_update()
516 rc = efx_mcdi_sensor_info_page(enp, page, &page_mask, limits); in mcdi_mon_limits_update()
533 page_index + (sizeof (page_mask) * 8 * page); in mcdi_mon_limits_update()
537 * drivers understand, or the bit is the next page bit. in mcdi_mon_limits_update()
562 efx_nic_cfg_t *encp = &(enp->en_nic_cfg); in mcdi_mon_cfg_build()
566 switch (enp->en_family) { in mcdi_mon_cfg_build()
569 encp->enc_mon_type = EFX_MON_SFC90X0; in mcdi_mon_cfg_build()
574 encp->enc_mon_type = EFX_MON_SFC91X0; in mcdi_mon_cfg_build()
579 encp->enc_mon_type = EFX_MON_SFC92X0; in mcdi_mon_cfg_build()
584 encp->enc_mon_type = EFX_MON_SFC92X0; in mcdi_mon_cfg_build()
597 encp->enc_mon_stat_dma_buf_size = npages * EFX_MON_STATS_PAGE_SIZE; in mcdi_mon_cfg_build()
598 encp->enc_mcdi_sensor_mask_size = npages * sizeof (uint32_t); in mcdi_mon_cfg_build()
601 EFSYS_KMEM_ALLOC(enp->en_esip, in mcdi_mon_cfg_build()
602 encp->enc_mcdi_sensor_mask_size, in mcdi_mon_cfg_build()
603 encp->enc_mcdi_sensor_maskp); in mcdi_mon_cfg_build()
605 if (encp->enc_mcdi_sensor_maskp == NULL) { in mcdi_mon_cfg_build()
612 encp->enc_mcdi_sensor_maskp, in mcdi_mon_cfg_build()
618 encp->enc_mcdi_sensor_maskp, in mcdi_mon_cfg_build()
619 encp->enc_mcdi_sensor_mask_size, in mcdi_mon_cfg_build()
620 NULL, encp->enc_mon_stat_mask, NULL); in mcdi_mon_cfg_build()
626 EFSYS_KMEM_FREE(enp->en_esip, in mcdi_mon_cfg_build()
627 encp->enc_mcdi_sensor_mask_size, in mcdi_mon_cfg_build()
628 encp->enc_mcdi_sensor_maskp); in mcdi_mon_cfg_build()
646 efx_nic_cfg_t *encp = &(enp->en_nic_cfg); in mcdi_mon_cfg_free()
648 if (encp->enc_mcdi_sensor_maskp != NULL) { in mcdi_mon_cfg_free()
649 EFSYS_KMEM_FREE(enp->en_esip, in mcdi_mon_cfg_free()
650 encp->enc_mcdi_sensor_mask_size, in mcdi_mon_cfg_free()
651 encp->enc_mcdi_sensor_maskp); in mcdi_mon_cfg_free()