diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0068-sdk_dpaa-ceetm-propagate-the-ceetm-channel-through-t.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0068-sdk_dpaa-ceetm-propagate-the-ceetm-channel-through-t.patch | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0068-sdk_dpaa-ceetm-propagate-the-ceetm-channel-through-t.patch b/target/linux/layerscape/patches-5.4/701-net-0068-sdk_dpaa-ceetm-propagate-the-ceetm-channel-through-t.patch deleted file mode 100644 index f10670241c..0000000000 --- a/target/linux/layerscape/patches-5.4/701-net-0068-sdk_dpaa-ceetm-propagate-the-ceetm-channel-through-t.patch +++ /dev/null @@ -1,298 +0,0 @@ -From dfd2deb8bc482588999a4f03b5ab5d049e50fdb0 Mon Sep 17 00:00:00 2001 -From: Camelia Groza <camelia.groza@nxp.com> -Date: Wed, 30 May 2018 14:51:35 +0300 -Subject: [PATCH] sdk_dpaa: ceetm: propagate the ceetm channel through the - qdisc tree - -Signed-off-by: Camelia Groza <camelia.groza@nxp.com> ---- - .../ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c | 61 +++++++++------------- - .../ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.h | 4 +- - 2 files changed, 29 insertions(+), 36 deletions(-) - ---- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c -+++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c -@@ -242,7 +242,6 @@ static int ceetm_config_lfq(struct qm_ce - /* Configure a prio ceetm class */ - static int ceetm_config_prio_cls(struct ceetm_class *cls, - struct net_device *dev, -- struct qm_ceetm_channel *channel, - unsigned int id) - { - int err; -@@ -253,22 +252,22 @@ static int ceetm_config_prio_cls(struct - return err; - - /* Claim and configure the CCG */ -- err = ceetm_config_ccg(&cls->prio.ccg, channel, id, cls->prio.fq, -+ err = ceetm_config_ccg(&cls->prio.ccg, cls->ch, id, cls->prio.fq, - dpa_priv); - if (err) - return err; - - /* Claim and configure the CQ */ -- err = qman_ceetm_cq_claim(&cls->prio.cq, channel, id, cls->prio.ccg); -+ err = qman_ceetm_cq_claim(&cls->prio.cq, cls->ch, id, cls->prio.ccg); - if (err) - return err; - - if (cls->shaped) { -- err = qman_ceetm_channel_set_cq_cr_eligibility(channel, id, 1); -+ err = qman_ceetm_channel_set_cq_cr_eligibility(cls->ch, id, 1); - if (err) - return err; - -- err = qman_ceetm_channel_set_cq_er_eligibility(channel, id, 1); -+ err = qman_ceetm_channel_set_cq_er_eligibility(cls->ch, id, 1); - if (err) - return err; - } -@@ -284,7 +283,6 @@ static int ceetm_config_prio_cls(struct - /* Configure a wbfs ceetm class */ - static int ceetm_config_wbfs_cls(struct ceetm_class *cls, - struct net_device *dev, -- struct qm_ceetm_channel *channel, - unsigned int id, int type) - { - int err; -@@ -295,17 +293,17 @@ static int ceetm_config_wbfs_cls(struct - return err; - - /* Claim and configure the CCG */ -- err = ceetm_config_ccg(&cls->wbfs.ccg, channel, id, cls->wbfs.fq, -+ err = ceetm_config_ccg(&cls->wbfs.ccg, cls->ch, id, cls->wbfs.fq, - dpa_priv); - if (err) - return err; - - /* Claim and configure the CQ */ - if (type == WBFS_GRP_B) -- err = qman_ceetm_cq_claim_B(&cls->wbfs.cq, channel, id, -+ err = qman_ceetm_cq_claim_B(&cls->wbfs.cq, cls->ch, id, - cls->wbfs.ccg); - else -- err = qman_ceetm_cq_claim_A(&cls->wbfs.cq, channel, id, -+ err = qman_ceetm_cq_claim_A(&cls->wbfs.cq, cls->ch, id, - cls->wbfs.ccg); - if (err) - return err; -@@ -366,10 +364,10 @@ static void ceetm_cls_destroy(struct Qdi - cl->root.child = NULL; - } - -- if (cl->root.ch && qman_ceetm_channel_release(cl->root.ch)) -+ if (cl->ch && qman_ceetm_channel_release(cl->ch)) - pr_err(KBUILD_BASENAME - " : %s : error releasing the channel %d\n", -- __func__, cl->root.ch->idx); -+ __func__, cl->ch->idx); - - break; - -@@ -766,6 +764,7 @@ static int ceetm_init_prio(struct Qdisc - - priv->shaped = parent_cl->shaped; - priv->prio.qcount = qopt->qcount; -+ priv->prio.ch = parent_cl->ch; - - /* Create and configure qcount child classes */ - for (i = 0; i < priv->prio.qcount; i++) { -@@ -790,6 +789,7 @@ static int ceetm_init_prio(struct Qdisc - child_cl->type = CEETM_PRIO; - child_cl->shaped = priv->shaped; - child_cl->prio.child = NULL; -+ child_cl->ch = priv->prio.ch; - - /* All shaped CQs have CR and ER enabled by default */ - child_cl->prio.cr = child_cl->shaped; -@@ -798,8 +798,7 @@ static int ceetm_init_prio(struct Qdisc - child_cl->prio.cq = NULL; - - /* Configure the corresponding hardware CQ */ -- err = ceetm_config_prio_cls(child_cl, dev, -- parent_cl->root.ch, i); -+ err = ceetm_config_prio_cls(child_cl, dev, i); - if (err) { - pr_err(KBUILD_BASENAME " : %s : failed to configure the ceetm prio class %X\n", - __func__, child_cl->common.classid); -@@ -831,7 +830,6 @@ static int ceetm_init_wbfs(struct Qdisc - struct ceetm_class *parent_cl, *child_cl, *root_cl; - struct Qdisc *parent_qdisc; - struct ceetm_qdisc *parent_priv; -- struct qm_ceetm_channel *channel; - struct net_device *dev = qdisc_dev(sch); - - pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle); -@@ -904,8 +902,7 @@ static int ceetm_init_wbfs(struct Qdisc - priv->wbfs.qcount = qopt->qcount; - priv->wbfs.cr = qopt->cr; - priv->wbfs.er = qopt->er; -- -- channel = root_cl->root.ch; -+ priv->wbfs.ch = parent_cl->ch; - - /* Configure the hardware wbfs channel groups */ - if (priv->wbfs.qcount == CEETM_MAX_WBFS_QCOUNT) { -@@ -920,7 +917,7 @@ static int ceetm_init_wbfs(struct Qdisc - /* Configure the group B */ - priv->wbfs.group_type = WBFS_GRP_B; - -- err = qman_ceetm_channel_get_group(channel, &small_group, -+ err = qman_ceetm_channel_get_group(priv->wbfs.ch, &small_group, - &prio_a, &prio_b); - if (err) { - pr_err(KBUILD_BASENAME " : %s : failed to get group details\n", -@@ -938,7 +935,7 @@ static int ceetm_init_wbfs(struct Qdisc - /* Configure the small group A */ - priv->wbfs.group_type = WBFS_GRP_A; - -- err = qman_ceetm_channel_get_group(channel, &small_group, -+ err = qman_ceetm_channel_get_group(priv->wbfs.ch, &small_group, - &prio_a, &prio_b); - if (err) { - pr_err(KBUILD_BASENAME " : %s : failed to get group details\n", -@@ -953,13 +950,13 @@ static int ceetm_init_wbfs(struct Qdisc - prio_b = prio_b ? : prio_a; - } - -- err = qman_ceetm_channel_set_group(channel, small_group, prio_a, -+ err = qman_ceetm_channel_set_group(priv->wbfs.ch, small_group, prio_a, - prio_b); - if (err) - goto err_init_wbfs; - - if (priv->shaped) { -- err = qman_ceetm_channel_set_group_cr_eligibility(channel, -+ err = qman_ceetm_channel_set_group_cr_eligibility(priv->wbfs.ch, - group_b, - priv->wbfs.cr); - if (err) { -@@ -968,7 +965,7 @@ static int ceetm_init_wbfs(struct Qdisc - goto err_init_wbfs; - } - -- err = qman_ceetm_channel_set_group_er_eligibility(channel, -+ err = qman_ceetm_channel_set_group_er_eligibility(priv->wbfs.ch, - group_b, - priv->wbfs.er); - if (err) { -@@ -1003,13 +1000,14 @@ static int ceetm_init_wbfs(struct Qdisc - child_cl->wbfs.fq = NULL; - child_cl->wbfs.cq = NULL; - child_cl->wbfs.weight = qopt->qweight[i]; -+ child_cl->ch = priv->wbfs.ch; - - if (priv->wbfs.group_type == WBFS_GRP_B) - id = WBFS_GRP_B_OFFSET + i; - else - id = WBFS_GRP_A_OFFSET + i; - -- err = ceetm_config_wbfs_cls(child_cl, dev, channel, id, -+ err = ceetm_config_wbfs_cls(child_cl, dev, id, - priv->wbfs.group_type); - if (err) { - pr_err(KBUILD_BASENAME " : %s : failed to configure the ceetm wbfs class %X\n", -@@ -1178,9 +1176,6 @@ static int ceetm_change_wbfs(struct Qdis - { - int err; - bool group_b; -- struct qm_ceetm_channel *channel; -- struct ceetm_class *prio_class, *root_class; -- struct ceetm_qdisc *prio_qdisc; - - if (qopt->qcount) { - pr_err("CEETM: the qcount can not be modified\n"); -@@ -1206,14 +1201,10 @@ static int ceetm_change_wbfs(struct Qdis - if (!priv->shaped) - return 0; - -- prio_class = priv->wbfs.parent; -- prio_qdisc = qdisc_priv(prio_class->parent); -- root_class = prio_qdisc->prio.parent; -- channel = root_class->root.ch; - group_b = priv->wbfs.group_type == WBFS_GRP_B; - - if (qopt->cr != priv->wbfs.cr) { -- err = qman_ceetm_channel_set_group_cr_eligibility(channel, -+ err = qman_ceetm_channel_set_group_cr_eligibility(priv->wbfs.ch, - group_b, - qopt->cr); - if (err) -@@ -1222,7 +1213,7 @@ static int ceetm_change_wbfs(struct Qdis - } - - if (qopt->er != priv->wbfs.er) { -- err = qman_ceetm_channel_set_group_er_eligibility(channel, -+ err = qman_ceetm_channel_set_group_er_eligibility(priv->wbfs.ch, - group_b, - qopt->er); - if (err) -@@ -1337,7 +1328,7 @@ static int ceetm_cls_change_root(struct - - if (cl->shaped && cl->root.rate != copt->rate) { - bps = copt->rate << 3; /* Bps -> bps */ -- err = qman_ceetm_channel_set_commit_rate_bps(cl->root.ch, bps, -+ err = qman_ceetm_channel_set_commit_rate_bps(cl->ch, bps, - dev->mtu); - if (err) - goto change_cls_err; -@@ -1346,7 +1337,7 @@ static int ceetm_cls_change_root(struct - - if (cl->shaped && cl->root.ceil != copt->ceil) { - bps = copt->ceil << 3; /* Bps -> bps */ -- err = qman_ceetm_channel_set_excess_rate_bps(cl->root.ch, bps, -+ err = qman_ceetm_channel_set_excess_rate_bps(cl->ch, bps, - dev->mtu); - if (err) - goto change_cls_err; -@@ -1354,7 +1345,7 @@ static int ceetm_cls_change_root(struct - } - - if (!cl->shaped && cl->root.tbl != copt->tbl) { -- err = qman_ceetm_channel_set_weight(cl->root.ch, copt->tbl); -+ err = qman_ceetm_channel_set_weight(cl->ch, copt->tbl); - if (err) - goto change_cls_err; - cl->root.tbl = copt->tbl; -@@ -1555,7 +1546,7 @@ static int ceetm_cls_change(struct Qdisc - goto claim_err; - } - -- cl->root.ch = channel; -+ cl->ch = channel; - - if (cl->shaped) { - /* Configure the channel shaper */ ---- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.h -+++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.h -@@ -121,12 +121,14 @@ struct root_q { - struct prio_q { - __u16 qcount; - struct ceetm_class *parent; -+ struct qm_ceetm_channel *ch; - }; - - struct wbfs_q { - __u16 qcount; - int group_type; - struct ceetm_class *parent; -+ struct qm_ceetm_channel *ch; - __u16 cr; - __u16 er; - }; -@@ -165,7 +167,6 @@ struct root_c { - bool wbfs_grp_b; - bool wbfs_grp_large; - struct Qdisc *child; -- struct qm_ceetm_channel *ch; - }; - - struct prio_c { -@@ -194,6 +195,7 @@ struct ceetm_class { - struct tcf_proto *filter_list; /* class attached filters */ - struct tcf_block *block; - struct Qdisc *parent; -+ struct qm_ceetm_channel *ch; - bool shaped; - int type; /* ROOT/PRIO/WBFS */ - union { |