Merge branch 'e1000-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[pandora-kernel.git] / net / ipx / ipx_route.c
index 8bfaefa..e16c114 100644 (file)
@@ -19,7 +19,7 @@ DEFINE_RWLOCK(ipx_routes_lock);
 
 extern struct ipx_interface *ipx_internal_net;
 
-extern __u16 ipx_cksum(struct ipxhdr *packet, int length);
+extern __be16 ipx_cksum(struct ipxhdr *packet, int length);
 extern struct ipx_interface *ipxitf_find_using_net(__be32 net);
 extern int ipxitf_demux_socket(struct ipx_interface *intrfc,
                               struct sk_buff *skb, int copy);
@@ -203,7 +203,9 @@ int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
        skb->sk = sk;
 
        /* Fill in IPX header */
-       skb->h.raw = skb->nh.raw = skb_put(skb, sizeof(struct ipxhdr));
+       skb_reset_network_header(skb);
+       skb_reset_transport_header(skb);
+       skb_put(skb, sizeof(struct ipxhdr));
        ipx = ipx_hdr(skb);
        ipx->ipx_pktsize = htons(len + sizeof(struct ipxhdr));
        IPX_SKB_CB(skb)->ipx_tctrl = 0;
@@ -234,15 +236,15 @@ int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx,
        if (rc) {
                kfree_skb(skb);
                goto out_put;
-       }       
+       }
 
        /* Apply checksum. Not allowed on 802.3 links. */
        if (sk->sk_no_check || intrfc->if_dlink_type == htons(IPX_FRAME_8023))
-               ipx->ipx_checksum = 0xFFFF;
+               ipx->ipx_checksum = htons(0xFFFF);
        else
                ipx->ipx_checksum = ipx_cksum(ipx, len + sizeof(struct ipxhdr));
 
-       rc = ipxitf_send(intrfc, skb, (rt && rt->ir_routed) ? 
+       rc = ipxitf_send(intrfc, skb, (rt && rt->ir_routed) ?
                         rt->ir_router_node : ipx->ipx_dest.node);
 out_put:
        ipxitf_put(intrfc);