Loading drivers/soc/fsl/qbman/qman.c +23 −14 Original line number Diff line number Diff line Loading @@ -2248,7 +2248,23 @@ static int qm_modify_cgr(struct qman_cgr *cgr, u32 flags, } #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]; Loading Loading @@ -2298,13 +2314,8 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags, if (ret) goto out; if ((qman_ip_rev & 0xFF00) >= QMAN_REV30) local_opts.cgr.cscn_targ_upd_ctrl = 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); qm_cgr_cscn_targ_set(&local_opts.cgr, PORTAL_IDX(p), cgr_state.cgr.cscn_targ); local_opts.we_mask |= QM_CGR_WE_CSCN_TARG; /* send init if flags indicate so */ Loading Loading @@ -2371,13 +2382,11 @@ int qman_delete_cgr(struct qman_cgr *cgr) list_add(&cgr->node, &p->cgr_cbs); goto release_lock; } /* Overwrite TARG */ local_opts.we_mask = QM_CGR_WE_CSCN_TARG; if ((qman_ip_rev & 0xFF00) >= QMAN_REV30) local_opts.cgr.cscn_targ_upd_ctrl = PORTAL_IDX(p); else local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ & ~(TARG_MASK(p)); qm_cgr_cscn_targ_clear(&local_opts.cgr, PORTAL_IDX(p), cgr_state.cgr.cscn_targ); ret = qm_modify_cgr(cgr, 0, &local_opts); if (ret) /* add back to the list */ Loading include/soc/fsl/qman.h +2 −2 Original line number Diff line number Diff line Loading @@ -553,8 +553,8 @@ struct __qm_mc_cgr { u8 cscn_en; /* boolean, use QM_CGR_EN */ union { struct { u16 cscn_targ_upd_ctrl; /* use QM_CSCN_TARG_UDP_ */ u16 cscn_targ_dcp_low; /* CSCN_TARG_DCP low-16bits */ u16 cscn_targ_upd_ctrl; /* use QM_CGR_TARG_UDP_* */ u16 cscn_targ_dcp_low; }; u32 cscn_targ; /* use QM_CGR_TARG_* */ }; Loading Loading
drivers/soc/fsl/qbman/qman.c +23 −14 Original line number Diff line number Diff line Loading @@ -2248,7 +2248,23 @@ static int qm_modify_cgr(struct qman_cgr *cgr, u32 flags, } #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]; Loading Loading @@ -2298,13 +2314,8 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags, if (ret) goto out; if ((qman_ip_rev & 0xFF00) >= QMAN_REV30) local_opts.cgr.cscn_targ_upd_ctrl = 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); qm_cgr_cscn_targ_set(&local_opts.cgr, PORTAL_IDX(p), cgr_state.cgr.cscn_targ); local_opts.we_mask |= QM_CGR_WE_CSCN_TARG; /* send init if flags indicate so */ Loading Loading @@ -2371,13 +2382,11 @@ int qman_delete_cgr(struct qman_cgr *cgr) list_add(&cgr->node, &p->cgr_cbs); goto release_lock; } /* Overwrite TARG */ local_opts.we_mask = QM_CGR_WE_CSCN_TARG; if ((qman_ip_rev & 0xFF00) >= QMAN_REV30) local_opts.cgr.cscn_targ_upd_ctrl = PORTAL_IDX(p); else local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ & ~(TARG_MASK(p)); qm_cgr_cscn_targ_clear(&local_opts.cgr, PORTAL_IDX(p), cgr_state.cgr.cscn_targ); ret = qm_modify_cgr(cgr, 0, &local_opts); if (ret) /* add back to the list */ Loading
include/soc/fsl/qman.h +2 −2 Original line number Diff line number Diff line Loading @@ -553,8 +553,8 @@ struct __qm_mc_cgr { u8 cscn_en; /* boolean, use QM_CGR_EN */ union { struct { u16 cscn_targ_upd_ctrl; /* use QM_CSCN_TARG_UDP_ */ u16 cscn_targ_dcp_low; /* CSCN_TARG_DCP low-16bits */ u16 cscn_targ_upd_ctrl; /* use QM_CGR_TARG_UDP_* */ u16 cscn_targ_dcp_low; }; u32 cscn_targ; /* use QM_CGR_TARG_* */ }; Loading