diff --git a/include/mtp_data.h b/include/mtp_data.h index c771c07..20b5e5e 100644 --- a/include/mtp_data.h +++ b/include/mtp_data.h @@ -92,6 +92,7 @@ struct mtp_link { int blocked; + int first_sls; int link_no; int sltm_pending; int was_up; diff --git a/src/mtp_layer3.c b/src/mtp_layer3.c index 4f6564c..fa8aa98 100644 --- a/src/mtp_layer3.c +++ b/src/mtp_layer3.c @@ -577,13 +577,19 @@ static struct mtp_link *find_next_link(struct mtp_link_set *set, void mtp_link_set_init_slc(struct mtp_link_set *set) { - struct mtp_link *link = NULL; + struct mtp_link *link = NULL, *tmp; int i; + llist_for_each_entry(tmp, &set->links, entry) + tmp->first_sls = 100; + for (i = 0; i < ARRAY_SIZE(set->slc); ++i) { link = find_next_link(set, link); set->slc[i] = link; + + if (link && i < link->first_sls) + link->first_sls = i; } }