aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/net/lapb/lapb_timer.c
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2020-11-27 17:23:01 -0800
committerJakub Kicinski <kuba@kernel.org>2020-11-27 17:23:02 -0800
commit35c58418898b5e80eaa55f5ce861734302c6f157 (patch)
treed089feb486c6240cb6787e58884620fc85c7b72d /net/lapb/lapb_timer.c
parentMerge branch 'mlxsw-update-adjacency-index-more-efficiently' (diff)
parentnet/x25: remove x25_kill_by_device() (diff)
downloadwireguard-linux-35c58418898b5e80eaa55f5ce861734302c6f157.tar.xz
wireguard-linux-35c58418898b5e80eaa55f5ce861734302c6f157.zip
Merge branch 'net-x25-netdev-event-handling'
Martin Schiller says: ==================== net/x25: netdev event handling ==================== Link: https://lore.kernel.org/r/20201126063557.1283-1-ms@dev.tdt.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/lapb/lapb_timer.c')
-rw-r--r--net/lapb/lapb_timer.c11
1 files changed, 9 insertions, 2 deletions
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;
/*