Re: [PATCH net-next v2 5/6] net: qualcomm: rmnet: don't use C bit-fields in rmnet checksum trailer
From: Alex Elder <hidden>
Date: 2021-03-08 13:40:27
Also in:
lkml
On 3/8/21 4:13 AM, David Laight wrote:
From: Alex Elderquoted
Sent: 06 March 2021 03:16 Replace the use of C bit-fields in the rmnet_map_dl_csum_trailer structure with a single one-byte field, using constant field masks to encode or get at embedded values. Signed-off-by: Alex Elder <redacted> Reviewed-by: Bjorn Andersson <redacted> --- .../ethernet/qualcomm/rmnet/rmnet_map_data.c | 2 +- include/linux/if_rmnet.h | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-)diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.cb/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c index 3291f252d81b0..29d485b868a65 100644--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c@@ -365,7 +365,7 @@ int rmnet_map_checksum_downlink_packet(struct sk_buff *skb, u16 len) csum_trailer = (struct rmnet_map_dl_csum_trailer *)(skb->data + len); - if (!csum_trailer->valid) { + if (!u8_get_bits(csum_trailer->flags, MAP_CSUM_DL_VALID_FMASK)) {Is that just an overcomplicated way of saying: if (!(csum_trailer->flags & MAP_CSUM_DL_VALID_FMASK)) {
Yes it is. I defined and used all the field masks in a consistent way, but I do think it will read better the way you suggest. Bjorn also asked me privately whether GENMASK(15, 15) was just the same as BIT(15) (it is). I will post version 3 of the series, identifying which fields are single bit/Boolean. For those I will define the value using BIT() and will set/extract using simple AND/OR operators. I won't use the _FMASK suffix on such fields. Thanks a lot for your comment/question/suggestion. I like it. -Alex
David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)