> +static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb) > +{ > + struct sk_buff *new_skb = NULL; > + u32 skb_len = 0; > + u32 desc_offset = 0; /*RX Header Offset*/ > + u32 start_of_descs = 0; > + u16 pkt_count = 0; > + u32 pkt_total_offset = 0; > + struct aq_rx_packet_desc *pkt_desc = NULL; > + struct aq_rx_desc_header desc_hdr; > + > + if (!skb) > + goto err; > + > + if (skb->len == 0) > + goto err; > + > + skb_len = skb->len; > + /* RX Offset Header */ > + skb_trim(skb, skb->len - sizeof(struct aq_rx_desc_header)); > + memcpy(&desc_hdr, skb_tail_pointer(skb), > + sizeof(struct aq_rx_desc_header)); > + le64_to_cpus(&desc_hdr); Same question as for TX. > + > + /* Check these packets */ > + desc_offset = (u32)desc_hdr.desc_offset; I don't think you need the cast here. Please review all your casts and remove any that are not needed. Andrew