summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
authorHaiying Wang <Haiying.Wang@freescale.com>2014-10-24 21:01:41 (GMT)
committerMatthew Weigel <Matthew.Weigel@freescale.com>2014-12-11 18:40:14 (GMT)
commit50508fc2ee3c90b9e0e64da15560b4f390fa5776 (patch)
tree96e956723bd32e95ee604abd2f0f4ac0a2e45de5 /drivers/staging
parent006d50dd13f4194567ec27b05d3e9fb2975f1f1a (diff)
downloadlinux-fsl-qoriq-50508fc2ee3c90b9e0e64da15560b4f390fa5776.tar.xz
fsl_qbman: correct the lni shaper disable function
LNI shaper is disabled by setting all 1's to both CR/ER Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com> Change-Id: I7b680ecbcfcfa41860dddcca34044116719cda08 Reviewed-on: http://git.am.freescale.net:8181/22075 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Geoff Thorpe <Geoff.Thorpe@freescale.com> Reviewed-by: Richard Schmitt <richard.schmitt@freescale.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/fsl_qbman/qman_high.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/staging/fsl_qbman/qman_high.c b/drivers/staging/fsl_qbman/qman_high.c
index 9b8a924..8d3011e 100644
--- a/drivers/staging/fsl_qbman/qman_high.c
+++ b/drivers/staging/fsl_qbman/qman_high.c
@@ -3464,10 +3464,11 @@ int qman_ceetm_lni_enable_shaper(struct qm_ceetm_lni *lni, int coupled,
lni->shaper_enable = 1;
lni->shaper_couple = coupled;
+ lni->oal = oal;
config_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx;
config_opts.dcpid = lni->dcp_idx;
- config_opts.shaper_config.cpl = (coupled << 7) | oal;
+ config_opts.shaper_config.cpl = (coupled << 7) | lni->oal;
config_opts.shaper_config.crtcr = (lni->cr_token_rate.whole << 13) |
lni->cr_token_rate.fraction;
config_opts.shaper_config.ertcr = (lni->er_token_rate.whole << 13) |
@@ -3480,13 +3481,25 @@ EXPORT_SYMBOL(qman_ceetm_lni_enable_shaper);
int qman_ceetm_lni_disable_shaper(struct qm_ceetm_lni *lni)
{
+ struct qm_mcc_ceetm_mapping_shaper_tcfc_config config_opts;
+
if (!lni->shaper_enable) {
pr_err("The shaper has been disabled\n");
return -EINVAL;
}
+ config_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx;
+ config_opts.dcpid = lni->dcp_idx;
+ config_opts.shaper_config.cpl = (lni->shaper_couple << 7) | lni->oal;
+ config_opts.shaper_config.crtbl = lni->cr_token_bucket_limit;
+ config_opts.shaper_config.ertbl = lni->er_token_bucket_limit;
+ /* Set CR/ER rate with all 1's to configure an infinite rate, thus
+ * disable the shaping.
+ */
+ config_opts.shaper_config.crtcr = 0xFFFFFF;
+ config_opts.shaper_config.ertcr = 0xFFFFFF;
lni->shaper_enable = 0;
- return 0;
+ return qman_ceetm_configure_mapping_shaper_tcfc(&config_opts);
}
EXPORT_SYMBOL(qman_ceetm_lni_disable_shaper);
@@ -3540,8 +3553,7 @@ int qman_ceetm_lni_get_commit_rate(struct qm_ceetm_lni *lni,
query_opts.dcpid = lni->dcp_idx;
ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, &query_result);
- if (ret | !query_result.shaper_query.crtcr |
- !query_result.shaper_query.crtbl) {
+ if (ret) {
pr_err("The LNI CR rate or limit is not set\n");
return -EINVAL;
}
@@ -3602,8 +3614,7 @@ int qman_ceetm_lni_get_excess_rate(struct qm_ceetm_lni *lni,
query_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx;
query_opts.dcpid = lni->dcp_idx;
ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, &query_result);
- if (ret | !query_result.shaper_query.ertcr |
- !query_result.shaper_query.ertbl) {
+ if (ret) {
pr_err("The LNI ER rate or limit is not set\n");
return -EINVAL;
}