]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ax25/ax25_subr.c
tcp FRTO: Fix fallback to conventional recovery
[linux-2.6-omap-h63xx.git] / net / ax25 / ax25_subr.c
index b6c577e3c9140a6b216f23b267b2338a22d3632c..d8f2157331757a47d5272ac77cef9fee97544cc8 100644 (file)
@@ -162,7 +162,7 @@ void ax25_send_control(ax25_cb *ax25, int frametype, int poll_bit, int type)
 
        skb_reserve(skb, ax25->ax25_dev->dev->hard_header_len);
 
-       skb->nh.raw = skb->data;
+       skb_reset_network_header(skb);
 
        /* Assume a response - address structure for DTE */
        if (ax25->modulus == AX25_MODULUS) {
@@ -205,7 +205,7 @@ void ax25_return_dm(struct net_device *dev, ax25_address *src, ax25_address *des
                return; /* Next SABM will get DM'd */
 
        skb_reserve(skb, dev->hard_header_len);
-       skb->nh.raw = skb->data;
+       skb_reset_network_header(skb);
 
        ax25_digi_invert(digi, &retdigi);
 
@@ -279,6 +279,7 @@ void ax25_disconnect(ax25_cb *ax25, int reason)
        ax25_link_failed(ax25, reason);
 
        if (ax25->sk != NULL) {
+               local_bh_disable();
                bh_lock_sock(ax25->sk);
                ax25->sk->sk_state     = TCP_CLOSE;
                ax25->sk->sk_err       = reason;
@@ -288,5 +289,6 @@ void ax25_disconnect(ax25_cb *ax25, int reason)
                        sock_set_flag(ax25->sk, SOCK_DEAD);
                }
                bh_unlock_sock(ax25->sk);
+               local_bh_enable();
        }
 }