RE: [PATCH net-next 07/10] ethtool: cmis_cdb: Add a layer for supporting CDB commands

From: Danielle Ratson
Date: Tue Apr 09 2024 - 09:38:23 EST


> -----Original Message-----
> From: Russell King <linux@xxxxxxxxxxxxxxx>
> Sent: Monday, 8 April 2024 17:55
> To: Danielle Ratson <danieller@xxxxxxxxxx>
> Cc: netdev@xxxxxxxxxxxxxxx; davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx;
> kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx; corbet@xxxxxxx; sdf@xxxxxxxxxx;
> kory.maincent@xxxxxxxxxxx; maxime.chevallier@xxxxxxxxxxx;
> vladimir.oltean@xxxxxxx; przemyslaw.kitszel@xxxxxxxxx;
> ahmed.zaki@xxxxxxxxx; richardcochran@xxxxxxxxx; shayagr@xxxxxxxxxx;
> paul.greenwalt@xxxxxxxxx; jiri@xxxxxxxxxxx; linux-doc@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; mlxsw <mlxsw@xxxxxxxxxx>; Petr Machata
> <petrm@xxxxxxxxxx>; Ido Schimmel <idosch@xxxxxxxxxx>
> Subject: Re: [PATCH net-next 07/10] ethtool: cmis_cdb: Add a layer for
> supporting CDB commands
>
> On Mon, Apr 08, 2024 at 03:53:37PM +0300, Danielle Ratson wrote:
> > +/**
> > + * struct ethtool_cmis_cdb_request - CDB commands request fields as
> decribed in
> > + * the CMIS standard
> > + * @id: Command ID.
> > + * @epl_len: EPL memory length.
> > + * @lpl_len: LPL memory length.
> > + * @chk_code: Check code for the previous field and the payload.
> > + * @resv1: Added to match the CMIS standard request continuity.
> > + * @resv2: Added to match the CMIS standard request continuity.
> > + * @payload: Payload for the CDB commands.
> > + */
> > +struct ethtool_cmis_cdb_request {
> > + __be16 id;
> > + struct_group(body,
> > + u16 epl_len;
>
> u16 with a struct that also uses __be16 looks suspicious.
>
> > + u8 lpl_len;
> > + u8 chk_code;
> > + u8 resv1;
> > + u8 resv2;
> > + u8 payload[ETHTOOL_CMIS_CDB_LPL_MAX_PL_LENGTH];
> > + );
>
> Does it matter if the compiler inserts some padding before this struct group?

Yes it should matter since I copy this struct into a payload and it should be transferred like that to match the CMIS specification, but if I use __be16 for both id and epl_len it might resolve the issue isn’t it?

>
> > +/**
> > + * struct ethtool_cmis_cdb_rpl_hdr - CDB commands reply header
> > +arguments
> > + * @rpl_len: Reply length.
> > + * @rpl_chk_code: Reply check code.
> > + */
> > +struct ethtool_cmis_cdb_rpl_hdr {
> > + u8 rpl_len;
> > + u8 rpl_chk_code;
>
> Does it matter if the compiler adds some padding here?

Kind of the same idea, it is matter if the compiler adds padding since the reply is read and extracted into this struct like it is written in the CMIS specification.
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!