cassini: Only use chip checksum for ipv4 packets.

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>

+7 -4
+7 -4
drivers/net/cassini.c
··· 142 142 143 143 #define DRV_MODULE_NAME "cassini" 144 144 #define PFX DRV_MODULE_NAME ": " 145 - #define DRV_MODULE_VERSION "1.5" 146 - #define DRV_MODULE_RELDATE "4 Jan 2008" 145 + #define DRV_MODULE_VERSION "1.6" 146 + #define DRV_MODULE_RELDATE "21 May 2008" 147 147 148 148 #define CAS_DEF_MSG_ENABLE \ 149 149 (NETIF_MSG_DRV | \ ··· 2136 2136 if (addr) 2137 2137 cas_page_unmap(addr); 2138 2138 } 2139 - skb->csum = csum_unfold(~csum); 2140 - skb->ip_summed = CHECKSUM_COMPLETE; 2141 2139 skb->protocol = eth_type_trans(skb, cp->dev); 2140 + if (skb->protocol == htons(ETH_P_IP)) { 2141 + skb->csum = csum_unfold(~csum); 2142 + skb->ip_summed = CHECKSUM_COMPLETE; 2143 + } else 2144 + skb->ip_summed = CHECKSUM_NONE; 2142 2145 return len; 2143 2146 } 2144 2147