From: Igor Russkikh <[email protected]>
Date: Wed, 21 Nov 2018 10:13:42 +0000
> +static void aqc111_rx_checksum(struct sk_buff *skb, u64 *pkt_desc)
> +{
...
> + /* checksum error bit is set */
> + if (*pkt_desc & AQ_RX_PD_L4_ERR || *pkt_desc & AQ_RX_PD_L3_ERR)
> + return;
...
> @@ -661,6 +698,7 @@ static int aqc111_rx_fixup(struct usbnet *dev, struct
> sk_buff *skb)
> skb_set_tail_pointer(new_skb, new_skb->len);
>
> new_skb->truesize = new_skb->len + sizeof(struct sk_buff);
> + aqc111_rx_checksum(new_skb, pkt_desc);
This is another reason to use a 'cpu_desc' local variable to hold the
endian translated descriptor value so you don't have to dereference
this thing over and over again.