>-----Original Message-----
>From: Denis Kirjanov <k...@linux-powerpc.org>
>Sent: Thursday, November 19, 2020 12:37 PM
>To: Claudiu Manoil <claudiu.man...@nxp.com>
>Cc: netdev@vger.kernel.org; Jakub Kicinski <k...@kernel.org>; David S .
>Miller <da...@davemloft.net>
>Subject: Re: [PATCH net-next resend 1/2] enetc: Fix endianness issues for
>enetc_ethtool
>
>On 11/19/20, Claudiu Manoil <claudiu.man...@nxp.com> wrote:
>> These particular fields are specified in the H/W reference
>> manual as having network byte order format, so enforce big
>> endian annotation for them and clear the related sparse
>> warnings in the process.
>>
>> Signed-off-by: Claudiu Manoil <claudiu.man...@nxp.com>
>> ---
>>  drivers/net/ethernet/freescale/enetc/enetc_hw.h | 8 ++++----
>>  1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/freescale/enetc/enetc_hw.h
>> b/drivers/net/ethernet/freescale/enetc/enetc_hw.h
>> index 68ef4f959982..04efccd11162 100644
>> --- a/drivers/net/ethernet/freescale/enetc/enetc_hw.h
>> +++ b/drivers/net/ethernet/freescale/enetc/enetc_hw.h
>> @@ -472,10 +472,10 @@ struct enetc_cmd_rfse {
>>      u8 smac_m[6];
>>      u8 dmac_h[6];
>>      u8 dmac_m[6];
>> -    u32 sip_h[4];
>> -    u32 sip_m[4];
>> -    u32 dip_h[4];
>> -    u32 dip_m[4];
>> +    __be32 sip_h[4];
>> +    __be32 sip_m[4];
>> +    __be32 dip_h[4];
>> +    __be32 dip_m[4];
>>      u16 ethtype_h;
>>      u16 ethtype_m;
>>      u16 ethtype4_h;
>
>Hi Claudiu,
>
>Why the struct is declared without packed?
>I'm seeing that the structure is used in dma transfers in the driver
>

Probably it should, for extra measure, but as it is right now the structure is
packed, according to pahole:

struct enetc_cmd_rfse {
        u8                         smac_h[6];            /*     0     6 */
        u8                         smac_m[6];            /*     6     6 */
        u8                         dmac_h[6];            /*    12     6 */
        u8                         dmac_m[6];            /*    18     6 */
        __be32                     sip_h[4];             /*    24    16 */
        __be32                     sip_m[4];             /*    40    16 */
        __be32                     dip_h[4];             /*    56    16 */
        /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */
        __be32                     dip_m[4];             /*    72    16 */
        u16                        ethtype_h;            /*    88     2 */
        u16                        ethtype_m;            /*    90     2 */
        u16                        ethtype4_h;           /*    92     2 */
        u16                        ethtype4_m;           /*    94     2 */
        u16                        sport_h;              /*    96     2 */
        u16                        sport_m;              /*    98     2 */
        u16                        dport_h;              /*   100     2 */
        u16                        dport_m;              /*   102     2 */
        u16                        vlan_h;               /*   104     2 */
        u16                        vlan_m;               /*   106     2 */
        u8                         proto_h;              /*   108     1 */
        u8                         proto_m;              /*   109     1 */
        u16                        flags;                /*   110     2 */
        u16                        result;               /*   112     2 */
        u16                        mode;                 /*   114     2 */

        /* size: 116, cachelines: 2, members: 23 */
        /* last cacheline: 52 bytes */
};

Reply via email to