From e826c8f48b1e8dfe3c7e35a83c3ddc0697dc3550 Mon Sep 17 00:00:00 2001 From: Pan Jiafei Date: Fri, 12 Sep 2014 19:04:40 +0800 Subject: 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 Change-Id: Ia4de53493d06768f86c617340927e2af4d722011 Reviewed-on: http://git.am.freescale.net:8181/21442 Reviewed-by: Jianhua Xie Tested-by: Review Code-CDREVIEW Tested-by: Shengzhou Liu Reviewed-by: Shengzhou Liu 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); -- cgit v0.10.2