Re: [virtio-dev] Re: [virtio-comment] [RFC PATCH v3] virtio-can: Device specification.

Marc Kleine-Budde <[email protected]> Wed, 21 Feb 2024 14:28:09 +0100
Newsgroups dev.linux.lists.virtio-dev,org.kernel.vger.linux-can
Message-ID <[email protected]>
On 21.02.2024 14:16:54, Matias Ezequiel Vara Larsen wrote:
> On Wed, Feb 21, 2024 at 01:49:31PM +0100, Marc Kleine-Budde wrote:
> > On 21.02.2024 11:37:58, Matias Ezequiel Vara Larsen wrote:
> > > > > +The length of the \field{sdu} is determined by the \field{length}.
> > > > > +
> > > > > +The type of a CAN message identifier is determined by \field{flags}. The
> > > > > +3 most significant bits of \field{can_id} do not bear the information
> > > > > +about the type of the CAN message identifier and are 0.
> > > > > +
> > > > > +The device MUST reject any CAN frame type for which support has not been
> > > > > +negotiated with VIRTIO_CAN_RESULT_NOT_OK in \field{result} and MUST NOT
> > > > > +schedule the message for transmission. A CAN frame with an undefined bit
> > > > > +set in \field{flags} is treated like a CAN frame for which support has
> > > > > +not been negotiated.
> > > > > +
> > > > > +The device MUST reject any CAN frame for which \field{can_id} or
> > > > > +\field{sdu} length are out of range or the CAN controller is in an
> > > > > +invalid state with VIRTIO_CAN_RESULT_NOT_OK in \field{result} and MUST
> > > > > +NOT schedule the message for transmission.
> > > > > +
> > > I am not very familiar with CAN but how does the device figure out that
> > > the can_id is out of range?
> > 
> > In classical CAN we have the standard CAN frames, which have an 11 bit
> > ID, and there are extended CAN frames, which have 29 bits ID. Extended
> > frames are signaled with VIRTIO_CAN_FLAGS_EXTENDED set.
> > 
> > So if a standard frame uses more than 11 Bits of CAN-ID, it's considered
> > out of range.

Another option would be an extended frame (VIRTIO_CAN_FLAGS_EXTENDED
set) and using more than 29 bits.

> Thanks Marc for the explanation. Do you think that it would be
> worthwhile to add that to the spec at some point?

Yes that makes sense as it clarifies what's meant by out of range for
CAN-IDs, for the valid length a reference to
\item[VIRTIO_CAN_F_CAN_CLASSIC (0)] and \item[VIRTIO_CAN_F_CAN_FD (1)]
might be added.

regards,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde          |
Embedded Linux                   | https://www.pengutronix.de |
Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |
signature.asc (application/pgp-signature, 488 B)
-----BEGIN PGP SIGNATURE-----

iQEzBAABCgAdFiEEUEC6huC2BN0pvD5fKDiiPnotvG8FAmXV+mYACgkQKDiiPnot
vG+1gAf/bbPgj+CwAhBtLIyNrjsdOP99lOBPcCVZsU0cUwrKZPWaNzoCjqS/VGB3
qaul/sD23a1RhOGYrL3e5xNZJTAOYW1BFNzoa8IvUKu6J7J3ccZ0inNV+I97XcBi
fyMGpHIQRX/HuLVJYScH58/xbErWGnyDQbkR5YX4UhmfLfxH0Z2fCJcWXH5L1/on
ELByICVhXNG5J2NF7O0jnROcH1S4mTJKwHLkZf0DQp2rP12jT86/yTkJKIBJeUse
VN3WmkDJE6GAR50kZ4hFDChSBnMDvJSxN+dVFJhvdtTK8u0MXUjJ/ZUIb+yNPBVw
KHODp0wB1BzP2AKYYm1l2/qJCMiI5Q==
=l3gq
-----END PGP SIGNATURE-----