On Tue, 2018-10-02 at 10:26 +0100, Ben Dooks wrote:
[...]
> @@ -2031,7 +2045,8 @@ static struct sk_buff *smsc95xx_tx_fixup(struct usbnet
> *dev,
> > }
>
> if (csum) {
> - if (skb->len <= 45) {
> + /* note, csum does not work if csum in last DWORD of packet */
> + if (skb->len <= 45 || !smsc95xx_can_checksum(skb)) {
It would make more sense to move the length check into
smsc95xx_can_checksum() as well.
Ben.
> /* workaround - hardware tx checksum does not work
> * properly with extremely small packets */
> long csstart = skb_checksum_start_offset(skb);
--
Ben Hutchings, Software Developer Codethink Ltd
https://www.codethink.co.uk/ Dale House, 35 Dale Street
Manchester, M1 2HF, United Kingdom