All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vedang Patel <vedang.patel@intel.com>
To: netdev@vger.kernel.org
Cc: jeffrey.t.kirsher@intel.com, davem@davemloft.net,
	jhs@mojatatu.com, xiyou.wangcong@gmail.com, jiri@resnulli.us,
	intel-wired-lan@lists.osuosl.org, vinicius.gomes@intel.com,
	l@dorileo.org, jakub.kicinski@netronome.com, m-karicheri2@ti.com,
	sergei.shtylyov@cogentembedded.com, eric.dumazet@gmail.com,
	aaron.f.brown@intel.com, Vedang Patel <vedang.patel@intel.com>
Subject: [PATCH net-next v5 3/7] taprio: calculate cycle_time when schedule is installed
Date: Fri, 21 Jun 2019 10:28:24 -0700	[thread overview]
Message-ID: <1561138108-12943-4-git-send-email-vedang.patel@intel.com> (raw)
In-Reply-To: <1561138108-12943-1-git-send-email-vedang.patel@intel.com>

cycle time for a particular schedule is calculated only when it is first
installed. So, it makes sense to just calculate it once right after the
'cycle_time' parameter has been parsed and store it in cycle_time.

Signed-off-by: Vedang Patel <vedang.patel@intel.com>
---
 net/sched/sch_taprio.c | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c
index 9ecfb8f5902a..a41d7d4434ee 100644
--- a/net/sched/sch_taprio.c
+++ b/net/sched/sch_taprio.c
@@ -108,22 +108,6 @@ static void switch_schedules(struct taprio_sched *q,
 	*admin = NULL;
 }
 
-static ktime_t get_cycle_time(struct sched_gate_list *sched)
-{
-	struct sched_entry *entry;
-	ktime_t cycle = 0;
-
-	if (sched->cycle_time != 0)
-		return sched->cycle_time;
-
-	list_for_each_entry(entry, &sched->entries, list)
-		cycle = ktime_add_ns(cycle, entry->interval);
-
-	sched->cycle_time = cycle;
-
-	return cycle;
-}
-
 static int taprio_enqueue(struct sk_buff *skb, struct Qdisc *sch,
 			  struct sk_buff **to_free)
 {
@@ -524,6 +508,15 @@ static int parse_taprio_schedule(struct nlattr **tb,
 	if (err < 0)
 		return err;
 
+	if (!new->cycle_time) {
+		struct sched_entry *entry;
+		ktime_t cycle = 0;
+
+		list_for_each_entry(entry, &new->entries, list)
+			cycle = ktime_add_ns(cycle, entry->interval);
+		new->cycle_time = cycle;
+	}
+
 	return 0;
 }
 
@@ -605,7 +598,7 @@ static int taprio_get_start_time(struct Qdisc *sch,
 		return 0;
 	}
 
-	cycle = get_cycle_time(sched);
+	cycle = sched->cycle_time;
 
 	/* The qdisc is expected to have at least one sched_entry.  Moreover,
 	 * any entry must have 'interval' > 0. Thus if the cycle time is zero,
@@ -632,7 +625,7 @@ static void setup_first_close_time(struct taprio_sched *q,
 	first = list_first_entry(&sched->entries,
 				 struct sched_entry, list);
 
-	cycle = get_cycle_time(sched);
+	cycle = sched->cycle_time;
 
 	/* FIXME: find a better place to do this */
 	sched->cycle_close_time = ktime_add_ns(base, cycle);
-- 
2.7.3


WARNING: multiple messages have this Message-ID (diff)
From: Vedang Patel <vedang.patel@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v5 3/7] taprio: calculate cycle_time when schedule is installed
Date: Fri, 21 Jun 2019 10:28:24 -0700	[thread overview]
Message-ID: <1561138108-12943-4-git-send-email-vedang.patel@intel.com> (raw)
In-Reply-To: <1561138108-12943-1-git-send-email-vedang.patel@intel.com>

cycle time for a particular schedule is calculated only when it is first
installed. So, it makes sense to just calculate it once right after the
'cycle_time' parameter has been parsed and store it in cycle_time.

Signed-off-by: Vedang Patel <vedang.patel@intel.com>
---
 net/sched/sch_taprio.c | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c
index 9ecfb8f5902a..a41d7d4434ee 100644
--- a/net/sched/sch_taprio.c
+++ b/net/sched/sch_taprio.c
@@ -108,22 +108,6 @@ static void switch_schedules(struct taprio_sched *q,
 	*admin = NULL;
 }
 
