static enum BC_STATUS bc_cproc_get_stats(struct crystalhd_cmd *ctx, struct crystalhd_ioctl_data *idata) { struct BC_DTS_STATS *stats; struct crystalhd_hw_stats hw_stats; if (!ctx || !idata) { BCMLOG_ERR("Invalid Arg!!\n"); return BC_STS_INV_ARG; } crystalhd_hw_stats(&ctx->hw_ctx, &hw_stats); stats = &idata->udata.u.drvStat; stats->drvRLL = hw_stats.rdyq_count; stats->drvFLL = hw_stats.freeq_count; stats->DrvTotalFrmDropped = hw_stats.rx_errors; stats->DrvTotalHWErrs = hw_stats.rx_errors + hw_stats.tx_errors; stats->intCount = hw_stats.num_interrupts; stats->DrvIgnIntrCnt = hw_stats.num_interrupts - hw_stats.dev_interrupts; stats->TxFifoBsyCnt = hw_stats.cin_busy; stats->pauseCount = hw_stats.pause_cnt; if (ctx->pwr_state_change) stats->pwr_state_change = 1; if (ctx->state & BC_LINK_PAUSED) stats->DrvPauseTime = 1; return BC_STS_SUCCESS; }
static enum BC_STATUS bc_cproc_reset_stats(struct crystalhd_cmd *ctx, struct crystalhd_ioctl_data *idata) { crystalhd_hw_stats(&ctx->hw_ctx, NULL); return BC_STS_SUCCESS; }