net/lapb: fix t1 timer handling for LAPB_STATE_0
1. DTE interface changes immediately to LAPB_STATE_1 and start sending SABM(E). 2. DCE interface sends N2-times DM and changes to LAPB_STATE_1 afterwards if there is no response in the meantime. Signed-off-by: Martin Schiller <ms@dev.tdt.de> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
a4989fa911
commit
62480b992b
|
@ -85,11 +85,18 @@ static void lapb_t1timer_expiry(struct timer_list *t)
|
|||
switch (lapb->state) {
|
||||
|
||||
/*
|
||||
* If we are a DCE, keep going DM .. DM .. DM
|
||||
* If we are a DCE, send DM up to N2 times, then switch to
|
||||
* STATE_1 and send SABM(E).
|
||||
*/
|
||||
case LAPB_STATE_0:
|
||||
if (lapb->mode & LAPB_DCE)
|
||||
if (lapb->mode & LAPB_DCE &&
|
||||
lapb->n2count != lapb->n2) {
|
||||
lapb->n2count++;
|
||||
lapb_send_control(lapb, LAPB_DM, LAPB_POLLOFF, LAPB_RESPONSE);
|
||||
} else {
|
||||
lapb->state = LAPB_STATE_1;
|
||||
lapb_establish_data_link(lapb);
|
||||
}
|
||||
break;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue