/* e1000_rx_checksum - Receive Checksum Offload for 82543 @adapter: board private structure @status_err: receive descriptor status and error fields @csum: receive descriptor csum field @sk_buff: socket buffer with received data  */
static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, u32 csum, struct sk_buff *skb)
/* e1000_rx_checksum - Receive Checksum Offload for 82543 @adapter: board private structure @status_err: receive descriptor status and error fields @csum: receive descriptor csum field @sk_buff: socket buffer with received data  */
static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, u32 csum, struct sk_buff *skb)
{
	struct e1000_hw *hw = &adapter->hw;
	u16 status = (u16)status_err;
	u8 errors = (u8)(status_err >> 24);
	skb->ip_summed = CHECKSUM_NONE;
	if (unlikely(hw->mac_type < e1000_82543)) return;
	if (unlikely(status & E1000_RXD_STAT_IXSM)) return;
	if (unlikely(errors & E1000_RXD_ERR_TCPE)) {
		adapter->hw_csum_err++;
		return;
	}
	if (!(status & E1000_RXD_STAT_TCPCS))
		return;
	if (likely(status & E1000_RXD_STAT_TCPCS)) {
		skb->ip_summed = CHECKSUM_UNNECESSARY;
	}
	adapter->hw_csum_good++;
}