From: Igor Russkikh <Igor.Russkikh@xxxxxxxxxxxx> 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.