X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=net%2Flapb%2Flapb_timer.c;h=baa247fe4ed057a13b3a1fb257bf5685570f35f4;hb=0c14846032f2c0a3b63234e1fc2759f4155b6067;hp=8f5b17001a076e94c159dfce4752b87ad830b817;hpb=682f7c5c465d7ac4107e51dbf2a847a026b384e8;p=linux-2.6-microblaze.git diff --git a/net/lapb/lapb_timer.c b/net/lapb/lapb_timer.c index 8f5b17001a07..baa247fe4ed0 100644 --- a/net/lapb/lapb_timer.c +++ b/net/lapb/lapb_timer.c @@ -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; /*