Lines Matching refs:cgr

269 	struct qm_mcc_cgr cgr;
1457 struct qman_cgr *cgr;
1479 list_for_each_entry(cgr, &p->cgr_cbs, node)
1480 if (cgr->cb && qman_cgrs_get(&c, cgr->cgrid))
1481 cgr->cb(p, cgr, qman_cgrs_get(&rr, cgr->cgrid));
2183 static int qman_query_cgr(struct qman_cgr *cgr,
2192 mcc->cgr.cgid = cgr->cgrid;
2211 int qman_query_cgr_congested(struct qman_cgr *cgr, bool *result)
2216 err = qman_query_cgr(cgr, &query_cgr);
2220 *result = !!query_cgr.cgr.cs;
2357 static int qm_modify_cgr(struct qman_cgr *cgr, u32 flags,
2369 mcc->initcgr.cgid = cgr->cgrid;
2390 static void qm_cgr_cscn_targ_set(struct __qm_mc_cgr *cgr, int pi, u32 val)
2393 cgr->cscn_targ_upd_ctrl = cpu_to_be16(pi |
2396 cgr->cscn_targ = cpu_to_be32(val | QM_CGR_TARG_PORTAL(pi));
2399 static void qm_cgr_cscn_targ_clear(struct __qm_mc_cgr *cgr, int pi, u32 val)
2402 cgr->cscn_targ_upd_ctrl = cpu_to_be16(pi);
2404 cgr->cscn_targ = cpu_to_be32(val & ~QM_CGR_TARG_PORTAL(pi));
2411 struct qman_cgr cgr;
2414 for (cgr.cgrid = 0; cgr.cgrid < CGR_NUM; cgr.cgrid++) {
2415 if (qm_modify_cgr(&cgr, QMAN_CGR_FLAG_USE_INIT, NULL))
2424 int qman_create_cgr(struct qman_cgr *cgr, u32 flags,
2437 if (cgr->cgrid >= CGR_NUM)
2442 qman_cgr_cpus[cgr->cgrid] = smp_processor_id();
2445 cgr->chan = p->config->channel;
2451 ret = qman_query_cgr(cgr, &cgr_state);
2455 qm_cgr_cscn_targ_set(&local_opts.cgr, PORTAL_IDX(p),
2456 be32_to_cpu(cgr_state.cgr.cscn_targ));
2461 ret = qm_modify_cgr(cgr, QMAN_CGR_FLAG_USE_INIT,
2464 ret = qm_modify_cgr(cgr, 0, &local_opts);
2469 list_add(&cgr->node, &p->cgr_cbs);
2472 ret = qman_query_cgr(cgr, &cgr_state);
2479 if (cgr->cb && cgr_state.cgr.cscn_en &&
2480 qman_cgrs_get(&p->cgrs[1], cgr->cgrid))
2481 cgr->cb(p, cgr, 1);
2489 static struct qman_portal *qman_cgr_get_affine_portal(struct qman_cgr *cgr)
2493 if (cgr->chan != p->config->channel) {
2497 cgr->chan, p->config->channel);
2505 int qman_delete_cgr(struct qman_cgr *cgr)
2512 struct qman_portal *p = qman_cgr_get_affine_portal(cgr);
2519 list_del(&cgr->node);
2525 if (i->cgrid == cgr->cgrid && i->cb)
2527 ret = qman_query_cgr(cgr, &cgr_state);
2530 list_add(&cgr->node, &p->cgr_cbs);
2535 qm_cgr_cscn_targ_clear(&local_opts.cgr, PORTAL_IDX(p),
2536 be32_to_cpu(cgr_state.cgr.cscn_targ));
2538 ret = qm_modify_cgr(cgr, 0, &local_opts);
2541 list_add(&cgr->node, &p->cgr_cbs);
2550 struct qman_cgr *cgr;
2559 void qman_delete_cgr_safe(struct qman_cgr *cgr)
2562 if (qman_cgr_cpus[cgr->cgrid] != smp_processor_id()) {
2563 smp_call_function_single(qman_cgr_cpus[cgr->cgrid],
2564 qman_delete_cgr_smp_call, cgr, true);
2569 qman_delete_cgr(cgr);
2574 static int qman_update_cgr(struct qman_cgr *cgr, struct qm_mcc_initcgr *opts)
2578 struct qman_portal *p = qman_cgr_get_affine_portal(cgr);
2584 ret = qm_modify_cgr(cgr, 0, opts);
2591 struct qman_cgr *cgr;
2600 params->ret = qman_update_cgr(params->cgr, params->opts);
2603 int qman_update_cgr_safe(struct qman_cgr *cgr, struct qm_mcc_initcgr *opts)
2606 .cgr = cgr,
2611 if (qman_cgr_cpus[cgr->cgrid] != smp_processor_id())
2612 smp_call_function_single(qman_cgr_cpus[cgr->cgrid],
2616 params.ret = qman_update_cgr(cgr, opts);