ACK: [SRU][F][G][PATCH 1/1] net/mlx5e: Fix endianness handling in pedit mask

Kleber Souza kleber.souza at canonical.com
Wed May 13 10:08:37 UTC 2020


On 13.05.20 12:05, Kleber Souza wrote:
> On 06.05.20 13:40, frank.heimes at canonical.com wrote:
>> From: Sebastian Hense <sebastian.hense1 at ibm.com>
>>
>> BugLink: https://bugs.launchpad.net/bugs/1872726

Hi Frank,

I also forgot a comment about this one as well :-).

Can you please set the 'linux -> Focal' nomination to 'In Progress'?

'Fix Committed' should be set by the kernel team when the patch is applied
only.


Thanks,
Kleber

>>
>> The mask value is provided as 64 bit and has to be casted in
>> either 32 or 16 bit. On big endian systems the wrong half was
>> casted which resulted in an all zero mask.
>>
>> Fixes: 2b64beba0251 ("net/mlx5e: Support header re-write of partial fields in TC pedit offload")
>>
>> Signed-off-by: Sebastian Hense <sebastian.hense1 at ibm.com>
>> Reviewed-by: Roi Dayan <roid at mellanox.com>
>> Signed-off-by: Saeed Mahameed <saeedm at mellanox.com>
>> (backported from commit 404402abd5f90aa90a134eb9604b1750c1941529)
>> Signed-off-by: Frank Heimes <frank.heimes at canonical.com>
> 
> Acked-by: Kleber Sacilotto de Souza <kleber.souza at canonical.com>
> 
>> ---
>>  drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
>> index ec117e441425..a8817ded2959 100644
>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
>> @@ -2424,10 +2424,11 @@ static int offload_pedit_fields(struct pedit_headers_action *hdrs,
>>  		field_bsize = f->size * BITS_PER_BYTE;
>>  
>>  		if (field_bsize == 32) {
>> -			mask_be32 = *(__be32 *)&mask;
>> +			mask_be32 = (__be32)mask;
>>  			mask = (__force unsigned long)cpu_to_le32(be32_to_cpu(mask_be32));
>>  		} else if (field_bsize == 16) {
>> -			mask_be16 = *(__be16 *)&mask;
>> +			mask_be32 = (__be32)mask;
>> +			mask_be16 = *(__be16 *)&mask_be32;
>>  			mask = (__force unsigned long)cpu_to_le16(be16_to_cpu(mask_be16));
>>  		}
>>  
>>
> 




More information about the kernel-team mailing list