From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Shawn Landden <shawn@churchofgit.com>
Cc: linux-can@vger.kernel.org, Marc Kleine-Budde <mkl@pengutronix.de>
Subject: Re: [PATCH] can.h: make padding given by gcc explicit
Date: Mon, 04 May 2015 18:00:58 +0200 [thread overview]
Message-ID: <554797BA.6080506@hartkopp.net> (raw)
In-Reply-To: <1430510060-3504-1-git-send-email-shawn@churchofgit.com>
Hi Shawn,
fortunately some camping sites have free WLAN :-)
Usually the user space API (== ABI) is written into stone but making the
implicite padding more explicit looks good from my side.
The problem was, that in the early days of SocketCAN people would have seen
this kind of 'free space' as an invitation to put bogus stuff like CAN
controller mailbox indices here %-(
To be somehow analogue to the struct canfd_frame I would suggest this layout:
diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
index 41892f7..9692cda 100644
--- a/include/uapi/linux/can.h
+++ b/include/uapi/linux/can.h
@@ -95,11 +95,17 @@ typedef __u32 can_err_mask_t;
* @can_dlc: frame payload length in byte (0 .. 8) aka data length code
* N.B. the DLC field from ISO 11898-1 Chapter 8.4.2.3 has a 1:1
* mapping of the 'data length code' to the real payload length
+ * @__pad: padding
+ * @__res0: reserved / padding
+ * @__res1: reserved / padding
* @data: CAN frame payload (up to 8 byte)
*/
struct can_frame {
canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
__u8 can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */
+ __u8 __pad; /* padding */
+ __u8 __res0; /* reserved / padding */
+ __u8 __res1; /* reserved / padding */
__u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
};
And when providing a an update of this central data structure the references
in Documentation/networking/can.txt have to be updated too :-)
@Marc: Do you have any objections to add this padding stuff?
Regards,
Oliver
ps. I don't know when I will be online next time. But net-next is not closing until
I'm back to work ... no hurry.
On 05/01/2015 09:54 PM, Shawn Landden wrote:
> The current definition of struct can_frame has a 16-byte size, with 8-byte
> alignment, but the 3 bytes of padding are not explicit like the similar 2 bytes
> of padding of struct canfd_frame. Make it explicit so it is easier to read.
>
> Signed-off-by: Shawn Landden <shawn@churchofgit.com>
> ---
> include/uapi/linux/can.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/uapi/linux/can.h b/include/uapi/linux/can.h
> index 41892f7..bc1b937 100644
> --- a/include/uapi/linux/can.h
> +++ b/include/uapi/linux/can.h
> @@ -100,6 +100,7 @@ typedef __u32 can_err_mask_t;
> struct can_frame {
> canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
> __u8 can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */
> + __u8 __res[3];/* reserved / padding */
> __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
> };
>
>
next prev parent reply other threads:[~2015-05-04 16:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-01 19:54 [PATCH] can.h: make padding given by gcc explicit Shawn Landden
2015-05-01 20:23 ` Marc Kleine-Budde
2015-05-04 16:00 ` Oliver Hartkopp [this message]
2015-05-05 7:03 ` Shawn Landden
2015-05-05 7:06 ` Marc Kleine-Budde
2015-05-05 16:07 ` Shawn Landden
2015-05-05 19:02 ` Oliver Hartkopp
2015-05-05 19:25 ` Marc Kleine-Budde
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=554797BA.6080506@hartkopp.net \
--to=socketcan@hartkopp.net \
--cc=linux-can@vger.kernel.org \
--cc=mkl@pengutronix.de \
--cc=shawn@churchofgit.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).