soc/qman: Clean up CGR CSCN target update operations
Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Signed-off-by: Scott Wood <oss@buserror.net>
This commit is contained in:
parent
efe848cdb7
commit
496bfa11de
|
@ -2248,7 +2248,23 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PORTAL_IDX(n) (n->config->channel - QM_CHANNEL_SWPORTAL0)
|
#define PORTAL_IDX(n) (n->config->channel - QM_CHANNEL_SWPORTAL0)
|
||||||
#define TARG_MASK(n) (BIT(31) >> PORTAL_IDX(n))
|
|
||||||
|
/* congestion state change notification target update control */
|
||||||
|
static void qm_cgr_cscn_targ_set(struct __qm_mc_cgr *cgr, int pi, u32 val)
|
||||||
|
{
|
||||||
|
if (qman_ip_rev >= QMAN_REV30)
|
||||||
|
cgr->cscn_targ_upd_ctrl = QM_CGR_TARG_UDP_CTRL_WRITE_BIT | pi;
|
||||||
|
else
|
||||||
|
cgr->cscn_targ = val | QM_CGR_TARG_PORTAL(pi);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void qm_cgr_cscn_targ_clear(struct __qm_mc_cgr *cgr, int pi, u32 val)
|
||||||
|
{
|
||||||
|
if (qman_ip_rev >= QMAN_REV30)
|
||||||
|
cgr->cscn_targ_upd_ctrl = pi;
|
||||||
|
else
|
||||||
|
cgr->cscn_targ = val & ~QM_CGR_TARG_PORTAL(pi);
|
||||||
|
}
|
||||||
|
|
||||||
static u8 qman_cgr_cpus[CGR_NUM];
|
static u8 qman_cgr_cpus[CGR_NUM];
|
||||||
|
|
||||||
|
@ -2298,13 +2314,8 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags,
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if ((qman_ip_rev & 0xFF00) >= QMAN_REV30)
|
qm_cgr_cscn_targ_set(&local_opts.cgr, PORTAL_IDX(p),
|
||||||
local_opts.cgr.cscn_targ_upd_ctrl =
|
cgr_state.cgr.cscn_targ);
|
||||||
QM_CGR_TARG_UDP_CTRL_WRITE_BIT | PORTAL_IDX(p);
|
|
||||||
else
|
|
||||||
/* Overwrite TARG */
|
|
||||||
local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ |
|
|
||||||
TARG_MASK(p);
|
|
||||||
local_opts.we_mask |= QM_CGR_WE_CSCN_TARG;
|
local_opts.we_mask |= QM_CGR_WE_CSCN_TARG;
|
||||||
|
|
||||||
/* send init if flags indicate so */
|
/* send init if flags indicate so */
|
||||||
|
@ -2371,13 +2382,11 @@ int qman_delete_cgr(struct qman_cgr *cgr)
|
||||||
list_add(&cgr->node, &p->cgr_cbs);
|
list_add(&cgr->node, &p->cgr_cbs);
|
||||||
goto release_lock;
|
goto release_lock;
|
||||||
}
|
}
|
||||||
/* Overwrite TARG */
|
|
||||||
local_opts.we_mask = QM_CGR_WE_CSCN_TARG;
|
local_opts.we_mask = QM_CGR_WE_CSCN_TARG;
|
||||||
if ((qman_ip_rev & 0xFF00) >= QMAN_REV30)
|
qm_cgr_cscn_targ_clear(&local_opts.cgr, PORTAL_IDX(p),
|
||||||
local_opts.cgr.cscn_targ_upd_ctrl = PORTAL_IDX(p);
|
cgr_state.cgr.cscn_targ);
|
||||||
else
|
|
||||||
local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ &
|
|
||||||
~(TARG_MASK(p));
|
|
||||||
ret = qm_modify_cgr(cgr, 0, &local_opts);
|
ret = qm_modify_cgr(cgr, 0, &local_opts);
|
||||||
if (ret)
|
if (ret)
|
||||||
/* add back to the list */
|
/* add back to the list */
|
||||||
|
|
|
@ -553,8 +553,8 @@ struct __qm_mc_cgr {
|
||||||
u8 cscn_en; /* boolean, use QM_CGR_EN */
|
u8 cscn_en; /* boolean, use QM_CGR_EN */
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
u16 cscn_targ_upd_ctrl; /* use QM_CSCN_TARG_UDP_ */
|
u16 cscn_targ_upd_ctrl; /* use QM_CGR_TARG_UDP_* */
|
||||||
u16 cscn_targ_dcp_low; /* CSCN_TARG_DCP low-16bits */
|
u16 cscn_targ_dcp_low;
|
||||||
};
|
};
|
||||||
u32 cscn_targ; /* use QM_CGR_TARG_* */
|
u32 cscn_targ; /* use QM_CGR_TARG_* */
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue