mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
net: qualcomm: rmnet: don't use C bit-fields in rmnet checksum trailer
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 <elder@linaro.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Reviewed-by: Alexander Duyck <alexanderduyck@fb.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
16653c16d2
commit
cc1b21ba62
|
|
@ -359,7 +359,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 (!(csum_trailer->flags & MAP_CSUM_DL_VALID_FLAG)) {
|
||||
priv->stats.csum_valid_unset++;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,21 +19,18 @@ struct rmnet_map_header {
|
|||
#define MAP_CMD_FLAG BIT(7)
|
||||
|
||||
struct rmnet_map_dl_csum_trailer {
|
||||
u8 reserved1;
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
u8 valid:1;
|
||||
u8 reserved2:7;
|
||||
#elif defined (__BIG_ENDIAN_BITFIELD)
|
||||
u8 reserved2:7;
|
||||
u8 valid:1;
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
u8 reserved1;
|
||||
u8 flags; /* MAP_CSUM_DL_VALID_FLAG */
|
||||
__be16 csum_start_offset;
|
||||
__be16 csum_length;
|
||||
__be16 csum_value;
|
||||
} __aligned(1);
|
||||
|
||||
/* rmnet_map_dl_csum_trailer flags field:
|
||||
* VALID: 1 = checksum and length valid; 0 = ignore them
|
||||
*/
|
||||
#define MAP_CSUM_DL_VALID_FLAG BIT(0)
|
||||
|
||||
struct rmnet_map_ul_csum_header {
|
||||
__be16 csum_start_offset;
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user