* LAPB 002 Jonathan Naylor New timer architecture.
* 2000-10-29 Henner Eisen lapb_data_indication() return status.
*/
-
+
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/types.h>
static DEFINE_RWLOCK(lapb_list_lock);
/*
- * Free an allocated lapb control block.
+ * Free an allocated lapb control block.
*/
static void lapb_free_cb(struct lapb_cb *lapb)
{
return lapb->callbacks.data_indication(lapb->dev, skb);
kfree_skb(skb);
- return NET_RX_CN_HIGH; /* For now; must be != NET_RX_DROP */
+ return NET_RX_CN_HIGH; /* For now; must be != NET_RX_DROP */
}
int lapb_data_transmit(struct lapb_cb *lapb, struct sk_buff *skb)
#include <linux/interrupt.h>
#include <net/lapb.h>
-/*
+/*
* This procedure is passed a buffer descriptor for an iframe. It builds
* the rest of the control part of the frame and then writes it out.
*/
lapb->dev, lapb->state, poll_bit, lapb->vs, lapb->vr);
#endif
- lapb_transmit_buffer(lapb, skb, LAPB_COMMAND);
+ lapb_transmit_buffer(lapb, skb, LAPB_COMMAND);
}
void lapb_kick(struct lapb_cb *lapb)
*/
if (lapb->va != nr)
while (skb_peek(&lapb->ack_queue) && lapb->va != nr) {
- skb = skb_dequeue(&lapb->ack_queue);
+ skb = skb_dequeue(&lapb->ack_queue);
kfree_skb(skb);
lapb->va = (lapb->va + 1) % modulus;
}
void lapb_requeue_frames(struct lapb_cb *lapb)
{
- struct sk_buff *skb, *skb_prev = NULL;
+ struct sk_buff *skb, *skb_prev = NULL;
/*
* Requeue all the un-ack-ed frames on the output queue to be picked
{
unsigned short vc = lapb->va;
int modulus;
-
+
modulus = (lapb->mode & LAPB_EXTENDED) ? LAPB_EMODULUS : LAPB_SMODULUS;
while (vc != lapb->vs) {
return 1;
vc = (vc + 1) % modulus;
}
-
+
return nr == lapb->vs;
}
frame->cr = LAPB_RESPONSE;
}
}
-
+
skb_pull(skb, 1);
if (lapb->mode & LAPB_EXTENDED) {
return 0;
}
-/*
+/*
* This routine is called when the HDLC layer internally generates a
- * command or response for the remote machine ( eg. RR, UA etc. ).
+ * command or response for the remote machine ( eg. RR, UA etc. ).
* Only supervisory or unnumbered frames are processed, FRMRs are handled
* by lapb_transmit_frmr below.
*/
lapb_transmit_buffer(lapb, skb, type);
}
-/*
+/*
* This routine generates FRMRs based on information previously stored in
* the LAPB control block.
*/
/*
* Awaiting connection state, send SABM(E), up to N2 times.
*/
- case LAPB_STATE_1:
+ case LAPB_STATE_1:
if (lapb->n2count == lapb->n2) {
lapb_clear_queues(lapb);
lapb->state = LAPB_STATE_0;