]> git.baikalelectronics.ru Git - kernel.git/commit
net: qualcomm: rmnet: don't use C bit-fields in rmnet checksum header
authorAlex Elder <elder@linaro.org>
Mon, 15 Mar 2021 21:51:51 +0000 (16:51 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Mar 2021 03:41:58 +0000 (20:41 -0700)
commit90e8294624fe4d229ca0d2c2eb017cb29f5742ce
tree19e33e4f1b0ea543a5636b19e0d5050eb7d33648
parent592d35ca2119e2ffa753779b27763b3834530ce6
net: qualcomm: rmnet: don't use C bit-fields in rmnet checksum header

Replace the use of C bit-fields in the rmnet_map_ul_csum_header
structure with a single two-byte (big endian) structure member,
and use masks to encode or get values within it.  The content of
these fields can be accessed using simple bitwise AND and OR
operations on the (host byte order) value of the new structure
member.

Previously rmnet_map_ipv4_ul_csum_header() would update C bit-field
values in host byte order, then forcibly fix their byte order using
a combination of byte swap operations and types.

Instead, just compute the value that needs to go into the new
structure member and save it with a simple byte-order conversion.

Make similar simplifications in rmnet_map_ipv6_ul_csum_header().

Finally, in rmnet_map_checksum_uplink_packet() a set of assignments
zeroes every field in the upload checksum header.  Replace that with
a single memset() operation.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qualcomm/rmnet/rmnet_map_data.c
include/linux/if_rmnet.h