get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/43371/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 43371,
    "url": "http://patches.dpdk.org/api/patches/43371/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180725171007.94198-2-jasvinder.singh@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20180725171007.94198-2-jasvinder.singh@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180725171007.94198-2-jasvinder.singh@intel.com",
    "date": "2018-07-25T17:10:02",
    "name": "[1/6] net/softnic: add CLI command for tmgr create",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "46040ed2ef1bc347495e537a86ac1a89711f91b1",
    "submitter": {
        "id": 285,
        "url": "http://patches.dpdk.org/api/people/285/?format=api",
        "name": "Jasvinder Singh",
        "email": "jasvinder.singh@intel.com"
    },
    "delegate": {
        "id": 10018,
        "url": "http://patches.dpdk.org/api/users/10018/?format=api",
        "username": "cristian_dumitrescu",
        "first_name": "Cristian",
        "last_name": "Dumitrescu",
        "email": "cristian.dumitrescu@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180725171007.94198-2-jasvinder.singh@intel.com/mbox/",
    "series": [
        {
            "id": 775,
            "url": "http://patches.dpdk.org/api/series/775/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=775",
            "date": "2018-07-25T17:10:01",
            "name": "net/softnic: expose tmgr through firmware",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/775/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/43371/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/43371/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id D85453250;\n\tWed, 25 Jul 2018 19:10:13 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby dpdk.org (Postfix) with ESMTP id 4EF931C01\n\tfor <dev@dpdk.org>; Wed, 25 Jul 2018 19:10:11 +0200 (CEST)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t25 Jul 2018 10:10:10 -0700",
            "from silpixa00381635.ir.intel.com (HELO\n\tsilpixa00381635.ger.corp.intel.com) ([10.237.222.149])\n\tby orsmga003.jf.intel.com with ESMTP; 25 Jul 2018 10:10:09 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.51,401,1526367600\"; d=\"scan'208\";a=\"69856108\"",
        "From": "Jasvinder Singh <jasvinder.singh@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "cristian.dumitrescu@intel.com",
        "Date": "Wed, 25 Jul 2018 18:10:02 +0100",
        "Message-Id": "<20180725171007.94198-2-jasvinder.singh@intel.com>",
        "X-Mailer": "git-send-email 2.9.3",
        "In-Reply-To": "<20180725171007.94198-1-jasvinder.singh@intel.com>",
        "References": "<20180725171007.94198-1-jasvinder.singh@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 1/6] net/softnic: add CLI command for tmgr create",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Cristian Dumitrescu <cristian.dumitrescu@intel.com>\n\nAdd support to create Traffic Manager (TMGR) object through firmware\nCLI script.\n\nSigned-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>\nSigned-off-by: Jasvinder Singh <jasvinder.singh@intel.com>\n---\n drivers/net/softnic/rte_eth_softnic.c           |  17 +-\n drivers/net/softnic/rte_eth_softnic_cli.c       |  32 ++++\n drivers/net/softnic/rte_eth_softnic_internals.h |  14 +-\n drivers/net/softnic/rte_eth_softnic_tm.c        | 205 ++++++++++--------------\n 4 files changed, 124 insertions(+), 144 deletions(-)",
    "diff": "diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c\nindex 2688e17..30fb395 100644\n--- a/drivers/net/softnic/rte_eth_softnic.c\n+++ b/drivers/net/softnic/rte_eth_softnic.c\n@@ -156,14 +156,6 @@ pmd_dev_start(struct rte_eth_dev *dev)\n \tstruct pmd_internals *p = dev->data->dev_private;\n \tint status;\n \n-\t/* TM */\n-\tif (tm_used(dev)) {\n-\t\tstatus = tm_start(p);\n-\n-\t\tif (status)\n-\t\t\treturn status;\n-\t}\n-\n \t/* Firmware */\n \tstatus = softnic_cli_script_process(p,\n \t\tp->params.firmware,\n@@ -197,8 +189,7 @@ pmd_dev_stop(struct rte_eth_dev *dev)\n \tsoftnic_softnic_swq_free_keep_rxq_txq(p);\n \tsoftnic_mempool_free(p);\n \n-\t/* TM */\n-\ttm_stop(p);\n+\ttm_hierarchy_free(p);\n }\n \n static void\n@@ -273,10 +264,11 @@ pmd_init(struct pmd_params *params)\n \tmemcpy(&p->params, params, sizeof(p->params));\n \n \t/* Resources */\n+\ttm_hierarchy_init(p);\n+\n \tsoftnic_mempool_init(p);\n \tsoftnic_swq_init(p);\n \tsoftnic_link_init(p);\n-\ttm_init(p);\n \tsoftnic_tmgr_init(p);\n \tsoftnic_tap_init(p);\n \tsoftnic_port_in_action_profile_init(p);\n@@ -322,11 +314,12 @@ pmd_free(struct pmd_internals *p)\n \tsoftnic_port_in_action_profile_free(p);\n \tsoftnic_tap_free(p);\n \tsoftnic_tmgr_free(p);\n-\ttm_free(p);\n \tsoftnic_link_free(p);\n \tsoftnic_swq_free(p);\n \tsoftnic_mempool_free(p);\n \n+\ttm_hierarchy_free(p);\n+\n \trte_free(p);\n }\n \ndiff --git a/drivers/net/softnic/rte_eth_softnic_cli.c b/drivers/net/softnic/rte_eth_softnic_cli.c\nindex 860d6a9..4a63b94 100644\n--- a/drivers/net/softnic/rte_eth_softnic_cli.c\n+++ b/drivers/net/softnic/rte_eth_softnic_cli.c\n@@ -185,6 +185,33 @@ cmd_swq(struct pmd_internals *softnic,\n }\n \n /**\n+ * tmgr <tmgr_name>\n+ */\n+static void\n+cmd_tmgr(struct pmd_internals *softnic,\n+\tchar **tokens,\n+\tuint32_t n_tokens,\n+\tchar *out,\n+\tsize_t out_size)\n+{\n+\tchar *name;\n+\tstruct softnic_tmgr_port *tmgr_port;\n+\n+\tif (n_tokens != 2) {\n+\t\tsnprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);\n+\t\treturn;\n+\t}\n+\n+\tname = tokens[1];\n+\n+\ttmgr_port = softnic_tmgr_port_create(softnic, name);\n+\tif (tmgr_port == NULL) {\n+\t\tsnprintf(out, out_size, MSG_CMD_FAIL, tokens[0]);\n+\t\treturn;\n+\t}\n+}\n+\n+/**\n  * tap <tap_name>\n  */\n static void\n@@ -3955,6 +3982,11 @@ softnic_cli_process(char *in, char *out, size_t out_size, void *arg)\n \t\treturn;\n \t}\n \n+\tif (strcmp(tokens[0], \"tmgr\") == 0) {\n+\t\tcmd_tmgr(softnic, tokens, n_tokens, out, out_size);\n+\t\treturn;\n+\t}\n+\n \tif (strcmp(tokens[0], \"tap\") == 0) {\n \t\tcmd_tap(softnic, tokens, n_tokens, out, out_size);\n \t\treturn;\ndiff --git a/drivers/net/softnic/rte_eth_softnic_internals.h b/drivers/net/softnic/rte_eth_softnic_internals.h\nindex 4738cf3..a25eb87 100644\n--- a/drivers/net/softnic/rte_eth_softnic_internals.h\n+++ b/drivers/net/softnic/rte_eth_softnic_internals.h\n@@ -203,7 +203,6 @@ struct tm_internals {\n \n \t/** Blueprints */\n \tstruct tm_params params;\n-\tstruct rte_sched_port *sched;\n };\n \n struct softnic_tmgr_port {\n@@ -575,20 +574,13 @@ softnic_tmgr_port_find(struct pmd_internals *p,\n \n struct softnic_tmgr_port *\n softnic_tmgr_port_create(struct pmd_internals *p,\n-\tconst char *name,\n-\tstruct rte_sched_port *sched);\n-\n-int\n-tm_init(struct pmd_internals *p);\n+\tconst char *name);\n \n void\n-tm_free(struct pmd_internals *p);\n-\n-int\n-tm_start(struct pmd_internals *p);\n+tm_hierarchy_init(struct pmd_internals *p);\n \n void\n-tm_stop(struct pmd_internals *p);\n+tm_hierarchy_free(struct pmd_internals *p);\n \n static inline int\n tm_used(struct rte_eth_dev *dev)\ndiff --git a/drivers/net/softnic/rte_eth_softnic_tm.c b/drivers/net/softnic/rte_eth_softnic_tm.c\nindex 8e473c8..baaafbe 100644\n--- a/drivers/net/softnic/rte_eth_softnic_tm.c\n+++ b/drivers/net/softnic/rte_eth_softnic_tm.c\n@@ -34,6 +34,7 @@ softnic_tmgr_free(struct pmd_internals *p)\n \t\t\tbreak;\n \n \t\tTAILQ_REMOVE(&p->tmgr_port_list, tmgr_port, node);\n+\t\trte_sched_port_free(tmgr_port->s);\n \t\tfree(tmgr_port);\n \t}\n }\n@@ -56,23 +57,71 @@ softnic_tmgr_port_find(struct pmd_internals *p,\n \n struct softnic_tmgr_port *\n softnic_tmgr_port_create(struct pmd_internals *p,\n-\tconst char *name,\n-\tstruct rte_sched_port *sched)\n+\tconst char *name)\n {\n \tstruct softnic_tmgr_port *tmgr_port;\n+\tstruct tm_params *t = &p->soft.tm.params;\n+\tstruct rte_sched_port *sched;\n+\tuint32_t n_subports, subport_id;\n \n \t/* Check input params */\n \tif (name == NULL ||\n-\t\tsoftnic_tmgr_port_find(p, name) ||\n-\t\tsched == NULL)\n+\t\tsoftnic_tmgr_port_find(p, name))\n \t\treturn NULL;\n \n-\t/* Resource */\n+\t/*\n+\t * Resource\n+\t */\n+\n+\t/* Is hierarchy frozen? */\n+\tif (p->soft.tm.hierarchy_frozen == 0)\n+\t\treturn NULL;\n+\n+\t/* Port */\n+\tsched = rte_sched_port_config(&t->port_params);\n+\tif (sched == NULL)\n+\t\treturn NULL;\n+\n+\t/* Subport */\n+\tn_subports = t->port_params.n_subports_per_port;\n+\tfor (subport_id = 0; subport_id < n_subports; subport_id++) {\n+\t\tuint32_t n_pipes_per_subport = t->port_params.n_pipes_per_subport;\n+\t\tuint32_t pipe_id;\n+\t\tint status;\n+\n+\t\tstatus = rte_sched_subport_config(sched,\n+\t\t\tsubport_id,\n+\t\t\t&t->subport_params[subport_id]);\n+\t\tif (status) {\n+\t\t\trte_sched_port_free(sched);\n+\t\t\treturn NULL;\n+\t\t}\n+\n+\t\t/* Pipe */\n+\t\tfor (pipe_id = 0; pipe_id < n_pipes_per_subport; pipe_id++) {\n+\t\t\tint pos = subport_id * TM_MAX_PIPES_PER_SUBPORT + pipe_id;\n+\t\t\tint profile_id = t->pipe_to_profile[pos];\n+\n+\t\t\tif (profile_id < 0)\n+\t\t\t\tcontinue;\n+\n+\t\t\tstatus = rte_sched_pipe_config(sched,\n+\t\t\t\tsubport_id,\n+\t\t\t\tpipe_id,\n+\t\t\t\tprofile_id);\n+\t\t\tif (status) {\n+\t\t\t\trte_sched_port_free(sched);\n+\t\t\t\treturn NULL;\n+\t\t\t}\n+\t\t}\n+\t}\n \n \t/* Node allocation */\n \ttmgr_port = calloc(1, sizeof(struct softnic_tmgr_port));\n-\tif (tmgr_port == NULL)\n+\tif (tmgr_port == NULL) {\n+\t\trte_sched_port_free(sched);\n \t\treturn NULL;\n+\t}\n \n \t/* Node fill in */\n \tstrlcpy(tmgr_port->name, name, sizeof(tmgr_port->name));\n@@ -84,10 +133,22 @@ softnic_tmgr_port_create(struct pmd_internals *p,\n \treturn tmgr_port;\n }\n \n-static void\n+static struct rte_sched_port *\n+SCHED(struct pmd_internals *p)\n+{\n+\tstruct softnic_tmgr_port *tmgr_port;\n+\n+\ttmgr_port = softnic_tmgr_port_find(p, \"TMGR\");\n+\tif (tmgr_port == NULL)\n+\t\treturn NULL;\n+\n+\treturn tmgr_port->s;\n+}\n+\n+void\n tm_hierarchy_init(struct pmd_internals *p)\n {\n-\tmemset(&p->soft.tm.h, 0, sizeof(p->soft.tm.h));\n+\tmemset(&p->soft.tm, 0, sizeof(p->soft.tm));\n \n \t/* Initialize shaper profile list */\n \tTAILQ_INIT(&p->soft.tm.h.shaper_profiles);\n@@ -102,8 +163,8 @@ tm_hierarchy_init(struct pmd_internals *p)\n \tTAILQ_INIT(&p->soft.tm.h.nodes);\n }\n \n-static void\n-tm_hierarchy_uninit(struct pmd_internals *p)\n+void\n+tm_hierarchy_free(struct pmd_internals *p)\n {\n \t/* Remove all nodes*/\n \tfor ( ; ; ) {\n@@ -154,98 +215,7 @@ tm_hierarchy_uninit(struct pmd_internals *p)\n \t\tfree(shaper_profile);\n \t}\n \n-\tmemset(&p->soft.tm.h, 0, sizeof(p->soft.tm.h));\n-}\n-\n-int\n-tm_init(struct pmd_internals *p)\n-{\n \ttm_hierarchy_init(p);\n-\n-\treturn 0;\n-}\n-\n-void\n-tm_free(struct pmd_internals *p)\n-{\n-\ttm_hierarchy_uninit(p);\n-}\n-\n-int\n-tm_start(struct pmd_internals *p)\n-{\n-\tstruct softnic_tmgr_port *tmgr_port;\n-\tstruct tm_params *t = &p->soft.tm.params;\n-\tstruct rte_sched_port *sched;\n-\tuint32_t n_subports, subport_id;\n-\tint status;\n-\n-\t/* Is hierarchy frozen? */\n-\tif (p->soft.tm.hierarchy_frozen == 0)\n-\t\treturn -1;\n-\n-\t/* Port */\n-\tsched = rte_sched_port_config(&t->port_params);\n-\tif (sched == NULL)\n-\t\treturn -1;\n-\n-\t/* Subport */\n-\tn_subports = t->port_params.n_subports_per_port;\n-\tfor (subport_id = 0; subport_id < n_subports; subport_id++) {\n-\t\tuint32_t n_pipes_per_subport =\n-\t\t\tt->port_params.n_pipes_per_subport;\n-\t\tuint32_t pipe_id;\n-\n-\t\tstatus = rte_sched_subport_config(sched,\n-\t\t\tsubport_id,\n-\t\t\t&t->subport_params[subport_id]);\n-\t\tif (status) {\n-\t\t\trte_sched_port_free(sched);\n-\t\t\treturn -1;\n-\t\t}\n-\n-\t\t/* Pipe */\n-\t\tn_pipes_per_subport = t->port_params.n_pipes_per_subport;\n-\t\tfor (pipe_id = 0; pipe_id < n_pipes_per_subport; pipe_id++) {\n-\t\t\tint pos = subport_id * TM_MAX_PIPES_PER_SUBPORT +\n-\t\t\t\tpipe_id;\n-\t\t\tint profile_id = t->pipe_to_profile[pos];\n-\n-\t\t\tif (profile_id < 0)\n-\t\t\t\tcontinue;\n-\n-\t\t\tstatus = rte_sched_pipe_config(sched,\n-\t\t\t\tsubport_id,\n-\t\t\t\tpipe_id,\n-\t\t\t\tprofile_id);\n-\t\t\tif (status) {\n-\t\t\t\trte_sched_port_free(sched);\n-\t\t\t\treturn -1;\n-\t\t\t}\n-\t\t}\n-\t}\n-\n-\ttmgr_port = softnic_tmgr_port_create(p, \"TMGR\", sched);\n-\tif (tmgr_port == NULL) {\n-\t\trte_sched_port_free(sched);\n-\t\treturn -1;\n-\t}\n-\n-\t/* Commit */\n-\tp->soft.tm.sched = sched;\n-\n-\treturn 0;\n-}\n-\n-void\n-tm_stop(struct pmd_internals *p)\n-{\n-\tif (p->soft.tm.sched) {\n-\t\trte_sched_port_free(p->soft.tm.sched);\n-\t\tp->soft.tm.sched = NULL;\n-\t}\n-\t/* Unfreeze hierarchy */\n-\tp->soft.tm.hierarchy_frozen = 0;\n }\n \n static struct tm_shaper_profile *\n@@ -1095,7 +1065,7 @@ update_subport_tc_rate(struct rte_eth_dev *dev,\n \tsubport_params.tc_rate[tc_id] = sp_new->params.peak.rate;\n \n \t/* Update the subport configuration. */\n-\tif (rte_sched_subport_config(p->soft.tm.sched,\n+\tif (rte_sched_subport_config(SCHED(p),\n \t\tsubport_id, &subport_params))\n \t\treturn -1;\n \n@@ -2623,10 +2593,8 @@ pmd_tm_hierarchy_commit(struct rte_eth_dev *dev,\n \n \tstatus = hierarchy_commit_check(dev, error);\n \tif (status) {\n-\t\tif (clear_on_fail) {\n-\t\t\ttm_hierarchy_uninit(p);\n-\t\t\ttm_hierarchy_init(p);\n-\t\t}\n+\t\tif (clear_on_fail)\n+\t\t\ttm_hierarchy_free(p);\n \n \t\treturn status;\n \t}\n@@ -2668,7 +2636,7 @@ update_pipe_weight(struct rte_eth_dev *dev, struct tm_node *np, uint32_t weight)\n \t\treturn -1;\n \n \t/* Update the pipe profile used by the current pipe. */\n-\tif (rte_sched_pipe_config(p->soft.tm.sched, subport_id, pipe_id,\n+\tif (rte_sched_pipe_config(SCHED(p), subport_id, pipe_id,\n \t\t(int32_t)pipe_profile_id))\n \t\treturn -1;\n \n@@ -2717,7 +2685,7 @@ update_queue_weight(struct rte_eth_dev *dev,\n \t\treturn -1;\n \n \t/* Update the pipe profile used by the current pipe. */\n-\tif (rte_sched_pipe_config(p->soft.tm.sched, subport_id, pipe_id,\n+\tif (rte_sched_pipe_config(SCHED(p), subport_id, pipe_id,\n \t\t(int32_t)pipe_profile_id))\n \t\treturn -1;\n \n@@ -2850,7 +2818,7 @@ update_subport_rate(struct rte_eth_dev *dev,\n \tsubport_params.tb_size = sp->params.peak.size;\n \n \t/* Update the subport configuration. */\n-\tif (rte_sched_subport_config(p->soft.tm.sched, subport_id,\n+\tif (rte_sched_subport_config(SCHED(p), subport_id,\n \t\t&subport_params))\n \t\treturn -1;\n \n@@ -2897,7 +2865,7 @@ update_pipe_rate(struct rte_eth_dev *dev,\n \t\treturn -1;\n \n \t/* Update the pipe profile used by the current pipe. */\n-\tif (rte_sched_pipe_config(p->soft.tm.sched, subport_id, pipe_id,\n+\tif (rte_sched_pipe_config(SCHED(p), subport_id, pipe_id,\n \t\t(int32_t)pipe_profile_id))\n \t\treturn -1;\n \n@@ -2942,7 +2910,7 @@ update_tc_rate(struct rte_eth_dev *dev,\n \t\treturn -1;\n \n \t/* Update the pipe profile used by the current pipe. */\n-\tif (rte_sched_pipe_config(p->soft.tm.sched, subport_id, pipe_id,\n+\tif (rte_sched_pipe_config(SCHED(p), subport_id, pipe_id,\n \t\t(int32_t)pipe_profile_id))\n \t\treturn -1;\n \n@@ -3077,8 +3045,7 @@ read_port_stats(struct rte_eth_dev *dev,\n \t\tuint32_t tc_ov, id;\n \n \t\t/* Stats read */\n-\t\tint status = rte_sched_subport_read_stats(\n-\t\t\tp->soft.tm.sched,\n+\t\tint status = rte_sched_subport_read_stats(SCHED(p),\n \t\t\tsubport_id,\n \t\t\t&s,\n \t\t\t&tc_ov);\n@@ -3125,8 +3092,7 @@ read_subport_stats(struct rte_eth_dev *dev,\n \tuint32_t tc_ov, tc_id;\n \n \t/* Stats read */\n-\tint status = rte_sched_subport_read_stats(\n-\t\tp->soft.tm.sched,\n+\tint status = rte_sched_subport_read_stats(SCHED(p),\n \t\tsubport_id,\n \t\t&s,\n \t\t&tc_ov);\n@@ -3186,8 +3152,7 @@ read_pipe_stats(struct rte_eth_dev *dev,\n \t\t\ti / RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS,\n \t\t\ti % RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS);\n \n-\t\tint status = rte_sched_queue_read_stats(\n-\t\t\tp->soft.tm.sched,\n+\t\tint status = rte_sched_queue_read_stats(SCHED(p),\n \t\t\tqid,\n \t\t\t&s,\n \t\t\t&qlen);\n@@ -3247,8 +3212,7 @@ read_tc_stats(struct rte_eth_dev *dev,\n \t\t\ttc_id,\n \t\t\ti);\n \n-\t\tint status = rte_sched_queue_read_stats(\n-\t\t\tp->soft.tm.sched,\n+\t\tint status = rte_sched_queue_read_stats(SCHED(p),\n \t\t\tqid,\n \t\t\t&s,\n \t\t\t&qlen);\n@@ -3307,8 +3271,7 @@ read_queue_stats(struct rte_eth_dev *dev,\n \t\ttc_id,\n \t\tqueue_id);\n \n-\tint status = rte_sched_queue_read_stats(\n-\t\tp->soft.tm.sched,\n+\tint status = rte_sched_queue_read_stats(SCHED(p),\n \t\tqid,\n \t\t&s,\n \t\t&qlen);\n",
    "prefixes": [
        "1/6"
    ]
}