From: Andrew Morton Signed-off-by: Andrew Morton --- drivers/ieee1394/eth1394.c | 2 - drivers/net/e1000/e1000_main.c | 39 ++++++++++++++----------------- drivers/net/ehea/ehea_main.c | 4 +-- 3 files changed, 21 insertions(+), 24 deletions(-) diff -puN drivers/net/e1000/e1000_main.c~git-net-fixup drivers/net/e1000/e1000_main.c --- a/drivers/net/e1000/e1000_main.c~git-net-fixup +++ a/drivers/net/e1000/e1000_main.c @@ -2967,33 +2967,30 @@ e1000_tso(struct e1000_adapter *adapter, return err; } - hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2)); + hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); mss = skb_shinfo(skb)->gso_size; if (skb->protocol == htons(ETH_P_IP)) { - skb->nh.iph->tot_len = 0; - skb->nh.iph->check = 0; - skb->h.th->check = - ~csum_tcpudp_magic(skb->nh.iph->saddr, - skb->nh.iph->daddr, - 0, - IPPROTO_TCP, - 0); + struct iphdr *iph = ip_hdr(skb); + iph->tot_len = 0; + iph->check = 0; + tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, + iph->daddr, 0, + IPPROTO_TCP, + 0); cmd_length = E1000_TXD_CMD_IP; - ipcse = skb->h.raw - skb->data - 1; + ipcse = skb_transport_offset(skb) - 1; } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { - skb->nh.ipv6h->payload_len = 0; - skb->h.th->check = - ~csum_ipv6_magic(&skb->nh.ipv6h->saddr, - &skb->nh.ipv6h->daddr, - 0, - IPPROTO_TCP, - 0); + ipv6_hdr(skb)->payload_len = 0; + tcp_hdr(skb)->check = + ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, + &ipv6_hdr(skb)->daddr, + 0, IPPROTO_TCP, 0); ipcse = 0; } - ipcss = skb->nh.raw - skb->data; - ipcso = (void *)&(skb->nh.iph->check) - (void *)skb->data; - tucss = skb->h.raw - skb->data; - tucso = (void *)&(skb->h.th->check) - (void *)skb->data; + ipcss = skb_network_offset(skb); + ipcso = (void *)&(ip_hdr(skb)->check) - (void *)skb->data; + tucss = skb_transport_offset(skb); + tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data; tucse = 0; cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE | diff -puN drivers/net/ehea/ehea_main.c~git-net-fixup drivers/net/ehea/ehea_main.c --- a/drivers/net/ehea/ehea_main.c~git-net-fixup +++ a/drivers/net/ehea/ehea_main.c @@ -426,8 +426,8 @@ static struct ehea_cqe *ehea_proc_rwqes( if (!skb) break; } - memcpy(skb->data, ((char*)cqe) + 64, - cqe->num_bytes_transfered - 4); + skb_copy_to_linear_data(skb, ((char*)cqe) + 64, + cqe->num_bytes_transfered - 4); ehea_fill_skb(port->netdev, skb, cqe); } else if (rq == 2) { /* RQ2 */ skb = get_skb_by_index(skb_arr_rq2, diff -puN drivers/ieee1394/eth1394.c~git-net-fixup drivers/ieee1394/eth1394.c --- a/drivers/ieee1394/eth1394.c~git-net-fixup +++ a/drivers/ieee1394/eth1394.c @@ -752,7 +752,7 @@ static u16 ether1394_type_trans(struct s struct eth1394hdr *eth; unsigned char *rawp; - skb->mac.raw = skb->data; + skb_reset_mac_header(skb); skb_pull(skb, ETH1394_HLEN); eth = eth1394_hdr(skb); _