All of lore.kernel.org
 help / color / mirror / Atom feed
From: Savinay Dharmappa <savinay.dharmappa@intel.com>
To: jasvinder.singh@intel.com, cristian.dumitrescu@intel.com, dev@dpdk.org
Cc: savinay.dharmappa@intel.com
Subject: [dpdk-dev] [PATCH v3 7/9] drivers/softnic: add dynamic config of subport
Date: Wed, 16 Sep 2020 17:43:51 +0100	[thread overview]
Message-ID: <1600274633-371993-8-git-send-email-savinay.dharmappa@intel.com> (raw)
In-Reply-To: <1600274633-371993-1-git-send-email-savinay.dharmappa@intel.com>

Modify the softnic drivers to build the hierarchical scheduler
with default subport bandwidth profile. It also allows to configure
a subport with different subport bandwidth profile dynamically.

Signed-off-by: Savinay Dharmappa <savinay.dharmappa@intel.com>
---
 drivers/net/softnic/rte_eth_softnic_internals.h |   9 +
 drivers/net/softnic/rte_eth_softnic_tm.c        | 223 +++++++++++++++++++-----
 2 files changed, 187 insertions(+), 45 deletions(-)

diff --git a/drivers/net/softnic/rte_eth_softnic_internals.h b/drivers/net/softnic/rte_eth_softnic_internals.h
index 6eec43b..cc50037 100644
--- a/drivers/net/softnic/rte_eth_softnic_internals.h
+++ b/drivers/net/softnic/rte_eth_softnic_internals.h
@@ -164,10 +164,19 @@ TAILQ_HEAD(softnic_link_list, softnic_link);
 #ifndef TM_MAX_PIPE_PROFILE
 #define TM_MAX_PIPE_PROFILE				256
 #endif
