diff options
Diffstat (limited to 'net/lapb')
| -rw-r--r-- | net/lapb/Kconfig | 3 | ||||
| -rw-r--r-- | net/lapb/lapb_iface.c | 80 | ||||
| -rw-r--r-- | net/lapb/lapb_in.c | 974 | ||||
| -rw-r--r-- | net/lapb/lapb_out.c | 39 | ||||
| -rw-r--r-- | net/lapb/lapb_subr.c | 29 | ||||
| -rw-r--r-- | net/lapb/lapb_timer.c | 34 | 
6 files changed, 480 insertions, 679 deletions
diff --git a/net/lapb/Kconfig b/net/lapb/Kconfig index f0b5efb31a0..6481839b76c 100644 --- a/net/lapb/Kconfig +++ b/net/lapb/Kconfig @@ -3,8 +3,7 @@  #  config LAPB -	tristate "LAPB Data Link Driver (EXPERIMENTAL)" -	depends on EXPERIMENTAL +	tristate "LAPB Data Link Driver"  	---help---  	  Link Access Procedure, Balanced (LAPB) is the data link layer (i.e.  	  the lower) part of the X.25 protocol. It offers a reliable diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c index d5d8d555c41..3cdaa046c1b 100644 --- a/net/lapb/lapb_iface.c +++ b/net/lapb/lapb_iface.c @@ -15,6 +15,8 @@   *	2000-10-29	Henner Eisen	lapb_data_indication() return status.   */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/module.h>  #include <linux/errno.h>  #include <linux/types.h> @@ -32,7 +34,6 @@  #include <linux/slab.h>  #include <net/sock.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <linux/fcntl.h>  #include <linux/mm.h>  #include <linux/interrupt.h> @@ -139,7 +140,8 @@ out:  	return lapb;  } -int lapb_register(struct net_device *dev, struct lapb_register_struct *callbacks) +int lapb_register(struct net_device *dev, +		  const struct lapb_register_struct *callbacks)  {  	struct lapb_cb *lapb;  	int rc = LAPB_BADTOKEN; @@ -158,7 +160,7 @@ int lapb_register(struct net_device *dev, struct lapb_register_struct *callbacks  		goto out;  	lapb->dev       = dev; -	lapb->callbacks = *callbacks; +	lapb->callbacks = callbacks;  	__lapb_insert_cb(lapb); @@ -279,9 +281,7 @@ int lapb_connect_request(struct net_device *dev)  	lapb_establish_data_link(lapb); -#if LAPB_DEBUG > 0 -	printk(KERN_DEBUG "lapb: (%p) S0 -> S1\n", lapb->dev); -#endif +	lapb_dbg(0, "(%p) S0 -> S1\n", lapb->dev);  	lapb->state = LAPB_STATE_1;  	rc = LAPB_OK; @@ -300,26 +300,22 @@ int lapb_disconnect_request(struct net_device *dev)  		goto out;  	switch (lapb->state) { -		case LAPB_STATE_0: -			rc = LAPB_NOTCONNECTED; -			goto out_put; - -		case LAPB_STATE_1: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S1 TX DISC(1)\n", lapb->dev); -#endif -#if LAPB_DEBUG > 0 -			printk(KERN_DEBUG "lapb: (%p) S1 -> S0\n", lapb->dev); -#endif -			lapb_send_control(lapb, LAPB_DISC, LAPB_POLLON, LAPB_COMMAND); -			lapb->state = LAPB_STATE_0; -			lapb_start_t1timer(lapb); -			rc = LAPB_NOTCONNECTED; -			goto out_put; - -		case LAPB_STATE_2: -			rc = LAPB_OK; -			goto out_put; +	case LAPB_STATE_0: +		rc = LAPB_NOTCONNECTED; +		goto out_put; + +	case LAPB_STATE_1: +		lapb_dbg(1, "(%p) S1 TX DISC(1)\n", lapb->dev); +		lapb_dbg(0, "(%p) S1 -> S0\n", lapb->dev); +		lapb_send_control(lapb, LAPB_DISC, LAPB_POLLON, LAPB_COMMAND); +		lapb->state = LAPB_STATE_0; +		lapb_start_t1timer(lapb); +		rc = LAPB_NOTCONNECTED; +		goto out_put; + +	case LAPB_STATE_2: +		rc = LAPB_OK; +		goto out_put;  	}  	lapb_clear_queues(lapb); @@ -329,12 +325,8 @@ int lapb_disconnect_request(struct net_device *dev)  	lapb_stop_t2timer(lapb);  	lapb->state = LAPB_STATE_2; -#if LAPB_DEBUG > 1 -	printk(KERN_DEBUG "lapb: (%p) S3 DISC(1)\n", lapb->dev); -#endif -#if LAPB_DEBUG > 0 -	printk(KERN_DEBUG "lapb: (%p) S3 -> S2\n", lapb->dev); -#endif +	lapb_dbg(1, "(%p) S3 DISC(1)\n", lapb->dev); +	lapb_dbg(0, "(%p) S3 -> S2\n", lapb->dev);  	rc = LAPB_OK;  out_put: @@ -380,32 +372,32 @@ int lapb_data_received(struct net_device *dev, struct sk_buff *skb)  void lapb_connect_confirmation(struct lapb_cb *lapb, int reason)  { -	if (lapb->callbacks.connect_confirmation) -		lapb->callbacks.connect_confirmation(lapb->dev, reason); +	if (lapb->callbacks->connect_confirmation) +		lapb->callbacks->connect_confirmation(lapb->dev, reason);  }  void lapb_connect_indication(struct lapb_cb *lapb, int reason)  { -	if (lapb->callbacks.connect_indication) -		lapb->callbacks.connect_indication(lapb->dev, reason); +	if (lapb->callbacks->connect_indication) +		lapb->callbacks->connect_indication(lapb->dev, reason);  }  void lapb_disconnect_confirmation(struct lapb_cb *lapb, int reason)  { -	if (lapb->callbacks.disconnect_confirmation) -		lapb->callbacks.disconnect_confirmation(lapb->dev, reason); +	if (lapb->callbacks->disconnect_confirmation) +		lapb->callbacks->disconnect_confirmation(lapb->dev, reason);  }  void lapb_disconnect_indication(struct lapb_cb *lapb, int reason)  { -	if (lapb->callbacks.disconnect_indication) -		lapb->callbacks.disconnect_indication(lapb->dev, reason); +	if (lapb->callbacks->disconnect_indication) +		lapb->callbacks->disconnect_indication(lapb->dev, reason);  }  int lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *skb)  { -	if (lapb->callbacks.data_indication) -		return lapb->callbacks.data_indication(lapb->dev, skb); +	if (lapb->callbacks->data_indication) +		return lapb->callbacks->data_indication(lapb->dev, skb);  	kfree_skb(skb);  	return NET_RX_SUCCESS; /* For now; must be != NET_RX_DROP */ @@ -415,8 +407,8 @@ int lapb_data_transmit(struct lapb_cb *lapb, struct sk_buff *skb)  {  	int used = 0; -	if (lapb->callbacks.data_transmit) { -		lapb->callbacks.data_transmit(lapb->dev, skb); +	if (lapb->callbacks->data_transmit) { +		lapb->callbacks->data_transmit(lapb->dev, skb);  		used = 1;  	} diff --git a/net/lapb/lapb_in.c b/net/lapb/lapb_in.c index 21904a00244..5dba899131b 100644 --- a/net/lapb/lapb_in.c +++ b/net/lapb/lapb_in.c @@ -15,6 +15,8 @@   *	2000-10-29	Henner Eisen	lapb_data_indication() return status.   */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/errno.h>  #include <linux/types.h>  #include <linux/socket.h> @@ -30,7 +32,6 @@  #include <linux/slab.h>  #include <net/sock.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <linux/fcntl.h>  #include <linux/mm.h>  #include <linux/interrupt.h> @@ -44,89 +45,64 @@ static void lapb_state0_machine(struct lapb_cb *lapb, struct sk_buff *skb,  				struct lapb_frame *frame)  {  	switch (frame->type) { -		case LAPB_SABM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S0 RX SABM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S0 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S0 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S0 -> S3\n", -				       lapb->dev); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state     = LAPB_STATE_3; -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_connect_indication(lapb, LAPB_OK); -			} -			break; - -		case LAPB_SABME: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S0 RX SABME(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S0 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S0 -> S3\n", -				       lapb->dev); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state     = LAPB_STATE_3; -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_connect_indication(lapb, LAPB_OK); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S0 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} -			break; - -		case LAPB_DISC: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S0 RX DISC(%d)\n", -			       lapb->dev, frame->pf); -			printk(KERN_DEBUG "lapb: (%p) S0 TX UA(%d)\n", -			       lapb->dev, frame->pf); -#endif +	case LAPB_SABM: +		lapb_dbg(1, "(%p) S0 RX SABM(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S0 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} else { +			lapb_dbg(1, "(%p) S0 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_dbg(0, "(%p) S0 -> S3\n", lapb->dev);  			lapb_send_control(lapb, LAPB_UA, frame->pf,  					  LAPB_RESPONSE); -			break; +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->state     = LAPB_STATE_3; +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_connect_indication(lapb, LAPB_OK); +		} +		break; + +	case LAPB_SABME: +		lapb_dbg(1, "(%p) S0 RX SABME(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S0 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_dbg(0, "(%p) S0 -> S3\n", lapb->dev); +			lapb_send_control(lapb, LAPB_UA, frame->pf, +					  LAPB_RESPONSE); +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->state     = LAPB_STATE_3; +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_connect_indication(lapb, LAPB_OK); +		} else { +			lapb_dbg(1, "(%p) S0 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} +		break; -		default: -			break; +	case LAPB_DISC: +		lapb_dbg(1, "(%p) S0 RX DISC(%d)\n", lapb->dev, frame->pf); +		lapb_dbg(1, "(%p) S0 TX UA(%d)\n", lapb->dev, frame->pf); +		lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); +		break; + +	default: +		break;  	}  	kfree_skb(skb); @@ -140,100 +116,69 @@ static void lapb_state1_machine(struct lapb_cb *lapb, struct sk_buff *skb,  				struct lapb_frame *frame)  {  	switch (frame->type) { -		case LAPB_SABM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S1 RX SABM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S1 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S1 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -			} -			break; - -		case LAPB_SABME: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S1 RX SABME(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S1 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S1 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} -			break; - -		case LAPB_DISC: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S1 RX DISC(%d)\n", -			       lapb->dev, frame->pf); -			printk(KERN_DEBUG "lapb: (%p) S1 TX DM(%d)\n", -			       lapb->dev, frame->pf); -#endif +	case LAPB_SABM: +		lapb_dbg(1, "(%p) S1 RX SABM(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S1 TX DM(%d)\n", +				 lapb->dev, frame->pf);  			lapb_send_control(lapb, LAPB_DM, frame->pf,  					  LAPB_RESPONSE); -			break; - -		case LAPB_UA: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S1 RX UA(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (frame->pf) { -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S1 -> S3\n", -				       lapb->dev); -#endif -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state     = LAPB_STATE_3; -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_connect_confirmation(lapb, LAPB_OK); -			} -			break; - -		case LAPB_DM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S1 RX DM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (frame->pf) { -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S1 -> S0\n", -				       lapb->dev); -#endif -				lapb_clear_queues(lapb); -				lapb->state = LAPB_STATE_0; -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb_disconnect_indication(lapb, LAPB_REFUSED); -			} -			break; +		} else { +			lapb_dbg(1, "(%p) S1 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_UA, frame->pf, +					  LAPB_RESPONSE); +		} +		break; + +	case LAPB_SABME: +		lapb_dbg(1, "(%p) S1 RX SABME(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S1 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_UA, frame->pf, +					  LAPB_RESPONSE); +		} else { +			lapb_dbg(1, "(%p) S1 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} +		break; + +	case LAPB_DISC: +		lapb_dbg(1, "(%p) S1 RX DISC(%d)\n", lapb->dev, frame->pf); +		lapb_dbg(1, "(%p) S1 TX DM(%d)\n", lapb->dev, frame->pf); +		lapb_send_control(lapb, LAPB_DM, frame->pf, LAPB_RESPONSE); +		break; + +	case LAPB_UA: +		lapb_dbg(1, "(%p) S1 RX UA(%d)\n", lapb->dev, frame->pf); +		if (frame->pf) { +			lapb_dbg(0, "(%p) S1 -> S3\n", lapb->dev); +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->state     = LAPB_STATE_3; +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_connect_confirmation(lapb, LAPB_OK); +		} +		break; + +	case LAPB_DM: +		lapb_dbg(1, "(%p) S1 RX DM(%d)\n", lapb->dev, frame->pf); +		if (frame->pf) { +			lapb_dbg(0, "(%p) S1 -> S0\n", lapb->dev); +			lapb_clear_queues(lapb); +			lapb->state = LAPB_STATE_0; +			lapb_start_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb_disconnect_indication(lapb, LAPB_REFUSED); +		} +		break;  	}  	kfree_skb(skb); @@ -247,78 +192,53 @@ static void lapb_state2_machine(struct lapb_cb *lapb, struct sk_buff *skb,  				struct lapb_frame *frame)  {  	switch (frame->type) { -		case LAPB_SABM: -		case LAPB_SABME: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S2 RX {SABM,SABME}(%d)\n", -			       lapb->dev, frame->pf); -			printk(KERN_DEBUG "lapb: (%p) S2 TX DM(%d)\n", -			       lapb->dev, frame->pf); -#endif +	case LAPB_SABM: +	case LAPB_SABME: +		lapb_dbg(1, "(%p) S2 RX {SABM,SABME}(%d)\n", +			 lapb->dev, frame->pf); +		lapb_dbg(1, "(%p) S2 TX DM(%d)\n", lapb->dev, frame->pf); +		lapb_send_control(lapb, LAPB_DM, frame->pf, LAPB_RESPONSE); +		break; + +	case LAPB_DISC: +		lapb_dbg(1, "(%p) S2 RX DISC(%d)\n", lapb->dev, frame->pf); +		lapb_dbg(1, "(%p) S2 TX UA(%d)\n", lapb->dev, frame->pf); +		lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); +		break; + +	case LAPB_UA: +		lapb_dbg(1, "(%p) S2 RX UA(%d)\n", lapb->dev, frame->pf); +		if (frame->pf) { +			lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev); +			lapb->state = LAPB_STATE_0; +			lapb_start_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb_disconnect_confirmation(lapb, LAPB_OK); +		} +		break; + +	case LAPB_DM: +		lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); +		if (frame->pf) { +			lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev); +			lapb->state = LAPB_STATE_0; +			lapb_start_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb_disconnect_confirmation(lapb, LAPB_NOTCONNECTED); +		} +		break; + +	case LAPB_I: +	case LAPB_REJ: +	case LAPB_RNR: +	case LAPB_RR: +		lapb_dbg(1, "(%p) S2 RX {I,REJ,RNR,RR}(%d)\n", +		       lapb->dev, frame->pf); +		lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); +		if (frame->pf)  			lapb_send_control(lapb, LAPB_DM, frame->pf,  					  LAPB_RESPONSE); -			break; - -		case LAPB_DISC: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S2 RX DISC(%d)\n", -			       lapb->dev, frame->pf); -			printk(KERN_DEBUG "lapb: (%p) S2 TX UA(%d)\n", -			       lapb->dev, frame->pf); -#endif -			lapb_send_control(lapb, LAPB_UA, frame->pf, -					  LAPB_RESPONSE); -			break; - -		case LAPB_UA: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S2 RX UA(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (frame->pf) { -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S2 -> S0\n", -				       lapb->dev); -#endif -				lapb->state = LAPB_STATE_0; -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb_disconnect_confirmation(lapb, LAPB_OK); -			} -			break; - -		case LAPB_DM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S2 RX DM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (frame->pf) { -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S2 -> S0\n", -				       lapb->dev); -#endif -				lapb->state = LAPB_STATE_0; -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb_disconnect_confirmation(lapb, -							     LAPB_NOTCONNECTED); -			} -			break; - -		case LAPB_I: -		case LAPB_REJ: -		case LAPB_RNR: -		case LAPB_RR: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S2 RX {I,REJ,RNR,RR}" -			       "(%d)\n", lapb->dev, frame->pf); -			printk(KERN_DEBUG "lapb: (%p) S2 RX DM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (frame->pf) -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			break; +		break;  	}  	kfree_skb(skb); @@ -336,277 +256,215 @@ static void lapb_state3_machine(struct lapb_cb *lapb, struct sk_buff *skb,  						     LAPB_SMODULUS;  	switch (frame->type) { -		case LAPB_SABM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX SABM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S3 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S3 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_requeue_frames(lapb); -			} -			break; - -		case LAPB_SABME: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX SABME(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S3 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_requeue_frames(lapb); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S3 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} -			break; - -		case LAPB_DISC: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX DISC(%d)\n", -			       lapb->dev, frame->pf); -#endif -#if LAPB_DEBUG > 0 -			printk(KERN_DEBUG "lapb: (%p) S3 -> S0\n", -			       lapb->dev); -#endif -			lapb_clear_queues(lapb); +	case LAPB_SABM: +		lapb_dbg(1, "(%p) S3 RX SABM(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S3 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} else { +			lapb_dbg(1, "(%p) S3 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_UA, frame->pf, +					  LAPB_RESPONSE); +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_requeue_frames(lapb); +		} +		break; + +	case LAPB_SABME: +		lapb_dbg(1, "(%p) S3 RX SABME(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S3 TX UA(%d)\n", +				 lapb->dev, frame->pf);  			lapb_send_control(lapb, LAPB_UA, frame->pf,  					  LAPB_RESPONSE); +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_requeue_frames(lapb); +		} else { +			lapb_dbg(1, "(%p) S3 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} +		break; + +	case LAPB_DISC: +		lapb_dbg(1, "(%p) S3 RX DISC(%d)\n", lapb->dev, frame->pf); +		lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev); +		lapb_clear_queues(lapb); +		lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); +		lapb_start_t1timer(lapb); +		lapb_stop_t2timer(lapb); +		lapb->state = LAPB_STATE_0; +		lapb_disconnect_indication(lapb, LAPB_OK); +		break; + +	case LAPB_DM: +		lapb_dbg(1, "(%p) S3 RX DM(%d)\n", lapb->dev, frame->pf); +		lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev); +		lapb_clear_queues(lapb); +		lapb->state = LAPB_STATE_0; +		lapb_start_t1timer(lapb); +		lapb_stop_t2timer(lapb); +		lapb_disconnect_indication(lapb, LAPB_NOTCONNECTED); +		break; + +	case LAPB_RNR: +		lapb_dbg(1, "(%p) S3 RX RNR(%d) R%d\n", +			 lapb->dev, frame->pf, frame->nr); +		lapb->condition |= LAPB_PEER_RX_BUSY_CONDITION; +		lapb_check_need_response(lapb, frame->cr, frame->pf); +		if (lapb_validate_nr(lapb, frame->nr)) { +			lapb_check_iframes_acked(lapb, frame->nr); +		} else { +			lapb->frmr_data = *frame; +			lapb->frmr_type = LAPB_FRMR_Z; +			lapb_transmit_frmr(lapb); +			lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev);  			lapb_start_t1timer(lapb);  			lapb_stop_t2timer(lapb); -			lapb->state = LAPB_STATE_0; -			lapb_disconnect_indication(lapb, LAPB_OK); -			break; - -		case LAPB_DM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX DM(%d)\n", -			       lapb->dev, frame->pf); -#endif -#if LAPB_DEBUG > 0 -			printk(KERN_DEBUG "lapb: (%p) S3 -> S0\n", -			       lapb->dev); -#endif -			lapb_clear_queues(lapb); -			lapb->state = LAPB_STATE_0; +			lapb->state   = LAPB_STATE_4; +			lapb->n2count = 0; +		} +		break; + +	case LAPB_RR: +		lapb_dbg(1, "(%p) S3 RX RR(%d) R%d\n", +			 lapb->dev, frame->pf, frame->nr); +		lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; +		lapb_check_need_response(lapb, frame->cr, frame->pf); +		if (lapb_validate_nr(lapb, frame->nr)) { +			lapb_check_iframes_acked(lapb, frame->nr); +		} else { +			lapb->frmr_data = *frame; +			lapb->frmr_type = LAPB_FRMR_Z; +			lapb_transmit_frmr(lapb); +			lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev);  			lapb_start_t1timer(lapb);  			lapb_stop_t2timer(lapb); -			lapb_disconnect_indication(lapb, LAPB_NOTCONNECTED); -			break; - -		case LAPB_RNR: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX RNR(%d) R%d\n", -			       lapb->dev, frame->pf, frame->nr); -#endif -			lapb->condition |= LAPB_PEER_RX_BUSY_CONDITION; -			lapb_check_need_response(lapb, frame->cr, frame->pf); -			if (lapb_validate_nr(lapb, frame->nr)) { -				lapb_check_iframes_acked(lapb, frame->nr); -			} else { -				lapb->frmr_data = *frame; -				lapb->frmr_type = LAPB_FRMR_Z; -				lapb_transmit_frmr(lapb); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S3 -> S4\n", -				       lapb->dev); -#endif -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state   = LAPB_STATE_4; -				lapb->n2count = 0; -			} -			break; - -		case LAPB_RR: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX RR(%d) R%d\n", -			       lapb->dev, frame->pf, frame->nr); -#endif -			lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; -			lapb_check_need_response(lapb, frame->cr, frame->pf); -			if (lapb_validate_nr(lapb, frame->nr)) { -				lapb_check_iframes_acked(lapb, frame->nr); -			} else { -				lapb->frmr_data = *frame; -				lapb->frmr_type = LAPB_FRMR_Z; -				lapb_transmit_frmr(lapb); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S3 -> S4\n", -				       lapb->dev); -#endif -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state   = LAPB_STATE_4; -				lapb->n2count = 0; -			} -			break; - -		case LAPB_REJ: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX REJ(%d) R%d\n", -			       lapb->dev, frame->pf, frame->nr); -#endif -			lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; -			lapb_check_need_response(lapb, frame->cr, frame->pf); -			if (lapb_validate_nr(lapb, frame->nr)) { -				lapb_frames_acked(lapb, frame->nr); -				lapb_stop_t1timer(lapb); -				lapb->n2count = 0; -				lapb_requeue_frames(lapb); -			} else { -				lapb->frmr_data = *frame; -				lapb->frmr_type = LAPB_FRMR_Z; -				lapb_transmit_frmr(lapb); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S3 -> S4\n", -				       lapb->dev); -#endif -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state   = LAPB_STATE_4; -				lapb->n2count = 0; -			} -			break; - -		case LAPB_I: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX I(%d) S%d R%d\n", -			       lapb->dev, frame->pf, frame->ns, frame->nr); -#endif -			if (!lapb_validate_nr(lapb, frame->nr)) { -				lapb->frmr_data = *frame; -				lapb->frmr_type = LAPB_FRMR_Z; -				lapb_transmit_frmr(lapb); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S3 -> S4\n", -				       lapb->dev); -#endif -				lapb_start_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state   = LAPB_STATE_4; -				lapb->n2count = 0; -				break; -			} -			if (lapb->condition & LAPB_PEER_RX_BUSY_CONDITION) -				lapb_frames_acked(lapb, frame->nr); -			else -				lapb_check_iframes_acked(lapb, frame->nr); - -			if (frame->ns == lapb->vr) { -				int cn; -				cn = lapb_data_indication(lapb, skb); -				queued = 1; -				/* -				 * If upper layer has dropped the frame, we -				 * basically ignore any further protocol -				 * processing. This will cause the peer -				 * to re-transmit the frame later like -				 * a frame lost on the wire. -				 */ -				if (cn == NET_RX_DROP) { -					printk(KERN_DEBUG -					       "LAPB: rx congestion\n"); -					break; -				} -				lapb->vr = (lapb->vr + 1) % modulus; -				lapb->condition &= ~LAPB_REJECT_CONDITION; -				if (frame->pf) -					lapb_enquiry_response(lapb); -				else { -					if (!(lapb->condition & -					      LAPB_ACK_PENDING_CONDITION)) { -						lapb->condition |= LAPB_ACK_PENDING_CONDITION; -						lapb_start_t2timer(lapb); -					} -				} -			} else { -				if (lapb->condition & LAPB_REJECT_CONDITION) { -					if (frame->pf) -						lapb_enquiry_response(lapb); -				} else { -#if LAPB_DEBUG > 1 -					printk(KERN_DEBUG -					       "lapb: (%p) S3 TX REJ(%d) R%d\n", -					       lapb->dev, frame->pf, lapb->vr); -#endif -					lapb->condition |= LAPB_REJECT_CONDITION; -					lapb_send_control(lapb, LAPB_REJ, -							  frame->pf, -							  LAPB_RESPONSE); -					lapb->condition &= ~LAPB_ACK_PENDING_CONDITION; -				} -			} -			break; - -		case LAPB_FRMR: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX FRMR(%d) %02X " -			       "%02X %02X %02X %02X\n", lapb->dev, frame->pf, -			       skb->data[0], skb->data[1], skb->data[2], -			       skb->data[3], skb->data[4]); -#endif -			lapb_establish_data_link(lapb); -#if LAPB_DEBUG > 0 -			printk(KERN_DEBUG "lapb: (%p) S3 -> S1\n", -			       lapb->dev); -#endif +			lapb->state   = LAPB_STATE_4; +			lapb->n2count = 0; +		} +		break; + +	case LAPB_REJ: +		lapb_dbg(1, "(%p) S3 RX REJ(%d) R%d\n", +			 lapb->dev, frame->pf, frame->nr); +		lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; +		lapb_check_need_response(lapb, frame->cr, frame->pf); +		if (lapb_validate_nr(lapb, frame->nr)) { +			lapb_frames_acked(lapb, frame->nr); +			lapb_stop_t1timer(lapb); +			lapb->n2count = 0;  			lapb_requeue_frames(lapb); -			lapb->state = LAPB_STATE_1; -			break; +		} else { +			lapb->frmr_data = *frame; +			lapb->frmr_type = LAPB_FRMR_Z; +			lapb_transmit_frmr(lapb); +			lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); +			lapb_start_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->state   = LAPB_STATE_4; +			lapb->n2count = 0; +		} +		break; -		case LAPB_ILLEGAL: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S3 RX ILLEGAL(%d)\n", -			       lapb->dev, frame->pf); -#endif +	case LAPB_I: +		lapb_dbg(1, "(%p) S3 RX I(%d) S%d R%d\n", +			 lapb->dev, frame->pf, frame->ns, frame->nr); +		if (!lapb_validate_nr(lapb, frame->nr)) {  			lapb->frmr_data = *frame; -			lapb->frmr_type = LAPB_FRMR_W; +			lapb->frmr_type = LAPB_FRMR_Z;  			lapb_transmit_frmr(lapb); -#if LAPB_DEBUG > 0 -			printk(KERN_DEBUG "lapb: (%p) S3 -> S4\n", lapb->dev); -#endif +			lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev);  			lapb_start_t1timer(lapb);  			lapb_stop_t2timer(lapb);  			lapb->state   = LAPB_STATE_4;  			lapb->n2count = 0;  			break; +		} +		if (lapb->condition & LAPB_PEER_RX_BUSY_CONDITION) +			lapb_frames_acked(lapb, frame->nr); +		else +			lapb_check_iframes_acked(lapb, frame->nr); + +		if (frame->ns == lapb->vr) { +			int cn; +			cn = lapb_data_indication(lapb, skb); +			queued = 1; +			/* +			 * If upper layer has dropped the frame, we +			 * basically ignore any further protocol +			 * processing. This will cause the peer +			 * to re-transmit the frame later like +			 * a frame lost on the wire. +			 */ +			if (cn == NET_RX_DROP) { +				pr_debug("rx congestion\n"); +				break; +			} +			lapb->vr = (lapb->vr + 1) % modulus; +			lapb->condition &= ~LAPB_REJECT_CONDITION; +			if (frame->pf) +				lapb_enquiry_response(lapb); +			else { +				if (!(lapb->condition & +				      LAPB_ACK_PENDING_CONDITION)) { +					lapb->condition |= LAPB_ACK_PENDING_CONDITION; +					lapb_start_t2timer(lapb); +				} +			} +		} else { +			if (lapb->condition & LAPB_REJECT_CONDITION) { +				if (frame->pf) +					lapb_enquiry_response(lapb); +			} else { +				lapb_dbg(1, "(%p) S3 TX REJ(%d) R%d\n", +					 lapb->dev, frame->pf, lapb->vr); +				lapb->condition |= LAPB_REJECT_CONDITION; +				lapb_send_control(lapb, LAPB_REJ, frame->pf, +						  LAPB_RESPONSE); +				lapb->condition &= ~LAPB_ACK_PENDING_CONDITION; +			} +		} +		break; + +	case LAPB_FRMR: +		lapb_dbg(1, "(%p) S3 RX FRMR(%d) %02X %02X %02X %02X %02X\n", +			 lapb->dev, frame->pf, +			 skb->data[0], skb->data[1], skb->data[2], +			 skb->data[3], skb->data[4]); +		lapb_establish_data_link(lapb); +		lapb_dbg(0, "(%p) S3 -> S1\n", lapb->dev); +		lapb_requeue_frames(lapb); +		lapb->state = LAPB_STATE_1; +		break; + +	case LAPB_ILLEGAL: +		lapb_dbg(1, "(%p) S3 RX ILLEGAL(%d)\n", lapb->dev, frame->pf); +		lapb->frmr_data = *frame; +		lapb->frmr_type = LAPB_FRMR_W; +		lapb_transmit_frmr(lapb); +		lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); +		lapb_start_t1timer(lapb); +		lapb_stop_t2timer(lapb); +		lapb->state   = LAPB_STATE_4; +		lapb->n2count = 0; +		break;  	}  	if (!queued) @@ -621,75 +479,55 @@ static void lapb_state4_machine(struct lapb_cb *lapb, struct sk_buff *skb,  				struct lapb_frame *frame)  {  	switch (frame->type) { -		case LAPB_SABM: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S4 RX SABM(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S4 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S4 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S4 -> S3\n", -				       lapb->dev); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state     = LAPB_STATE_3; -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_connect_indication(lapb, LAPB_OK); -			} -			break; - -		case LAPB_SABME: -#if LAPB_DEBUG > 1 -			printk(KERN_DEBUG "lapb: (%p) S4 RX SABME(%d)\n", -			       lapb->dev, frame->pf); -#endif -			if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S4 TX UA(%d)\n", -				       lapb->dev, frame->pf); -#endif -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S4 -> S3\n", -				       lapb->dev); -#endif -				lapb_send_control(lapb, LAPB_UA, frame->pf, -						  LAPB_RESPONSE); -				lapb_stop_t1timer(lapb); -				lapb_stop_t2timer(lapb); -				lapb->state     = LAPB_STATE_3; -				lapb->condition = 0x00; -				lapb->n2count   = 0; -				lapb->vs        = 0; -				lapb->vr        = 0; -				lapb->va        = 0; -				lapb_connect_indication(lapb, LAPB_OK); -			} else { -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S4 TX DM(%d)\n", -				       lapb->dev, frame->pf); -#endif -				lapb_send_control(lapb, LAPB_DM, frame->pf, -						  LAPB_RESPONSE); -			} -			break; +	case LAPB_SABM: +		lapb_dbg(1, "(%p) S4 RX SABM(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S4 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} else { +			lapb_dbg(1, "(%p) S4 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_dbg(0, "(%p) S4 -> S3\n", lapb->dev); +			lapb_send_control(lapb, LAPB_UA, frame->pf, +					  LAPB_RESPONSE); +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->state     = LAPB_STATE_3; +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_connect_indication(lapb, LAPB_OK); +		} +		break; + +	case LAPB_SABME: +		lapb_dbg(1, "(%p) S4 RX SABME(%d)\n", lapb->dev, frame->pf); +		if (lapb->mode & LAPB_EXTENDED) { +			lapb_dbg(1, "(%p) S4 TX UA(%d)\n", +				 lapb->dev, frame->pf); +			lapb_dbg(0, "(%p) S4 -> S3\n", lapb->dev); +			lapb_send_control(lapb, LAPB_UA, frame->pf, +					  LAPB_RESPONSE); +			lapb_stop_t1timer(lapb); +			lapb_stop_t2timer(lapb); +			lapb->state     = LAPB_STATE_3; +			lapb->condition = 0x00; +			lapb->n2count   = 0; +			lapb->vs        = 0; +			lapb->vr        = 0; +			lapb->va        = 0; +			lapb_connect_indication(lapb, LAPB_OK); +		} else { +			lapb_dbg(1, "(%p) S4 TX DM(%d)\n", +				 lapb->dev, frame->pf); +			lapb_send_control(lapb, LAPB_DM, frame->pf, +					  LAPB_RESPONSE); +		} +		break;  	}  	kfree_skb(skb); diff --git a/net/lapb/lapb_out.c b/net/lapb/lapb_out.c index c75a79540f9..ba4d015bd1a 100644 --- a/net/lapb/lapb_out.c +++ b/net/lapb/lapb_out.c @@ -14,6 +14,8 @@   *	LAPB 002	Jonathan Naylor	New timer architecture.   */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/errno.h>  #include <linux/types.h>  #include <linux/socket.h> @@ -28,7 +30,6 @@  #include <linux/slab.h>  #include <net/sock.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <linux/fcntl.h>  #include <linux/mm.h>  #include <linux/interrupt.h> @@ -61,10 +62,8 @@ static void lapb_send_iframe(struct lapb_cb *lapb, struct sk_buff *skb, int poll  		*frame |= lapb->vs << 1;  	} -#if LAPB_DEBUG > 1 -	printk(KERN_DEBUG "lapb: (%p) S%d TX I(%d) S%d R%d\n", -	       lapb->dev, lapb->state, poll_bit, lapb->vs, lapb->vr); -#endif +	lapb_dbg(1, "(%p) S%d TX I(%d) S%d R%d\n", +		 lapb->dev, lapb->state, poll_bit, lapb->vs, lapb->vr);  	lapb_transmit_buffer(lapb, skb, LAPB_COMMAND);  } @@ -149,11 +148,9 @@ void lapb_transmit_buffer(struct lapb_cb *lapb, struct sk_buff *skb, int type)  		}  	} -#if LAPB_DEBUG > 2 -	printk(KERN_DEBUG "lapb: (%p) S%d TX %02X %02X %02X\n", -	       lapb->dev, lapb->state, -	       skb->data[0], skb->data[1], skb->data[2]); -#endif +	lapb_dbg(2, "(%p) S%d TX %02X %02X %02X\n", +		 lapb->dev, lapb->state, +		 skb->data[0], skb->data[1], skb->data[2]);  	if (!lapb_data_transmit(lapb, skb))  		kfree_skb(skb); @@ -165,16 +162,10 @@ void lapb_establish_data_link(struct lapb_cb *lapb)  	lapb->n2count   = 0;  	if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -		printk(KERN_DEBUG "lapb: (%p) S%d TX SABME(1)\n", -		       lapb->dev, lapb->state); -#endif +		lapb_dbg(1, "(%p) S%d TX SABME(1)\n", lapb->dev, lapb->state);  		lapb_send_control(lapb, LAPB_SABME, LAPB_POLLON, LAPB_COMMAND);  	} else { -#if LAPB_DEBUG > 1 -		printk(KERN_DEBUG "lapb: (%p) S%d TX SABM(1)\n", -		       lapb->dev, lapb->state); -#endif +		lapb_dbg(1, "(%p) S%d TX SABM(1)\n", lapb->dev, lapb->state);  		lapb_send_control(lapb, LAPB_SABM, LAPB_POLLON, LAPB_COMMAND);  	} @@ -184,10 +175,8 @@ void lapb_establish_data_link(struct lapb_cb *lapb)  void lapb_enquiry_response(struct lapb_cb *lapb)  { -#if LAPB_DEBUG > 1 -	printk(KERN_DEBUG "lapb: (%p) S%d TX RR(1) R%d\n", -	       lapb->dev, lapb->state, lapb->vr); -#endif +	lapb_dbg(1, "(%p) S%d TX RR(1) R%d\n", +		 lapb->dev, lapb->state, lapb->vr);  	lapb_send_control(lapb, LAPB_RR, LAPB_POLLON, LAPB_RESPONSE); @@ -196,10 +185,8 @@ void lapb_enquiry_response(struct lapb_cb *lapb)  void lapb_timeout_response(struct lapb_cb *lapb)  { -#if LAPB_DEBUG > 1 -	printk(KERN_DEBUG "lapb: (%p) S%d TX RR(0) R%d\n", -	       lapb->dev, lapb->state, lapb->vr); -#endif +	lapb_dbg(1, "(%p) S%d TX RR(0) R%d\n", +		 lapb->dev, lapb->state, lapb->vr);  	lapb_send_control(lapb, LAPB_RR, LAPB_POLLOFF, LAPB_RESPONSE);  	lapb->condition &= ~LAPB_ACK_PENDING_CONDITION; diff --git a/net/lapb/lapb_subr.c b/net/lapb/lapb_subr.c index 43a2a7fb327..9d0a426eccb 100644 --- a/net/lapb/lapb_subr.c +++ b/net/lapb/lapb_subr.c @@ -13,6 +13,8 @@   *	LAPB 001	Jonathan Naylor	Started Coding   */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/errno.h>  #include <linux/types.h>  #include <linux/socket.h> @@ -27,7 +29,6 @@  #include <linux/slab.h>  #include <net/sock.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <linux/fcntl.h>  #include <linux/mm.h>  #include <linux/interrupt.h> @@ -112,11 +113,9 @@ int lapb_decode(struct lapb_cb *lapb, struct sk_buff *skb,  {  	frame->type = LAPB_ILLEGAL; -#if LAPB_DEBUG > 2 -	printk(KERN_DEBUG "lapb: (%p) S%d RX %02X %02X %02X\n", -	       lapb->dev, lapb->state, -	       skb->data[0], skb->data[1], skb->data[2]); -#endif +	lapb_dbg(2, "(%p) S%d RX %02X %02X %02X\n", +		 lapb->dev, lapb->state, +		 skb->data[0], skb->data[1], skb->data[2]);  	/* We always need to look at 2 bytes, sometimes we need  	 * to look at 3 and those cases are handled below. @@ -285,12 +284,10 @@ void lapb_transmit_frmr(struct lapb_cb *lapb)  		dptr++;  		*dptr++ = lapb->frmr_type; -#if LAPB_DEBUG > 1 -	printk(KERN_DEBUG "lapb: (%p) S%d TX FRMR %02X %02X %02X %02X %02X\n", -	       lapb->dev, lapb->state, -	       skb->data[1], skb->data[2], skb->data[3], -	       skb->data[4], skb->data[5]); -#endif +		lapb_dbg(1, "(%p) S%d TX FRMR %02X %02X %02X %02X %02X\n", +			 lapb->dev, lapb->state, +			 skb->data[1], skb->data[2], skb->data[3], +			 skb->data[4], skb->data[5]);  	} else {  		dptr    = skb_put(skb, 4);  		*dptr++ = LAPB_FRMR; @@ -302,11 +299,9 @@ void lapb_transmit_frmr(struct lapb_cb *lapb)  		dptr++;  		*dptr++ = lapb->frmr_type; -#if LAPB_DEBUG > 1 -	printk(KERN_DEBUG "lapb: (%p) S%d TX FRMR %02X %02X %02X\n", -	       lapb->dev, lapb->state, skb->data[1], -	       skb->data[2], skb->data[3]); -#endif +		lapb_dbg(1, "(%p) S%d TX FRMR %02X %02X %02X\n", +			 lapb->dev, lapb->state, skb->data[1], +			 skb->data[2], skb->data[3]);  	}  	lapb_transmit_buffer(lapb, skb, LAPB_RESPONSE); diff --git a/net/lapb/lapb_timer.c b/net/lapb/lapb_timer.c index af6d14b44e2..355cc3b6fa4 100644 --- a/net/lapb/lapb_timer.c +++ b/net/lapb/lapb_timer.c @@ -14,6 +14,8 @@   *	LAPB 002	Jonathan Naylor	New timer architecture.   */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/errno.h>  #include <linux/types.h>  #include <linux/socket.h> @@ -28,7 +30,6 @@  #include <linux/skbuff.h>  #include <net/sock.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <linux/fcntl.h>  #include <linux/mm.h>  #include <linux/interrupt.h> @@ -106,21 +107,17 @@ static void lapb_t1timer_expiry(unsigned long param)  				lapb_clear_queues(lapb);  				lapb->state = LAPB_STATE_0;  				lapb_disconnect_indication(lapb, LAPB_TIMEDOUT); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S1 -> S0\n", lapb->dev); -#endif +				lapb_dbg(0, "(%p) S1 -> S0\n", lapb->dev);  				return;  			} else {  				lapb->n2count++;  				if (lapb->mode & LAPB_EXTENDED) { -#if LAPB_DEBUG > 1 -					printk(KERN_DEBUG "lapb: (%p) S1 TX SABME(1)\n", lapb->dev); -#endif +					lapb_dbg(1, "(%p) S1 TX SABME(1)\n", +						 lapb->dev);  					lapb_send_control(lapb, LAPB_SABME, LAPB_POLLON, LAPB_COMMAND);  				} else { -#if LAPB_DEBUG > 1 -					printk(KERN_DEBUG "lapb: (%p) S1 TX SABM(1)\n", lapb->dev); -#endif +					lapb_dbg(1, "(%p) S1 TX SABM(1)\n", +						 lapb->dev);  					lapb_send_control(lapb, LAPB_SABM, LAPB_POLLON, LAPB_COMMAND);  				}  			} @@ -134,15 +131,11 @@ static void lapb_t1timer_expiry(unsigned long param)  				lapb_clear_queues(lapb);  				lapb->state = LAPB_STATE_0;  				lapb_disconnect_confirmation(lapb, LAPB_TIMEDOUT); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S2 -> S0\n", lapb->dev); -#endif +				lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev);  				return;  			} else {  				lapb->n2count++; -#if LAPB_DEBUG > 1 -				printk(KERN_DEBUG "lapb: (%p) S2 TX DISC(1)\n", lapb->dev); -#endif +				lapb_dbg(1, "(%p) S2 TX DISC(1)\n", lapb->dev);  				lapb_send_control(lapb, LAPB_DISC, LAPB_POLLON, LAPB_COMMAND);  			}  			break; @@ -156,13 +149,12 @@ static void lapb_t1timer_expiry(unsigned long param)  				lapb->state = LAPB_STATE_0;  				lapb_stop_t2timer(lapb);  				lapb_disconnect_indication(lapb, LAPB_TIMEDOUT); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S3 -> S0\n", lapb->dev); -#endif +				lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev);  				return;  			} else {  				lapb->n2count++;  				lapb_requeue_frames(lapb); +				lapb_kick(lapb);  			}  			break; @@ -174,9 +166,7 @@ static void lapb_t1timer_expiry(unsigned long param)  				lapb_clear_queues(lapb);  				lapb->state = LAPB_STATE_0;  				lapb_disconnect_indication(lapb, LAPB_TIMEDOUT); -#if LAPB_DEBUG > 0 -				printk(KERN_DEBUG "lapb: (%p) S4 -> S0\n", lapb->dev); -#endif +				lapb_dbg(0, "(%p) S4 -> S0\n", lapb->dev);  				return;  			} else {  				lapb->n2count++;  | 