-static ktime_t get_cycle_time(struct sched_gate_list *sched)
-{
-	struct sched_entry *entry;
-	ktime_t cycle = 0;
-
-	if (sched->cycle_time != 0)
-		return sched->cycle_time;
-
-	list_for_each_entry(entry, &sched->entries, list)
-		cycle = ktime_add_ns(cycle, entry->interval);
-
-	sched->cycle_time = cycle;
-
-	return cycle;
-}
-
 static int taprio_enqueue(struct sk_buff *skb, struct Qdisc *sch,
 			  struct sk_buff **to_free)
 {
@@ -524,6 +508,15 @@ static int parse_taprio_schedule(struct nlattr **tb,
 	if (err < 0)
 		return err;
 
+	if (!new->cycle_time) {
+		struct sched_entry *entry;
+		ktime_t cycle = 0;
+
+		list_for_each_entry(entry, &new->entries, list)
+			cycle = ktime_add_ns(cycle, entry->interval);
+		new->cycle_time = cycle;
+	}
+
 	return 0;
 }
 
@@ -605,7 +598,7 @@ static int taprio_get_start_time(struct Qdisc *sch,
 		return 0;
 	}
 
-	cycle = get_cycle_time(sched);
+	cycle = sched->cycle_time;
 
 	/* The qdisc is expected to have at least one sched_entry.  Moreover,
 	 * any entry must have 'interval' > 0. Thus if the cycle time is zero,
@@ -632,7 +625,7 @@ static void setup_first_close_time(struct taprio_sched *q,
 	first = list_first_entry(&sched->entries,
 				 struct sched_entry, list);
 
-	cycle = get_cycle_time(sched);
+	cycle = sched->cycle_time;
 
 	/* FIXME: find a better place to do this */
 	sched->cycle_close_time = ktime_add_ns(base, cycle);
-- 
2.7.3


  parent reply	other threads:[~2019-06-21 17:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-21 17:28 [PATCH net-next v5 0/7] net/sched: Add txtime-assist support for taprio Vedang Patel
2019-06-21 17:28 ` [Intel-wired-lan] " Vedang Patel
2019-06-21 17:28 ` [PATCH net-next v5 1/7] igb: clear out skb->tstamp after reading the txtime Vedang Patel
2019-06-21 17:28   ` [Intel-wired-lan] " Vedang Patel
2019-06-21 17:28 ` [PATCH net-next v5 2/7] etf: Add skip_sock_check Vedang Patel
2019-06-21 17:28   ` [Intel-wired-lan] " Vedang Patel
2019-06-24 21:40   ` Jakub Kicinski
2019-06-24 21:40     ` [Intel-wired-lan] " Jakub Kicinski
2019-06-24 23:34     ` Patel, Vedang
2019-06-24 23:34       ` [Intel-wired-lan] " Patel, Vedang
2019-06-21 17:28 ` Vedang Patel [this message]
2019-06-21 17:28   ` [Intel-wired-lan] [PATCH net-next v5 3/7] taprio: calculate cycle_time when schedule is installed Vedang Patel
2019-06-21 17:28 ` [PATCH net-next v5 4/7] taprio: Remove inline directive Vedang Patel
2019-06-21 17:28   ` [Intel-wired-lan] " Vedang Patel
2019-06-21 17:28 ` [PATCH net-next v5 5/7] taprio: Add support for txtime-assist mode Vedang Patel
2019-06-21 17:28   ` [Intel-wired-lan] " Vedang Patel
2019-06-23  3:29   ` kbuild test robot
2019-06-23  3:29     ` [Intel-wired-lan] " kbuild test robot
2019-06-21 17:28 ` [PATCH net-next v5 6/7] taprio: make clock reference conversions easier Vedang Patel
2019-06-21 17:28   ` [Intel-wired-lan] " Vedang Patel
2019-06-21 17:28 ` [PATCH net-next v5 7/7] taprio: Adjust timestamps for TCP packets Vedang Patel
2019-06-21 17:28   ` [Intel-wired-lan] " Vedang Patel

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=1561138108-12943-4-git-send-email-vedang.patel@intel.com \
    --to=vedang.patel@intel.com \
    --cc=aaron.f.brown@intel.com \
    --cc=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jakub.kicinski@netronome.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=l@dorileo.org \
    --cc=m-karicheri2@ti.com \
    --cc=netdev@vger.kernel.org \
    --cc=sergei.shtylyov@cogentembedded.com \
    --cc=vinicius.gomes@intel.com \
    --cc=xiyou.wangcong@gmail.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.