aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/mtp_data.h1
-rw-r--r--src/mtp_layer3.c8
2 files changed, 8 insertions, 1 deletions
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;
}
}