summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPan Jiafei <Jiafei.Pan@freescale.com>2014-09-12 11:04:40 (GMT)
committerMatthew Weigel <Matthew.Weigel@freescale.com>2014-12-11 18:39:20 (GMT)
commite826c8f48b1e8dfe3c7e35a83c3ddc0697dc3550 (patch)
treec64a3c48ac42dcacb2b54122246c637fed7fb639
parentb708c3e89322be2e51cae3f8634c9e98b71ee623 (diff)
downloadlinux-fsl-qoriq-e826c8f48b1e8dfe3c7e35a83c3ddc0697dc3550.tar.xz
capwap: set higher priority for fqs back to outbound OP
Fqs back to outbound OP must have a higher priority compared to fqs from core to outbound OP, otherwise the buffer will be exhausted. Signed-off-by: Pan Jiafei <Jiafei.Pan@freescale.com> Change-Id: Ia4de53493d06768f86c617340927e2af4d722011 Reviewed-on: http://git.am.freescale.net:8181/21442 Reviewed-by: Jianhua Xie <jianhua.xie@freescale.com> Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Tested-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Reviewed-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
-rw-r--r--drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_domain.c4
-rw-r--r--drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.c16
-rw-r--r--drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.h2
3 files changed, 11 insertions, 11 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_domain.c b/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_domain.c
index 5251820..fa933dc 100644
--- a/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_domain.c
+++ b/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_domain.c
@@ -639,7 +639,7 @@ int add_in_tunnel(struct dpaa_capwap_domain *capwap_domain,
context_b = capwap_domain->fqs->inbound_sec_to_op_fqs.fqid_base
+ flow_index;
err = capwap_fq_tx_init(&fq[flow_index], channel, context_a,
- context_b);
+ context_b, 3);
if (err)
goto error;
@@ -1043,7 +1043,7 @@ int add_out_tunnel(struct dpaa_capwap_domain *capwap_domain,
capwap_domain->fqs->outbound_sec_to_op_fqs.fqid_base +
flow_index;
err = capwap_fq_tx_init(&fq[flow_index], channel, context_a,
- context_b);
+ context_b, 3);
if (err)
goto error_dma;
diff --git a/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.c b/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.c
index 996c6afb..8c4683a 100644
--- a/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.c
+++ b/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.c
@@ -177,7 +177,7 @@ int capwap_fq_rx_init(struct qman_fq *fq, u32 fqid,
}
int capwap_fq_tx_init(struct qman_fq *fq, u16 channel,
- u64 context_a, u32 context_b)
+ u64 context_a, u32 context_b, u8 wq)
{
struct qm_mcc_initfq opts;
int ret;
@@ -197,7 +197,7 @@ int capwap_fq_tx_init(struct qman_fq *fq, u16 channel,
if (context_b)
opts.we_mask |= QM_INITFQ_WE_CONTEXTB;
opts.fqd.dest.channel = channel;
- opts.fqd.dest.wq = 3;
+ opts.fqd.dest.wq = wq;
opts.fqd.context_b = context_b;
qm_fqd_context_a_set64(&opts.fqd, context_a);
@@ -409,7 +409,7 @@ int capwap_fq_pre_init(struct dpaa_capwap_domain *capwap_domain)
context_b =
capwap_domain->fqs->inbound_core_rx_fqs.fqid_base + i;
ret = capwap_fq_tx_init(&q_fq[i], channel, context_a,
- context_b);
+ context_b, 3);
if (ret) {
for (j = 0; j < i; j++)
qman_destroy_fq(&q_fq[j], 0);
@@ -439,7 +439,7 @@ int capwap_fq_pre_init(struct dpaa_capwap_domain *capwap_domain)
context_b =
capwap_domain->fqs->inbound_core_rx_fqs.fqid_base + i;
ret = capwap_fq_tx_init(&q_fq[i], channel, context_a,
- context_b);
+ context_b, 3);
if (ret) {
for (j = 0; j < i; j++)
qman_destroy_fq(&q_fq[j], 0);
@@ -478,7 +478,7 @@ int capwap_fq_pre_init(struct dpaa_capwap_domain *capwap_domain)
#endif
context_b = 0;
ret = capwap_fq_tx_init(&q_fq[i], channel, context_a,
- context_b);
+ context_b, 3);
if (ret) {
for (j = CAPWAP_FLOW_COUNT; j < i; j++)
qman_destroy_fq(&q_fq[j], 0);
@@ -504,7 +504,7 @@ int capwap_fq_pre_init(struct dpaa_capwap_domain *capwap_domain)
context_b = capwap_domain->fqs->outbound_op_tx_fqs.fqid_base +
i + CAPWAP_FLOW_COUNT;
ret = capwap_fq_tx_init(&q_fq[i], channel, context_a,
- context_b);
+ context_b, 1);
if (ret) {
for (j = CAPWAP_FLOW_COUNT / 2; j < i; j++)
qman_destroy_fq(&q_fq[j], 0);
@@ -536,7 +536,7 @@ int capwap_fq_pre_init(struct dpaa_capwap_domain *capwap_domain)
context_b = capwap_domain->fqs->outbound_op_tx_fqs.fqid_base +
i + CAPWAP_FLOW_COUNT;
ret = capwap_fq_tx_init(&q_fq[i], channel, context_a,
- context_b);
+ context_b, 1);
if (ret) {
for (j = 0; j < i; j++)
qman_destroy_fq(&q_fq[j], 0);
@@ -561,7 +561,7 @@ int capwap_fq_pre_init(struct dpaa_capwap_domain *capwap_domain)
context_a |= (u64)i << (32 + 4);
context_b = 0;
ret = capwap_fq_tx_init(&q_fq[i], channel, context_a,
- context_b);
+ context_b, 3);
if (ret) {
for (j = 0; j < i; j++)
qman_destroy_fq(&q_fq[j], 0);
diff --git a/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.h b/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.h
index 73a3f07..67b1122 100644
--- a/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.h
+++ b/drivers/net/ethernet/freescale/dpa/capwap/dpaa_capwap_fq.h
@@ -37,7 +37,7 @@ int capwap_fq_rx_init(struct qman_fq *fq, u32 fqid,
int capwap_fq_tx_init(struct qman_fq *fq, u16 channel,
- u64 context_a, u32 context_b);
+ u64 context_a, u32 context_b, u8 wq);
void teardown_fq(struct qman_fq *fq);