From: "Michael S. Tsirkin" <mst@redhat.com>
To: Parav Pandit <parav@nvidia.com>
Cc: Max Gurtovoy <mgurtovoy@nvidia.com>,
"jasowang@redhat.com" <jasowang@redhat.com>,
"virtio-comment@lists.oasis-open.org"
<virtio-comment@lists.oasis-open.org>,
"cohuck@redhat.com" <cohuck@redhat.com>,
"virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>, Oren Duer <oren@nvidia.com>,
Shahaf Shuler <shahafs@nvidia.com>,
"aadam@redhat.com" <aadam@redhat.com>,
"virtio@lists.oasis-open.org" <virtio@lists.oasis-open.org>
Subject: Re: [virtio-dev] RE: [PATCH v5 0/7] Introduce device group and device management
Date: Sun, 31 Jul 2022 11:38:41 -0400 [thread overview]
Message-ID: <20220731112614-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <PH0PR12MB54812685041A59D642227920DC989@PH0PR12MB5481.namprd12.prod.outlook.com>
On Sat, Jul 30, 2022 at 01:21:20PM +0000, Parav Pandit wrote:
> > > Not a good reason to introduce something inferior.
> >
> > Avoiding duplication and focusing on low hanging fruit are all sound
> > engineering principles.
> >
> It is not a duplication.
> I iterate again. The bits we asked to put in the Aq commands are the one that does not need to be negotiated early.
> Feature bits were mis-used to put all things in there because in past a generic AQ didn't exists.
> And there is no reason for that past decision to influence current proposal.
>
> Feature bits that are so basic for device bring up stage, stays in feature bits area defined today.
> Hence, its not a duplication.
Let's take a look at a network device for example.
\item[VIRTIO_NET_F_CSUM (0)] Device handles packets with partial checksum. This
``checksum offload'' is a common feature on modern network cards.
\item[VIRTIO_NET_F_GUEST_CSUM (1)] Driver handles packets with partial checksum.
\item[VIRTIO_NET_F_CTRL_GUEST_OFFLOADS (2)] Control channel offloads
reconfiguration support.
\item[VIRTIO_NET_F_MTU(3)] Device maximum MTU reporting is supported. If
offered by the device, device advises driver about the value of
its maximum MTU. If negotiated, the driver uses \field{mtu} as
the maximum MTU value.
\item[VIRTIO_NET_F_MAC (5)] Device has given MAC address.
\item[VIRTIO_NET_F_GUEST_TSO4 (7)] Driver can receive TSOv4.
\item[VIRTIO_NET_F_GUEST_TSO6 (8)] Driver can receive TSOv6.
\item[VIRTIO_NET_F_GUEST_ECN (9)] Driver can receive TSO with ECN.
\item[VIRTIO_NET_F_GUEST_UFO (10)] Driver can receive UFO.
\item[VIRTIO_NET_F_HOST_TSO4 (11)] Device can receive TSOv4.
\item[VIRTIO_NET_F_HOST_TSO6 (12)] Device can receive TSOv6.
\item[VIRTIO_NET_F_HOST_ECN (13)] Device can receive TSO with ECN.
\item[VIRTIO_NET_F_HOST_UFO (14)] Device can receive UFO.
\item[VIRTIO_NET_F_MRG_RXBUF (15)] Driver can merge receive buffers.
\item[VIRTIO_NET_F_STATUS (16)] Configuration status field is
available.
\item[VIRTIO_NET_F_CTRL_VQ (17)] Control channel is available.
\item[VIRTIO_NET_F_CTRL_RX (18)] Control channel RX mode support.
\item[VIRTIO_NET_F_CTRL_VLAN (19)] Control channel VLAN filtering.
\item[VIRTIO_NET_F_GUEST_ANNOUNCE(21)] Driver can send gratuitous
packets.
\item[VIRTIO_NET_F_MQ(22)] Device supports multiqueue with automatic
receive steering.
\item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control
channel.
\item[VIRTIO_NET_F_NOTF_COAL(53)] Device supports notifications coalescing.
\item[VIRTIO_NET_F_GUEST_USO4 (54)] Driver can receive USOv4 packets.
\item[VIRTIO_NET_F_GUEST_USO6 (55)] Driver can receive USOv6 packets.
\item[VIRTIO_NET_F_HOST_USO (56)] Device can receive USO packets. Unlike UFO
(fragmenting the packet) the USO splits large UDP packet
to several segments when each of these smaller packets has UDP header.
\item[VIRTIO_NET_F_HASH_REPORT(57)] Device can report per-packet hash
value and a type of calculated hash.
\item[VIRTIO_NET_F_GUEST_HDRLEN(59)] Driver can provide the exact \field{hdr_len}
value. Device benefits from knowing the exact header length.
\item[VIRTIO_NET_F_RSS(60)] Device supports RSS (receive-side scaling)
with Toeplitz hash calculation and configurable hash
parameters for receive steering.
\item[VIRTIO_NET_F_RSC_EXT(61)] Device can process duplicated ACKs
and report number of coalesced segments and duplicated ACKs.
\item[VIRTIO_NET_F_STANDBY(62)] Device may act as a standby for a primary
device with the same MAC address.
\item[VIRTIO_NET_F_SPEED_DUPLEX(63)] Device reports speed and duplex.
which of these are basic for bring up stage?
> >
> > > > Something like transport over AQ (or the transport vq proposal) or
> > > > some other concerted effort to save per device memory would be
> > > > needed for SIOV, and maybe it's useful for SRIOV too.
> > > >
> > > AQ proposal is already doing it.
> > > Some of the things seems to be lately duplicated in transport vq proposal.
> > > We should possibly rename both the queues to mgmt_queue that serves
> > both the purposes.
> >
> > Quite possibly - transport VQ seems to handle a group of devices from one
> > device which seems similar to what AQ does, and you guys should probably
> > work together.
> >
> Yes.
>
> > But whether we do or do not unify transport and admin vq, with transport
> Without unification, I don't see how SIOV proposal can ever make to the spec.
> Once AQ is merged SIOV can use AQ.
> I would like to see SIOV to refer to the AQ proposal commands and extend it. Not as separate proposal.
Sounds good. Or maybe the reverse will happen and transport vq will land
first, I don't much care personally. It would be nice if the parts of AQ
proposal necessary for transport vq work were a separate patch.
> > vq existing feature mechanism stops taking up space in the VQ and this
> > opens up possibility to just use that mechanism to discover supported
> > commands without paying memory penalty.
> >
> This only helps any new SIOV beast which is not even fully defined at various layers of platform.
>
> >
> > > Transport VQ proposal is tunneling some SIOV device feature bits.
> > > Here AQ is negotiating its own feature bits. Both are orthogonal.
> >
> > I thought the discussion was about dropping the get features command and
> > using features instead.
>
> > The Transport VQ proposal seems to show how we
> > can do that and still make things scale. Yes it's orthogonal to using AQ for
> > grouping, and using features is exactly what will keep it orthogonal.
> >
> > > And suggesting to some newer RFC to discuss current one doesn't make
> > much sense to tangent the discussion at all.
> >
> >
> > The reason I bring it up is that it seems like a better solution to saving device
> > memory than adding a get capabilities command. And it let you just use
> > features for now, and assume whatever we spend will be saved back by
> > using vq as transport.
> >
> Even for non SIOV devices?
Yes.
> >
> > > Since there is zero technical short comings of negotiating AQ features via
> > AQ command, lets please conclude to proceed with it.
> >
> > Not 100% sure what you are saing here, so I think you should post a new
> > version, yes. Generally iterating faster is a good idea. If you feel you didn't
> > get enough feedback on a given version and some time passed try pinging
> > people.
> Without closing the discussion, I have seen same topic come up again and again in future version.
> So even though new series is up for posting, we better close the discussion.
That's a mistake, it will be harder for you to make progress like this.
Reviewers have limited attention span and memory, text bitrots, you decide to
make unrelated changes yourself... Sorry I'm repeating myself but
iterate quickly in the open even if there are known issues not addressed
yet, just make very sure to be open and detailed about issues you addressed
and known issues you did not address.
--
MST
next prev parent reply other threads:[~2022-07-31 15:38 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-26 22:58 [PATCH v5 0/7] Introduce device group and device management Max Gurtovoy
2022-04-26 22:58 ` [virtio-comment] [PATCH v5 1/7] Introduce device group Max Gurtovoy
2022-05-15 15:25 ` Michael S. Tsirkin
2022-05-18 13:14 ` [virtio-comment] " Max Gurtovoy
2022-05-18 13:32 ` Cornelia Huck
2022-06-01 13:43 ` Max Gurtovoy
2022-06-02 2:21 ` Jason Wang
2022-06-02 6:59 ` Michael S. Tsirkin
2022-06-27 21:52 ` Max Gurtovoy
2022-06-28 18:54 ` Michael S. Tsirkin
2022-07-06 11:25 ` Max Gurtovoy
2022-07-06 11:42 ` Michael S. Tsirkin
2022-07-06 12:01 ` Max Gurtovoy
2022-07-06 12:23 ` Michael S. Tsirkin
2022-07-06 15:18 ` Max Gurtovoy
2022-04-26 22:58 ` [PATCH v5 2/7] Introduce admin command set Max Gurtovoy
2022-05-15 15:23 ` Michael S. Tsirkin
2022-05-16 21:08 ` [virtio-comment] " Parav Pandit
2022-05-17 10:08 ` [virtio-dev] " Cornelia Huck
2022-05-18 13:42 ` Max Gurtovoy
2022-05-17 11:48 ` Michael S. Tsirkin
2022-05-18 14:09 ` Max Gurtovoy
2022-05-18 14:42 ` [virtio] " Cornelia Huck
2022-05-18 14:48 ` Max Gurtovoy
2022-05-31 20:39 ` Parav Pandit
2022-06-20 9:23 ` Michael S. Tsirkin
2022-06-20 9:49 ` Michael S. Tsirkin
2022-06-20 9:59 ` Michael S. Tsirkin
2022-06-20 11:06 ` Parav Pandit
2022-06-20 16:46 ` Michael S. Tsirkin
2022-06-20 16:54 ` Max Gurtovoy
2022-06-20 17:04 ` Michael S. Tsirkin
2022-06-20 17:19 ` Parav Pandit
2022-06-20 20:53 ` Michael S. Tsirkin
2022-06-20 23:54 ` Parav Pandit
2022-06-20 17:16 ` Parav Pandit
2022-06-23 1:26 ` Jason Wang
2022-06-23 2:07 ` Parav Pandit
2022-06-23 2:41 ` Jason Wang
2022-06-23 2:57 ` Parav Pandit
2022-06-23 3:34 ` Jason Wang
2022-06-28 14:24 ` Michael S. Tsirkin
2022-06-29 8:43 ` Jason Wang
2022-06-29 9:02 ` Michael S. Tsirkin
2022-06-30 1:53 ` Jason Wang
2022-05-18 13:39 ` [virtio-comment] " Max Gurtovoy
2022-05-18 13:50 ` [virtio] " Cornelia Huck
2022-05-18 14:16 ` Max Gurtovoy
2022-06-20 22:26 ` Michael S. Tsirkin
2022-06-20 21:08 ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 3/7] Introduce new destination type for admin commands Max Gurtovoy
2022-05-15 15:01 ` Michael S. Tsirkin
2022-05-18 14:27 ` [virtio-comment] " Max Gurtovoy
2022-05-15 15:09 ` Michael S. Tsirkin
2022-05-16 21:21 ` Parav Pandit
2022-05-16 23:33 ` Michael S. Tsirkin
2022-05-18 14:36 ` Max Gurtovoy
2022-05-18 14:34 ` Max Gurtovoy
2022-05-18 23:55 ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 4/7] Introduce virtio admin virtqueue Max Gurtovoy
2022-05-15 14:59 ` Michael S. Tsirkin
2022-05-18 14:37 ` Max Gurtovoy
2022-05-18 23:56 ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 5/7] Add miscellaneous configuration structure for PCI Max Gurtovoy
2022-05-15 14:49 ` Michael S. Tsirkin
2022-06-01 14:46 ` Max Gurtovoy
2022-05-15 14:57 ` Michael S. Tsirkin
2022-05-17 10:12 ` [virtio] " Cornelia Huck
2022-05-18 14:42 ` Max Gurtovoy
2022-05-18 23:58 ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 6/7] Introduce MGMT admin commands Max Gurtovoy
2022-05-15 14:37 ` Michael S. Tsirkin
2022-05-16 21:47 ` Parav Pandit
2022-05-17 12:31 ` [virtio-comment] " Michael S. Tsirkin
2022-05-18 15:14 ` Max Gurtovoy
2022-05-17 2:28 ` Jason Wang
2022-05-18 15:27 ` Max Gurtovoy
2022-05-18 16:41 ` Michael S. Tsirkin
2022-05-18 23:10 ` Max Gurtovoy
2022-05-18 15:03 ` Max Gurtovoy
2022-06-20 9:45 ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 7/7] RFC: add initial support for configuring feature bits Max Gurtovoy
2022-05-15 14:38 ` Michael S. Tsirkin
2022-05-18 15:31 ` Max Gurtovoy
2022-05-18 16:34 ` Michael S. Tsirkin
2022-05-18 23:18 ` Max Gurtovoy
2022-05-15 15:27 ` [PATCH v5 0/7] Introduce device group and device management Michael S. Tsirkin
2022-05-18 15:32 ` Max Gurtovoy
2022-07-05 13:56 ` Michael S. Tsirkin
2022-07-05 15:11 ` [virtio-comment] " Parav Pandit
2022-07-06 2:54 ` [virtio-dev] " Jason Wang
2022-07-06 10:10 ` Michael S. Tsirkin
2022-07-06 10:46 ` [virtio-comment] " Parav Pandit
2022-07-06 11:00 ` Michael S. Tsirkin
2022-07-06 20:45 ` Parav Pandit
2022-07-24 21:09 ` Michael S. Tsirkin
2022-07-24 21:25 ` [virtio-comment] " Parav Pandit
2022-07-24 23:41 ` Michael S. Tsirkin
2022-07-25 2:53 ` [virtio-comment] " Parav Pandit
2022-07-25 7:44 ` Michael S. Tsirkin
2022-07-30 13:21 ` [virtio-comment] " Parav Pandit
2022-07-31 15:38 ` Michael S. Tsirkin [this message]
2022-08-02 17:40 ` Parav Pandit
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=20220731112614-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=aadam@redhat.com \
--cc=cohuck@redhat.com \
--cc=jasowang@redhat.com \
--cc=mgurtovoy@nvidia.com \
--cc=oren@nvidia.com \
--cc=parav@nvidia.com \
--cc=shahafs@nvidia.com \
--cc=virtio-comment@lists.oasis-open.org \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtio@lists.oasis-open.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.