From: Ivan Briano <ivan.briano@intel.com>
To: Thomas Gleixner <tglx@linutronix.de>,
Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
Cc: netdev@vger.kernel.org, jhs@mojatatu.com,
xiyou.wangcong@gmail.com, jiri@resnulli.us,
vinicius.gomes@intel.com, richardcochran@gmail.com,
anna-maria@linutronix.de, henrik@austad.us,
John Stultz <john.stultz@linaro.org>,
levi.pearson@harman.com, edumazet@google.com, willemb@google.com,
mlichvar@redhat.com
Subject: Re: [RFC v3 net-next 13/18] net/sched: Introduce the TBS Qdisc
Date: Wed, 11 Apr 2018 13:31:31 -0700 [thread overview]
Message-ID: <ab6dcda8-828d-a067-55ad-4bd08a7aa85e@intel.com> (raw)
In-Reply-To: <alpine.DEB.2.21.1804112209450.1564@nanos.tec.linutronix.de>
On 04/11/2018 01:16 PM, Thomas Gleixner wrote:
> On Tue, 10 Apr 2018, Jesus Sanchez-Palencia wrote:
>>>> This will be provided by tbs if the socket which is transmitting packets is
>>>> configured for deadline mode.
>>>
>>> You don't want the socket to decide that. The qdisc into which a socket
>>> feeds defines the mode and the qdisc rejects requests with the wrong mode.
>>>
>>> Making a qdisc doing both and let the user decide what he wants it to be is
>>> not really going to fly. Especially if you have different users which want
>>> a different mode. It's clearly distinct functionality.
>>
>>
>> Ok, so just to make sure I got this right, are you suggesting that both the
>> 'tbs' qdisc *and* the socket (i.e. through SO_TXTIME) should have a config
>> parameter for specifying the txtime mode? This way if there is a mismatch,
>> packets from that socket are rejected by the qdisc.
>
> Correct. The same is true if you try to set SO_TXTIME for something which
> is just routing regular traffic.
>
>> (...)
>>>
>>>> Another question for this mode (but perhaps that applies to both modes) is, what
>>>> if the qdisc misses the deadline for *any* reason? I'm assuming it should drop
>>>> the packet during dequeue.
>>>
>>> There the question is how user space is notified about that issue. The
>>> application which queued the packet on time does rightfully assume that
>>> it's going to be on the wire on time.
>>>
>>> This is a violation of the overall scheduling plan, so you need to have
>>> a sane design to handle that.
>>
>> In addition to the qdisc stats, we could look into using the socket's error
>> queue to notify the application about that.
>
> Makes sense.
>
>>>> Putting it all together, we end up with:
>>>>
>>>> 1) a new txtime aware qdisc, tbs, to be used per queue. Its cli will look like:
>>>> $ tc qdisc add (...) tbs clockid CLOCK_REALTIME delta 150000 offload sorting
>>>
>>> Why CLOCK_REALTIME? The only interesting time in a TSN network is
>>> CLOCK_TAI, really.
>>
>> REALTIME was just an example here to show that the qdisc has to be configured
>> with a clockid parameter. Are you suggesting that instead both of the new qdiscs
>> (i.e. tbs and taprio) should always be using CLOCK_TAI implicitly?
>
> I think so. It's _the_ network time on which everything is based on.
>
>>>> 2) a new cmsg-interface for setting a per-packet timestamp that will be used
>>>> either as a txtime or as deadline by tbs (and further the NIC driver for the
>>>> offlaod case): SCM_TXTIME.
>>>>
>>>> 3) a new socket option: SO_TXTIME. It will be used to enable the feature for a
>>>> socket, and will have as parameters a clockid and a txtime mode (deadline or
>>>> explicit), that defines the semantics of the timestamp set on packets using
>>>> SCM_TXTIME.
>>>>
>>>> 4) a new #define DYNAMIC_CLOCKID 15 added to include/uapi/linux/time.h .
>>>
>>> Can you remind me why we would need that?
>>
>> So there is a "clockid" that can be used for the full hw offload modes. On this
>> case, the txtimes are in reference to the NIC's PTP clock, and, as discussed, we
>> can't just use a clockid that was computed from the fd pointing to /dev/ptpX .
>
> And the NICs PTP clock is CLOCK_TAI, so there should be no reason to have
> yet another clock, right?
>
Most likely, though you can technically have a different time domain
that is not based on TAI.
> Thanks,
>
> tglx
>
next prev parent reply other threads:[~2018-04-11 20:31 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-07 1:12 [RFC v3 net-next 00/18] Time based packet transmission Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 01/18] sock: Fix SO_ZEROCOPY switch case Jesus Sanchez-Palencia
2018-03-07 16:58 ` Willem de Bruijn
2018-03-07 1:12 ` [RFC v3 net-next 02/18] net: Clear skb->tstamp only on the forwarding path Jesus Sanchez-Palencia
2018-03-07 16:59 ` Willem de Bruijn
2018-03-07 22:03 ` Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 03/18] posix-timers: Add CLOCKID_INVALID mask Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 04/18] net: Add a new socket option for a future transmit time Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 05/18] net: ipv4: raw: Hook into time based transmission Jesus Sanchez-Palencia
2018-03-07 17:00 ` Willem de Bruijn
2018-03-07 1:12 ` [RFC v3 net-next 06/18] net: ipv4: udp: " Jesus Sanchez-Palencia
2018-03-07 17:00 ` Willem de Bruijn
2018-03-07 1:12 ` [RFC v3 net-next 07/18] net: packet: " Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 08/18] net: SO_TXTIME: Add clockid and drop_if_late params Jesus Sanchez-Palencia
2018-03-07 2:53 ` Eric Dumazet
2018-03-07 5:24 ` Richard Cochran
2018-03-07 17:01 ` Willem de Bruijn
2018-03-07 17:35 ` Richard Cochran
2018-03-07 17:37 ` Richard Cochran
2018-03-07 17:47 ` Eric Dumazet
2018-03-08 16:44 ` Richard Cochran
2018-03-08 17:56 ` Jesus Sanchez-Palencia
2018-03-21 12:58 ` Thomas Gleixner
2018-03-21 14:59 ` Richard Cochran
2018-03-21 15:11 ` Thomas Gleixner
2018-03-07 21:52 ` Jesus Sanchez-Palencia
2018-03-07 22:45 ` Eric Dumazet
2018-03-07 23:03 ` David Miller
2018-03-08 11:37 ` Miroslav Lichvar
2018-03-08 16:25 ` David Miller
2018-03-07 1:12 ` [RFC v3 net-next 09/18] net: ipv4: raw: Handle remaining txtime parameters Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 10/18] net: ipv4: udp: " Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 11/18] net: packet: " Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 12/18] net/sched: Allow creating a Qdisc watchdog with other clocks Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 13/18] net/sched: Introduce the TBS Qdisc Jesus Sanchez-Palencia
2018-03-21 13:46 ` Thomas Gleixner
2018-03-21 22:29 ` Thomas Gleixner
2018-03-22 20:25 ` Jesus Sanchez-Palencia
2018-03-22 22:52 ` Thomas Gleixner
2018-03-24 0:34 ` Jesus Sanchez-Palencia
2018-03-25 11:46 ` Thomas Gleixner
2018-03-27 23:26 ` Jesus Sanchez-Palencia
2018-03-28 7:48 ` Thomas Gleixner
2018-03-28 13:07 ` Henrik Austad
2018-04-09 16:36 ` Jesus Sanchez-Palencia
2018-04-10 12:37 ` Thomas Gleixner
2018-04-10 21:24 ` Jesus Sanchez-Palencia
2018-04-11 20:16 ` Thomas Gleixner
2018-04-11 20:31 ` Ivan Briano [this message]
2018-04-11 23:38 ` Jesus Sanchez-Palencia
2018-04-12 15:03 ` Richard Cochran
2018-04-12 15:19 ` Miroslav Lichvar
2018-04-19 10:03 ` Thomas Gleixner
2018-03-22 20:29 ` Jesus Sanchez-Palencia
2018-03-22 22:11 ` Thomas Gleixner
2018-03-22 23:26 ` Jesus Sanchez-Palencia
2018-03-23 8:49 ` Thomas Gleixner
2018-03-23 23:34 ` Jesus Sanchez-Palencia
2018-04-23 18:21 ` Jesus Sanchez-Palencia
2018-04-24 8:50 ` Thomas Gleixner
2018-04-24 13:50 ` David Miller
2018-03-07 1:12 ` [RFC v3 net-next 14/18] net/sched: Add HW offloading capability to TBS Jesus Sanchez-Palencia
2018-03-21 14:22 ` Thomas Gleixner
2018-03-21 15:03 ` Richard Cochran
2018-03-21 16:18 ` Thomas Gleixner
2018-03-22 22:01 ` Jesus Sanchez-Palencia
2018-03-22 23:15 ` Jesus Sanchez-Palencia
2018-03-23 8:51 ` Thomas Gleixner
2018-03-07 1:12 ` [RFC v3 net-next 15/18] igb: Refactor igb_configure_cbs() Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 16/18] igb: Only change Tx arbitration when CBS is on Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 17/18] igb: Refactor igb_offload_cbs() Jesus Sanchez-Palencia
2018-03-07 1:12 ` [RFC v3 net-next 18/18] igb: Add support for TBS offload Jesus Sanchez-Palencia
2018-03-07 5:28 ` [RFC v3 net-next 00/18] Time based packet transmission Richard Cochran
2018-03-08 14:09 ` Henrik Austad
2018-03-08 18:06 ` Jesus Sanchez-Palencia
2018-03-08 22:54 ` Henrik Austad
2018-03-08 23:58 ` Jesus Sanchez-Palencia
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=ab6dcda8-828d-a067-55ad-4bd08a7aa85e@intel.com \
--to=ivan.briano@intel.com \
--cc=anna-maria@linutronix.de \
--cc=edumazet@google.com \
--cc=henrik@austad.us \
--cc=jesus.sanchez-palencia@intel.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=john.stultz@linaro.org \
--cc=levi.pearson@harman.com \
--cc=mlichvar@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=richardcochran@gmail.com \
--cc=tglx@linutronix.de \
--cc=vinicius.gomes@intel.com \
--cc=willemb@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).