1*4882a593SmuzhiyunFrom cde2dbf6e94e00fcf198422b03de01d3090675d9 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jesper Skov <jb1811@jyskebank.dk>
3*4882a593SmuzhiyunDate: Fri, 25 Oct 2019 10:10:29 +0200
4*4882a593SmuzhiyunSubject: [PATCH] Fix kernel 5.3 driver crashes, from aircrack-ng/rtl8812au#421
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun[Upstream: https://github.com/abperiasamy/rtl8812AU_8821AU_linux/commit/822b485d36d6f72304a219c3be228f40968b542b.patch]
7*4882a593SmuzhiyunSigned-off-by: Peter Seiderer <ps.report@gmx.net>
8*4882a593SmuzhiyunSigned-off-by: Christian Stewart <christian@paral.in>
9*4882a593Smuzhiyun---
10*4882a593Smuzhiyun os_dep/linux/rtw_cfgvendor.c | 45 ++++++++++++++++++++++++++++++++++++
11*4882a593Smuzhiyun 1 file changed, 45 insertions(+)
12*4882a593Smuzhiyun
13*4882a593Smuzhiyundiff --git a/os_dep/linux/rtw_cfgvendor.c b/os_dep/linux/rtw_cfgvendor.c
14*4882a593Smuzhiyunindex e7ba90a..81fc8af 100644
15*4882a593Smuzhiyun--- a/os_dep/linux/rtw_cfgvendor.c
16*4882a593Smuzhiyun+++ b/os_dep/linux/rtw_cfgvendor.c
17*4882a593Smuzhiyun@@ -1173,6 +1173,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
18*4882a593Smuzhiyun 			.subcmd = BRCM_VENDOR_SCMD_PRIV_STR
19*4882a593Smuzhiyun 		},
20*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
21*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
22*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
23*4882a593Smuzhiyun+#endif
24*4882a593Smuzhiyun 		.doit = wl_cfgvendor_priv_string_handler
25*4882a593Smuzhiyun 	},
26*4882a593Smuzhiyun #if defined(GSCAN_SUPPORT) && 0
27*4882a593Smuzhiyun@@ -1182,6 +1185,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
28*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_GET_CAPABILITIES
29*4882a593Smuzhiyun 		},
30*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
31*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
32*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
33*4882a593Smuzhiyun+#endif
34*4882a593Smuzhiyun 		.doit = wl_cfgvendor_gscan_get_capabilities
35*4882a593Smuzhiyun 	},
36*4882a593Smuzhiyun 	{
37*4882a593Smuzhiyun@@ -1190,6 +1196,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
38*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_SET_CONFIG
39*4882a593Smuzhiyun 		},
40*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
41*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
42*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
43*4882a593Smuzhiyun+#endif
44*4882a593Smuzhiyun 		.doit = wl_cfgvendor_set_scan_cfg
45*4882a593Smuzhiyun 	},
46*4882a593Smuzhiyun 	{
47*4882a593Smuzhiyun@@ -1198,6 +1207,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
48*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_SET_SCAN_CONFIG
49*4882a593Smuzhiyun 		},
50*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
51*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
52*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
53*4882a593Smuzhiyun+#endif
54*4882a593Smuzhiyun 		.doit = wl_cfgvendor_set_batch_scan_cfg
55*4882a593Smuzhiyun 	},
56*4882a593Smuzhiyun 	{
57*4882a593Smuzhiyun@@ -1206,6 +1218,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
58*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_ENABLE_GSCAN
59*4882a593Smuzhiyun 		},
60*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
61*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
62*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
63*4882a593Smuzhiyun+#endif
64*4882a593Smuzhiyun 		.doit = wl_cfgvendor_initiate_gscan
65*4882a593Smuzhiyun 	},
66*4882a593Smuzhiyun 	{
67*4882a593Smuzhiyun@@ -1214,6 +1229,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
68*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS
69*4882a593Smuzhiyun 		},
70*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
71*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
72*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
73*4882a593Smuzhiyun+#endif
74*4882a593Smuzhiyun 		.doit = wl_cfgvendor_enable_full_scan_result
75*4882a593Smuzhiyun 	},
76*4882a593Smuzhiyun 	{
77*4882a593Smuzhiyun@@ -1222,6 +1240,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
78*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_SET_HOTLIST
79*4882a593Smuzhiyun 		},
80*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
81*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
82*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
83*4882a593Smuzhiyun+#endif
84*4882a593Smuzhiyun 		.doit = wl_cfgvendor_hotlist_cfg
85*4882a593Smuzhiyun 	},
86*4882a593Smuzhiyun 	{
87*4882a593Smuzhiyun@@ -1230,6 +1251,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
88*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG
89*4882a593Smuzhiyun 		},
90*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
91*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
92*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
93*4882a593Smuzhiyun+#endif
94*4882a593Smuzhiyun 		.doit = wl_cfgvendor_significant_change_cfg
95*4882a593Smuzhiyun 	},
96*4882a593Smuzhiyun 	{
97*4882a593Smuzhiyun@@ -1238,6 +1262,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
98*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_GET_SCAN_RESULTS
99*4882a593Smuzhiyun 		},
100*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
101*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
102*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
103*4882a593Smuzhiyun+#endif
104*4882a593Smuzhiyun 		.doit = wl_cfgvendor_gscan_get_batch_results
105*4882a593Smuzhiyun 	},
106*4882a593Smuzhiyun 	{
107*4882a593Smuzhiyun@@ -1246,6 +1273,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
108*4882a593Smuzhiyun 			.subcmd = GSCAN_SUBCMD_GET_CHANNEL_LIST
109*4882a593Smuzhiyun 		},
110*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
111*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
112*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
113*4882a593Smuzhiyun+#endif
114*4882a593Smuzhiyun 		.doit = wl_cfgvendor_gscan_get_channel_list
115*4882a593Smuzhiyun 	},
116*4882a593Smuzhiyun #endif /* GSCAN_SUPPORT */
117*4882a593Smuzhiyun@@ -1256,6 +1286,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
118*4882a593Smuzhiyun 			.subcmd = RTT_SUBCMD_SET_CONFIG
119*4882a593Smuzhiyun 		},
120*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
121*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
122*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
123*4882a593Smuzhiyun+#endif
124*4882a593Smuzhiyun 		.doit = wl_cfgvendor_rtt_set_config
125*4882a593Smuzhiyun 	},
126*4882a593Smuzhiyun 	{
127*4882a593Smuzhiyun@@ -1264,6 +1297,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
128*4882a593Smuzhiyun 			.subcmd = RTT_SUBCMD_CANCEL_CONFIG
129*4882a593Smuzhiyun 		},
130*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
131*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
132*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
133*4882a593Smuzhiyun+#endif
134*4882a593Smuzhiyun 		.doit = wl_cfgvendor_rtt_cancel_config
135*4882a593Smuzhiyun 	},
136*4882a593Smuzhiyun 	{
137*4882a593Smuzhiyun@@ -1272,6 +1308,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
138*4882a593Smuzhiyun 			.subcmd = RTT_SUBCMD_GETCAPABILITY
139*4882a593Smuzhiyun 		},
140*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
141*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
142*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
143*4882a593Smuzhiyun+#endif
144*4882a593Smuzhiyun 		.doit = wl_cfgvendor_rtt_get_capability
145*4882a593Smuzhiyun 	},
146*4882a593Smuzhiyun #endif /* RTT_SUPPORT */
147*4882a593Smuzhiyun@@ -1281,6 +1320,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
148*4882a593Smuzhiyun 			.subcmd = ANDR_WIFI_SUBCMD_GET_FEATURE_SET
149*4882a593Smuzhiyun 		},
150*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
151*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
152*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
153*4882a593Smuzhiyun+#endif
154*4882a593Smuzhiyun 		.doit = rtw_cfgvendor_get_feature_set
155*4882a593Smuzhiyun 	},
156*4882a593Smuzhiyun 	{
157*4882a593Smuzhiyun@@ -1289,6 +1331,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {
158*4882a593Smuzhiyun 			.subcmd = ANDR_WIFI_SUBCMD_GET_FEATURE_SET_MATRIX
159*4882a593Smuzhiyun 		},
160*4882a593Smuzhiyun 		.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
161*4882a593Smuzhiyun+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)
162*4882a593Smuzhiyun+		.policy = VENDOR_CMD_RAW_DATA,
163*4882a593Smuzhiyun+#endif
164*4882a593Smuzhiyun 		.doit = rtw_cfgvendor_get_feature_set_matrix
165*4882a593Smuzhiyun 	}
166*4882a593Smuzhiyun };
167*4882a593Smuzhiyun--
168*4882a593Smuzhiyun2.28.0
169*4882a593Smuzhiyun
170