+
+#ifndef TM_MAX_SUBPORT_PROFILE
+#define TM_MAX_SUBPORT_PROFILE				256
+#endif
+
 struct tm_params {
 	struct rte_sched_port_params port_params;
 
 	struct rte_sched_subport_params subport_params[TM_MAX_SUBPORTS];
+	struct rte_sched_subport_profile_params
+				subport_profiles[TM_MAX_SUBPORT_PROFILE];
+	uint32_t n_subport_profiles;
+	uint32_t subport_to_profile[TM_MAX_SUBPORT_PROFILE];
 
 	struct rte_sched_pipe_params pipe_profiles[TM_MAX_PIPE_PROFILE];
 	uint32_t n_pipe_profiles;
diff --git a/drivers/net/softnic/rte_eth_softnic_tm.c b/drivers/net/softnic/rte_eth_softnic_tm.c
index 80a470c..a223655 100644
--- a/drivers/net/softnic/rte_eth_softnic_tm.c
+++ b/drivers/net/softnic/rte_eth_softnic_tm.c
@@ -98,6 +98,13 @@ softnic_tmgr_port_create(struct pmd_internals *p,
 			return NULL;
 		}
 
+		status = rte_sched_subport_profile_config(sched,
+			subport_id, t->subport_to_profile[subport_id]);
+		if (status) {
+			rte_sched_port_free(sched);
+			return NULL;
+		}
+
 		/* Pipe */
 		for (pipe_id = 0; pipe_id < n_pipes_per_subport; pipe_id++) {
 			int pos = subport_id * TM_MAX_PIPES_PER_SUBPORT + pipe_id;
@@ -1043,6 +1050,25 @@ tm_shared_shaper_get_tc(struct rte_eth_dev *dev,
 }
 
 static int
+subport_profile_exists(struct rte_eth_dev *dev,
+	struct rte_sched_subport_profile_params *sp,
+	uint32_t *subport_profile_id)
+{
+	struct pmd_internals *p = dev->data->dev_private;
+	struct tm_params *t = &p->soft.tm.params;
+	uint32_t i;
+
+	for (i = 0; i < t->n_subport_profiles; i++)
+		if (memcmp(&t->subport_profiles[i], sp, sizeof(*sp)) == 0) {
+			if (subport_profile_id)
+				*subport_profile_id = i;
+			return 1;
+		}
+
+	return 0;
+}
+
+static int
 update_subport_tc_rate(struct rte_eth_dev *dev,
 	struct tm_node *nt,
 	struct tm_shared_shaper *ss,
@@ -1050,26 +1076,27 @@ update_subport_tc_rate(struct rte_eth_dev *dev,
 {
 	struct pmd_internals *p = dev->data->dev_private;
 	uint32_t tc_id = tm_node_tc_id(dev, nt);
-
 	struct tm_node *np = nt->parent_node;
-
 	struct tm_node *ns = np->parent_node;
 	uint32_t subport_id = tm_node_subport_id(dev, ns);
-
-	struct rte_sched_subport_params subport_params;
-
+	struct rte_sched_subport_profile_params subport_profile;
 	struct tm_shaper_profile *sp_old = tm_shaper_profile_search(dev,
 		ss->shaper_profile_id);
+	uint32_t subport_profile_id;
 
 	/* Derive new subport configuration. */
-	memcpy(&subport_params,
-		&p->soft.tm.params.subport_params[subport_id],
-		sizeof(subport_params));
-	subport_params.tc_rate[tc_id] = sp_new->params.peak.rate;
+	memcpy(&subport_profile,
+		&p->soft.tm.params.subport_profiles[subport_id],
+		sizeof(subport_profile));
+	subport_profile.tc_rate[tc_id] = sp_new->params.peak.rate;
+
+	if (subport_profile_exists(dev, &subport_profile,
+				  &subport_profile_id) == 0)
+		return -1;
 
 	/* Update the subport configuration. */
-	if (rte_sched_subport_config(SCHED(p),
-		subport_id, &subport_params))
+	if (rte_sched_subport_profile_config(SCHED(p),
+		subport_id, subport_profile_id))
 		return -1;
 
 	/* Commit changes. */
@@ -1078,9 +1105,9 @@ update_subport_tc_rate(struct rte_eth_dev *dev,
 	ss->shaper_profile_id = sp_new->shaper_profile_id;
 	sp_new->n_users++;
 
-	memcpy(&p->soft.tm.params.subport_params[subport_id],
-		&subport_params,
-		sizeof(subport_params));
+	memcpy(&p->soft.tm.params.subport_profiles[subport_id],
+		&subport_profile,
+		sizeof(subport_profile));
 
 	return 0;
 }
@@ -2190,6 +2217,108 @@ pipe_profiles_generate(struct rte_eth_dev *dev)
 	return 0;
 }
 
+static struct rte_sched_subport_profile_params *
+subport_profile_get(struct rte_eth_dev *dev, struct tm_node *np)
+{
+	struct pmd_internals *p = dev->data->dev_private;
+	struct tm_params *t = &p->soft.tm.params;
+	uint32_t subport_id = tm_node_subport_id(dev, np->parent_node);
+
+	return &t->subport_profiles[subport_id];
+}
+
+static void
+subport_profile_mark(struct rte_eth_dev *dev,
+	uint32_t subport_id,
+	uint32_t subport_profile_id)
+{
+	struct pmd_internals *p = dev->data->dev_private;
+	struct tm_params *t = &p->soft.tm.params;
+
+	t->subport_to_profile[subport_id] = subport_profile_id;
+}
+
+static void
+subport_profile_install(struct rte_eth_dev *dev,
+	struct rte_sched_subport_profile_params *sp,
+	uint32_t subport_profile_id)
+{
+	struct pmd_internals *p = dev->data->dev_private;
+	struct tm_params *t = &p->soft.tm.params;
+
+	memcpy(&t->subport_profiles[subport_profile_id], sp, sizeof(*sp));
+	t->n_subport_profiles++;
+}
+
+static int
+subport_profile_free_exists(struct rte_eth_dev *dev,
+	uint32_t *subport_profile_id)
+{
+	struct pmd_internals *p = dev->data->dev_private;
+	struct tm_params *t = &p->soft.tm.params;
+
+	if (t->n_subport_profiles < TM_MAX_SUBPORT_PROFILE) {
+		*subport_profile_id = t->n_subport_profiles;
+		return 1;
+	}
+
+	return 0;
+}
+
+static void
+subport_profile_build(struct tm_node *np,
+	struct rte_sched_subport_profile_params *sp)
+{
+	memset(sp, 0, sizeof(*sp));
+
+	/* Pipe */
+	sp->tb_rate = np->shaper_profile->params.peak.rate;
+	sp->tb_size = np->shaper_profile->params.peak.size;
+
+	/* Traffic Class (TC) */
+	sp->tc_period = SUBPORT_TC_PERIOD;
+}
+
+static int
+subport_profiles_generate(struct rte_eth_dev *dev)
+{
+	struct pmd_internals *p = dev->data->dev_private;
+	struct tm_hierarchy *h = &p->soft.tm.h;
+	struct tm_node_list *nl = &h->nodes;
+	struct tm_node *ns;
+	uint32_t subport_id;
+
+	/* Objective: Fill in the following fields in struct tm_params:
+	 *    - subport_profiles
+	 *    - n_subport_profiles
+	 *    - subport_to_profile
+	 */
+
+	subport_id = 0;
+	TAILQ_FOREACH(ns, nl, node) {
+		if (ns->level != TM_NODE_LEVEL_SUBPORT)
+			continue;
+
+		struct rte_sched_subport_profile_params sp;
+		uint32_t pos;
+
+		subport_profile_build(ns, &sp);
+
+		if (!subport_profile_exists(dev, &sp, &pos)) {
+			if (!subport_profile_free_exists(dev, &pos))
+				return -1;
+
+			subport_profile_install(dev, &sp, pos);
+		}
+
+		subport_profile_mark(dev, subport_id, pos);
+
+		subport_id++;
+	}
+
+	return 0;
+}
+
 static struct tm_wred_profile *
 tm_tc_wred_profile_get(struct rte_eth_dev *dev, uint32_t tc_id)
 {
@@ -2447,6 +2576,15 @@ hierarchy_commit_check(struct rte_eth_dev *dev, struct rte_tm_error *error)
 				rte_strerror(EINVAL));
 	}
 
+	/* Not too many subport profiles. */
+	if (subport_profiles_generate(dev))
+		return -rte_tm_error_set(error,
+			EINVAL,
+			RTE_TM_ERROR_TYPE_UNSPECIFIED,
+			NULL,
+			rte_strerror(EINVAL));
+
+
 	/* Not too many pipe profiles. */
 	if (pipe_profiles_generate(dev))
 		return -rte_tm_error_set(error,
@@ -2528,6 +2666,9 @@ hierarchy_blueprints_create(struct rte_eth_dev *dev)
 		.frame_overhead =
 			root->shaper_profile->params.pkt_length_adjust,
 		.n_subports_per_port = root->n_children,
+		.n_subport_profiles = t->n_subport_profiles,
+		.subport_profiles = t->subport_profiles,
+		.n_max_subport_profiles = TM_MAX_SUBPORT_PROFILE,
 		.n_pipes_per_subport = TM_MAX_PIPES_PER_SUBPORT,
 	};
 
@@ -2548,28 +2689,11 @@ hierarchy_blueprints_create(struct rte_eth_dev *dev)
 				ss->shaper_profile_id) :
 				n->shaper_profile;
 			tc_rate[i] = sp->params.peak.rate;
+			t->subport_profiles[subport_id].tc_rate[i] = tc_rate[i];
 		}
 
 		t->subport_params[subport_id] =
 			(struct rte_sched_subport_params) {
-				.tb_rate = n->shaper_profile->params.peak.rate,
-				.tb_size = n->shaper_profile->params.peak.size,
-
-				.tc_rate = {tc_rate[0],
-					tc_rate[1],
-					tc_rate[2],
-					tc_rate[3],
-					tc_rate[4],
-					tc_rate[5],
-					tc_rate[6],
-					tc_rate[7],
-					tc_rate[8],
-					tc_rate[9],
-					tc_rate[10],
-					tc_rate[11],
-					tc_rate[12],
-				},
-				.tc_period = SUBPORT_TC_PERIOD,
 				.n_pipes_per_subport_enabled =
 					h->n_tm_nodes[TM_NODE_LEVEL_PIPE] /
 					h->n_tm_nodes[TM_NODE_LEVEL_SUBPORT],
@@ -2829,30 +2953,39 @@ update_subport_rate(struct rte_eth_dev *dev,
 	struct pmd_internals *p = dev->data->dev_private;
 	uint32_t subport_id = tm_node_subport_id(dev, ns);
 
-	struct rte_sched_subport_params subport_params;
+	struct rte_sched_subport_profile_params *profile0 =
+					subport_profile_get(dev, ns);
+	struct rte_sched_subport_profile_params profile1;
+	uint32_t subport_profile_id;
 
-	/* Derive new subport configuration. */
-	memcpy(&subport_params,
-		&p->soft.tm.params.subport_params[subport_id],
-		sizeof(subport_params));
-	subport_params.tb_rate = sp->params.peak.rate;
-	subport_params.tb_size = sp->params.peak.size;
+	/* Derive new pipe profile. */
+	memcpy(&profile1, profile0, sizeof(profile1));
+	profile1.tb_rate = sp->params.peak.rate;
+	profile1.tb_size = sp->params.peak.size;
+
+	/* Since implementation does not allow adding more subport profiles
+	 * after port configuration, the pipe configuration can be successfully
+	 * updated only if the new profile is also part of the existing set of
+	 * pipe profiles.
+	 */
+	if (subport_profile_exists(dev, &profile1, &subport_profile_id) == 0)
+		return -1;
 
 	/* Update the subport configuration. */
-	if (rte_sched_subport_config(SCHED(p), subport_id,
-		&subport_params))
+	if (rte_sched_subport_profile_config(SCHED(p), subport_id,
+		subport_profile_id))
 		return -1;
 
+	subport_profile_mark(dev, subport_id, subport_profile_id);
 	/* Commit changes. */
 	ns->shaper_profile->n_users--;
-
 	ns->shaper_profile = sp;
 	ns->params.shaper_profile_id = sp->shaper_profile_id;
 	sp->n_users++;
 
-	memcpy(&p->soft.tm.params.subport_params[subport_id],
-		&subport_params,
-		sizeof(subport_params));
+	memcpy(&p->soft.tm.params.subport_profiles[subport_id],
+		&profile1,
+		sizeof(profile1));
 
 	return 0;
 }
-- 
2.7.4


  parent reply	other threads:[~2020-09-16 16:47 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-15 18:27 [dpdk-dev] [RFC PATCH 0/2] Enable dyynamic configuration of subport bandwidth profile Savinay Dharmappa
2020-07-15 18:27 ` [dpdk-dev] [RFC PATCH 1/2] sched: add dynamic config " Savinay Dharmappa
2020-07-16  8:14   ` Singh, Jasvinder
2020-07-20 11:20   ` Dumitrescu, Cristian
2020-07-20 11:21     ` Dumitrescu, Cristian
2020-09-02  8:56   ` [dpdk-dev] [PATCH v1 1/4] " Savinay Dharmappa
2020-09-02  8:56     ` [dpdk-dev] [PATCH v1 2/4] " Savinay Dharmappa
2020-09-02  8:56     ` [dpdk-dev] [PATCH v1 3/4] " Savinay Dharmappa
2020-09-02  8:56     ` [dpdk-dev] [PATCH v1 4/4] " Savinay Dharmappa
2020-09-10 18:48     ` [dpdk-dev] [PATCH v2 00/10] Enable dynamic config of subport bandwidth Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 01/10] sched: add support profile data structure Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 02/10] sched: add subport profile table Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 03/10] sched: add subport profile add and config api Savinay Dharmappa
2020-09-14 14:05         ` Singh, Jasvinder
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 04/10] sched: update the grinder credit update function Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 05/10] sched: update the pipe config api implementation Savinay Dharmappa
2020-09-14 14:26         ` Singh, Jasvinder
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 06/10] example/qos_sched: add dynamic config of subport Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 07/10] example/ip_pipeline: " Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 08/10] drivers/softnic: " Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 09/10] app/test_sched: " Savinay Dharmappa
2020-09-10 18:48       ` [dpdk-dev] [PATCH v2 10/10] sched: remove the redundant code Savinay Dharmappa
2020-09-16 16:43       ` [dpdk-dev] [PATCH v3 0/9] Enable dynamic config of subport bandwidth Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 1/9] sched: add support profile data structure Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 2/9] sched: add subport profile table Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 3/9] sched: add subport profile add and config api Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 4/9] sched: update grinder credit and pipe config function Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 5/9] example/qos_sched: add dynamic config of subport Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 6/9] example/ip_pipeline: " Savinay Dharmappa
2020-09-16 16:43         ` Savinay Dharmappa [this message]
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 8/9] app/test_sched: " Savinay Dharmappa
2020-09-16 16:43         ` [dpdk-dev] [PATCH v3 9/9] sched: remove the redundant code Savinay Dharmappa
2020-09-17  8:42         ` [dpdk-dev] [PATCH v4 0/9] Enable dynamic config of subport bandwidth Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 1/9] sched: add support profile data structure Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 2/9] sched: add subport profile table Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 3/9] sched: add subport profile add and config api Savinay Dharmappa
2020-09-29 21:19             ` Dumitrescu, Cristian
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 4/9] sched: update grinder credit and pipe config function Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 5/9] example/qos_sched: add dynamic config of subport Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 6/9] example/ip_pipeline: " Savinay Dharmappa
2020-09-29 21:23             ` Dumitrescu, Cristian
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 7/9] drivers/softnic: " Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 8/9] app/test_sched: " Savinay Dharmappa
2020-09-17  8:42           ` [dpdk-dev] [PATCH v4 9/9] sched: remove the redundant code Savinay Dharmappa
2020-09-30 19:24           ` [dpdk-dev] [PATCH v5 0/9] Enable dynamic config of subport bandwidth Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 1/9] sched: add support profile table Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 2/9] sched: add subport profile add api Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 3/9] sched : add dynamic config of subport bandwidth Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 4/9] sched: update grinder credit and pipe config function Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 5/9] example/qos_sched: add dynamic config of subport Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 6/9] example/ip_pipeline: " Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 7/9] drivers/softnic: " Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 8/9] app/test_sched: " Savinay Dharmappa
2020-09-30 19:24             ` [dpdk-dev] [PATCH v5 9/9] sched : remove redundant code Savinay Dharmappa
2020-10-06 15:27             ` [dpdk-dev] [PATCH v6 0/8] Enable dynamic config of subport bandwidth Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 1/8] sched: add support profile table Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 2/8] sched: introduce subport profile add function Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 3/8] sched: update subport rate dynamically Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 4/8] example/qos_sched: " Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 5/8] example/ip_pipeline: " Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 6/8] drivers/softnic: " Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 7/8] app/test_sched: " Savinay Dharmappa
2020-10-06 15:27               ` [dpdk-dev] [PATCH v6 8/8] sched: remove redundant code Savinay Dharmappa
2020-10-06 15:52               ` [dpdk-dev] [PATCH v6 0/8] Enable dynamic config of subport bandwidth Dumitrescu, Cristian
2020-10-06 18:02               ` [dpdk-dev] [PATCH v7 " Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 1/8] sched: add support profile table Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 2/8] sched: introduce subport profile add function Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 3/8] sched: update subport rate dynamically Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 4/8] example/qos_sched: " Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 5/8] example/ip_pipeline: " Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 6/8] drivers/softnic: " Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 7/8] app/test_sched: " Savinay Dharmappa
2020-10-06 18:02                 ` [dpdk-dev] [PATCH v7 8/8] sched: remove redundant code Savinay Dharmappa
2020-10-06 19:05                 ` [dpdk-dev] [PATCH v7 0/8] Enable dynamic config of subport bandwidth Dumitrescu, Cristian
2020-10-07 14:09                 ` [dpdk-dev] [PATCH v8 " Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 1/8] sched: add support profile table Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 2/8] sched: introduce subport profile add function Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 3/8] sched: update subport rate dynamically Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 4/8] example/qos_sched: " Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 5/8] example/ip_pipeline: " Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 6/8] drivers/softnic: " Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 7/8] app/test_sched: " Savinay Dharmappa
2020-10-07 14:09                   ` [dpdk-dev] [PATCH v8 8/8] sched: remove redundant code Savinay Dharmappa
2020-10-09  8:28                     ` Thomas Monjalon
2020-10-09 12:39                   ` [dpdk-dev] [PATCH v9 0/8] Enable dynamic config of subport bandwidth Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 1/8] sched: add support profile table Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 2/8] sched: introduce subport profile add function Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 3/8] sched: update subport rate dynamically Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 4/8] example/qos_sched: " Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 5/8] example/ip_pipeline: " Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 6/8] drivers/softnic: " Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 7/8] app/test_sched: " Savinay Dharmappa
2020-10-09 12:39                     ` [dpdk-dev] [PATCH v9 8/8] sched: remove redundant code Savinay Dharmappa
2020-10-11 20:11                     ` [dpdk-dev] [PATCH v9 0/8] Enable dynamic config of subport bandwidth Thomas Monjalon
2020-10-12  5:24                       ` Dharmappa, Savinay
2020-10-12 23:08                         ` Dharmappa, Savinay
2020-10-13 13:56                           ` Dharmappa, Savinay
2020-10-13 14:06                             ` Thomas Monjalon
2020-10-15  0:17                     ` Thomas Monjalon
2020-07-15 18:27 ` [dpdk-dev] [RFC PATCH 2/2] example/qos_sched: subport bandwidth profile config Savinay Dharmappa
2020-07-16  8:14   ` Singh, Jasvinder
2020-09-02  9:07   ` [dpdk-dev] [PATCH v1 1/4] example/qos_sched: subport bandwidth dynmaic conf Savinay Dharmappa
2020-09-02  9:07     ` [dpdk-dev] [PATCH v1 2/4] example/ip_pipeline: " Savinay Dharmappa
2020-09-02  9:07     ` [dpdk-dev] [PATCH v1 3/4] drivers/softnic: subport bandwidth profile config Savinay Dharmappa
2020-09-02  9:07     ` [dpdk-dev] [PATCH v1 4/4] app/test_sched: " Savinay Dharmappa
2020-09-02 10:46     ` [dpdk-dev] [PATCH v1 1/4] example/qos_sched: subport bandwidth dynmaic conf Dharmappa, Savinay
2020-07-16  8:14 ` [dpdk-dev] [RFC PATCH 0/2] Enable dyynamic configuration of subport bandwidth profile Singh, Jasvinder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1600274633-371993-8-git-send-email-savinay.dharmappa@intel.com \
    --to=savinay.dharmappa@intel.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=jasvinder.singh@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.