> +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