Skip to content

Commit

Permalink
cassini: Only use chip checksum for ipv4 packets.
Browse files Browse the repository at this point in the history
According to David Monro, at least with Natsemi Saturn chips the
cassini driver has some trouble with ipv6 checksums.

Until we have more information about what's going on here, only
use the chip checksums for ipv4.

This workaround was suggested and tested by David.

Update version and release date.

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed May 22, 2008
1 parent 7d227cd commit b1443e2
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/net/cassini.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,8 @@

#define DRV_MODULE_NAME "cassini"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "1.5"
#define DRV_MODULE_RELDATE "4 Jan 2008"
#define DRV_MODULE_VERSION "1.6"
#define DRV_MODULE_RELDATE "21 May 2008"

#define CAS_DEF_MSG_ENABLE \
(NETIF_MSG_DRV | \
Expand Down Expand Up @@ -2136,9 +2136,12 @@ static int cas_rx_process_pkt(struct cas *cp, struct cas_rx_comp *rxc,
if (addr)
cas_page_unmap(addr);
}
skb->csum = csum_unfold(~csum);
skb->ip_summed = CHECKSUM_COMPLETE;
skb->protocol = eth_type_trans(skb, cp->dev);
if (skb->protocol == htons(ETH_P_IP)) {
skb->csum = csum_unfold(~csum);
skb->ip_summed = CHECKSUM_COMPLETE;
} else
skb->ip_summed = CHECKSUM_NONE;
return len;
}

Expand Down

0 comments on commit b1443e2

Please sign in to comment.