From: Vedang Patel <vedang.patel@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v4 3/7] taprio: calculate cycle_time when schedule is installed
Date: Wed, 19 Jun 2019 10:40:12 -0700 [thread overview]
Message-ID: <1560966016-28254-4-git-send-email-vedang.patel@intel.com> (raw)
In-Reply-To: <1560966016-28254-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: 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,
Vedang Patel <vedang.patel@intel.com>
Subject: [PATCH net-next v4 3/7] taprio: calculate cycle_time when schedule is installed
Date: Wed, 19 Jun 2019 10:40:12 -0700 [thread overview]
Message-ID: <1560966016-28254-4-git-send-email-vedang.patel@intel.com> (raw)
In-Reply-To: <1560966016-28254-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
next prev parent reply other threads:[~2019-06-19 17:40 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-19 17:40 [Intel-wired-lan] [PATCH net-next v4 0/7] net/sched: Add txtime-assist support for taprio Vedang Patel
2019-06-19 17:40 ` Vedang Patel
2019-06-19 17:40 ` [Intel-wired-lan] [PATCH net-next v4 1/7] igb: clear out tstamp after sending the packet Vedang Patel
2019-06-19 17:40 ` Vedang Patel
2019-06-20 10:47 ` [Intel-wired-lan] " Eric Dumazet
2019-06-20 10:47 ` Eric Dumazet
2019-06-20 16:49 ` [Intel-wired-lan] " Patel, Vedang
2019-06-20 16:49 ` Patel, Vedang
2019-06-20 17:07 ` [Intel-wired-lan] " Eric Dumazet
2019-06-20 17:07 ` Eric Dumazet
2019-06-20 20:32 ` [Intel-wired-lan] " Patel, Vedang
2019-06-20 20:32 ` Patel, Vedang
2019-06-20 21:56 ` [Intel-wired-lan] " Eric Dumazet
2019-06-20 21:56 ` Eric Dumazet
2019-06-19 17:40 ` [Intel-wired-lan] [PATCH net-next v4 2/7] etf: Add skip_sock_check Vedang Patel
2019-06-19 17:40 ` Vedang Patel
2019-06-20 8:16 ` [Intel-wired-lan] " Sergei Shtylyov
2019-06-20 8:16 ` Sergei Shtylyov
2019-06-20 21:13 ` [Intel-wired-lan] " Patel, Vedang
2019-06-20 21:13 ` Patel, Vedang
2019-06-19 17:40 ` Vedang Patel [this message]
2019-06-19 17:40 ` [PATCH net-next v4 3/7] taprio: calculate cycle_time when schedule is installed Vedang Patel
2019-06-19 17:40 ` [Intel-wired-lan] [PATCH net-next v4 4/7] taprio: Remove inline directive Vedang Patel
2019-06-19 17:40 ` Vedang Patel
2019-06-19 17:40 ` [Intel-wired-lan] [PATCH net-next v4 5/7] taprio: Add support for txtime-assist mode Vedang Patel
2019-06-19 17:40 ` Vedang Patel
2019-06-19 17:40 ` [Intel-wired-lan] [PATCH net-next v4 6/7] taprio: make clock reference conversions easier Vedang Patel
2019-06-19 17:40 ` Vedang Patel
2019-06-19 17:40 ` [Intel-wired-lan] [PATCH net-next v4 7/7] taprio: Adjust timestamps for TCP packets Vedang Patel
2019-06-19 17:40 ` 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=1560966016-28254-4-git-send-email-vedang.patel@intel.com \
--to=vedang.patel@intel.com \
--cc=intel-wired-lan@osuosl.org \
/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.