OSDN Git Service

r8169: improve rtl8169_rx_csum
authorHeiner Kallweit <hkallweit1@gmail.com>
Tue, 12 Jan 2021 08:29:45 +0000 (09:29 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 13 Jan 2021 03:01:30 +0000 (19:01 -0800)
Extend the mask to include the checksum failure bits. This allows to
simplify the condition in rtl8169_rx_csum().

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/realtek/r8169_main.c

index 84f488d..b4c080c 100644 (file)
@@ -533,6 +533,9 @@ enum rtl_rx_desc_bit {
        IPFail          = (1 << 16), /* IP checksum failed */
        UDPFail         = (1 << 15), /* UDP/IP checksum failed */
        TCPFail         = (1 << 14), /* TCP/IP checksum failed */
+
+#define RxCSFailMask   (IPFail | UDPFail | TCPFail)
+
        RxVlanTag       = (1 << 16), /* VLAN tag available */
 };
 
@@ -4377,10 +4380,9 @@ static inline int rtl8169_fragmented_frame(u32 status)
 
 static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
 {
-       u32 status = opts1 & RxProtoMask;
+       u32 status = opts1 & (RxProtoMask | RxCSFailMask);
 
-       if (((status == RxProtoTCP) && !(opts1 & TCPFail)) ||
-           ((status == RxProtoUDP) && !(opts1 & UDPFail)))
+       if (status == RxProtoTCP || status == RxProtoUDP)
                skb->ip_summed = CHECKSUM_UNNECESSARY;
        else
                skb_checksum_none_assert(skb);