On Wed, Feb 21 2024, Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> wrote: > 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. [virtio mailing lists are supposedly down for migration right now, I hope there's some kind of backfill happening later...] If the question comes up, it does make sense to add a clarification... as the virtio-can spec is already voted upon and merged, we'd need a patch on top. Not sure if it would qualify as an editorial update or a vote would be needed, best to see it first :)