aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/sllin/files/0004-Fix-build-with-5.9-kernel.patch
blob: f3bcda9fe346580a4971ba7361bfd0444859aa2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Use sched_set_fifo on newer kernels

The 5.9 kernel removed the export of sched_setscheduler, use
the new sched_set_fifo API if building on 5.9 or newer.  There
is a slight difference in resulting priority level, the new
API will yield a priority of 50 instead of the explicit value
of 40 being used with sched_setscheduler, but this should not
be an issue.

Upstream-Status: Inappropriate [no upstream]
Signed-off-by: Scott Murray <scott.murray@konsulko.com>

---
diff --git a/sllin/sllin.c b/sllin/sllin.c
index 133d6e9..92c52ad 100644
--- a/sllin/sllin.c
+++ b/sllin/sllin.c
@@ -1059,14 +1059,20 @@ static int sllin_kwthread(void *ptr)
 {
 	struct sllin *sl = (struct sllin *)ptr;
 	struct tty_struct *tty = sl->tty;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,9,0)
 	struct sched_param schparam = { .sched_priority = 40 };
+#endif
 	int tx_bytes = 0; /* Used for Network statistics */
 	unsigned long flags;
 	int lin_id;
 	struct sllin_conf_entry *sce;
 
 	netdev_dbg(sl->dev, "sllin_kwthread started.\n");
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,9,0)
 	sched_setscheduler(current, SCHED_FIFO, &schparam);
+#else
+	sched_set_fifo(current);
+#endif
 
 	clear_bit(SLF_ERROR, &sl->flags);
 	sltty_change_speed(tty, sl->lin_baud);
@@ -1274,8 +1280,8 @@ slstate_response_wait:
 					sl->lin_state = SLSTATE_RESPONSE_WAIT_BUS;
 				}
 			}
+			fallthrough;
 
-			/* Be aware, no BREAK here */
 		case SLSTATE_RESPONSE_WAIT_BUS:
 			if (sl->rx_cnt < sl->rx_expect)
 				continue;