1*71e72c9eSCy Schubert /*
2*71e72c9eSCy Schubert * nan_test - NAN NDP state machine test cases
3*71e72c9eSCy Schubert * Copyright (C) 2025 Intel Corporation
4*71e72c9eSCy Schubert *
5*71e72c9eSCy Schubert * This software may be distributed under the terms of the BSD license.
6*71e72c9eSCy Schubert * See README for more details.
7*71e72c9eSCy Schubert */
8*71e72c9eSCy Schubert
9*71e72c9eSCy Schubert #include "utils/includes.h"
10*71e72c9eSCy Schubert #include "utils/common.h"
11*71e72c9eSCy Schubert #include "utils/list.h"
12*71e72c9eSCy Schubert #include "nan_i.h"
13*71e72c9eSCy Schubert #include "nan_module_tests.h"
14*71e72c9eSCy Schubert
15*71e72c9eSCy Schubert static u8 default_bitmap[] = { 0xfe, 0xff, 0xfe, 0xff };
16*71e72c9eSCy Schubert
nan_test_schedule_cb(struct nan_schedule * sched,bool ndc,int freq,int center_freq1,int center_freq2,int bandwidth)17*71e72c9eSCy Schubert static void nan_test_schedule_cb(struct nan_schedule *sched, bool ndc,
18*71e72c9eSCy Schubert int freq, int center_freq1, int center_freq2,
19*71e72c9eSCy Schubert int bandwidth)
20*71e72c9eSCy Schubert {
21*71e72c9eSCy Schubert os_memset(sched, 0, sizeof(*sched));
22*71e72c9eSCy Schubert
23*71e72c9eSCy Schubert /* Only map ID 0 is used */
24*71e72c9eSCy Schubert sched->map_ids_bitmap = 0x1;
25*71e72c9eSCy Schubert
26*71e72c9eSCy Schubert sched->n_chans = 1;
27*71e72c9eSCy Schubert sched->chans[0].chan.freq = freq;
28*71e72c9eSCy Schubert sched->chans[0].chan.center_freq1 = center_freq1;
29*71e72c9eSCy Schubert sched->chans[0].chan.center_freq2 = center_freq2;
30*71e72c9eSCy Schubert sched->chans[0].chan.bandwidth = bandwidth;
31*71e72c9eSCy Schubert
32*71e72c9eSCy Schubert sched->chans[0].committed.duration = 0;
33*71e72c9eSCy Schubert sched->chans[0].committed.period = 3;
34*71e72c9eSCy Schubert sched->chans[0].committed.offset = 0;
35*71e72c9eSCy Schubert sched->chans[0].committed.len = sizeof(default_bitmap);
36*71e72c9eSCy Schubert os_memcpy(sched->chans[0].committed.bitmap, default_bitmap,
37*71e72c9eSCy Schubert sizeof(default_bitmap));
38*71e72c9eSCy Schubert
39*71e72c9eSCy Schubert sched->chans[0].map_id = 0;
40*71e72c9eSCy Schubert
41*71e72c9eSCy Schubert if (!ndc)
42*71e72c9eSCy Schubert return;
43*71e72c9eSCy Schubert
44*71e72c9eSCy Schubert os_memset(&sched->ndc, 0, sizeof(sched->ndc));
45*71e72c9eSCy Schubert sched->ndc.duration = 0;
46*71e72c9eSCy Schubert sched->ndc.period = 3;
47*71e72c9eSCy Schubert sched->ndc.offset = 0;
48*71e72c9eSCy Schubert sched->ndc.len = 1;
49*71e72c9eSCy Schubert sched->ndc.bitmap[0] = 0xfe;
50*71e72c9eSCy Schubert }
51*71e72c9eSCy Schubert
52*71e72c9eSCy Schubert
nan_test_schedule_cb_all_ndc(struct nan_schedule * sched)53*71e72c9eSCy Schubert static int nan_test_schedule_cb_all_ndc(struct nan_schedule *sched)
54*71e72c9eSCy Schubert {
55*71e72c9eSCy Schubert static u8 seq_id = 1;
56*71e72c9eSCy Schubert
57*71e72c9eSCy Schubert nan_test_schedule_cb(sched, true, 5745, 5745, true, 20);
58*71e72c9eSCy Schubert sched->sequence_id = ++seq_id;
59*71e72c9eSCy Schubert return 0;
60*71e72c9eSCy Schubert }
61*71e72c9eSCy Schubert
62*71e72c9eSCy Schubert
nan_test_schedule_cb_all_no_ndc(struct nan_schedule * sched)63*71e72c9eSCy Schubert static int nan_test_schedule_cb_all_no_ndc(struct nan_schedule *sched)
64*71e72c9eSCy Schubert {
65*71e72c9eSCy Schubert static u8 seq_id = 1;
66*71e72c9eSCy Schubert
67*71e72c9eSCy Schubert nan_test_schedule_cb(sched, false, 5745, 5745, 0, 20);
68*71e72c9eSCy Schubert sched->sequence_id = ++seq_id;
69*71e72c9eSCy Schubert return 0;
70*71e72c9eSCy Schubert }
71*71e72c9eSCy Schubert
72*71e72c9eSCy Schubert
nan_test_schedule_cb_all_no_ndc_period_4(struct nan_schedule * sched)73*71e72c9eSCy Schubert static int nan_test_schedule_cb_all_no_ndc_period_4(struct nan_schedule *sched)
74*71e72c9eSCy Schubert {
75*71e72c9eSCy Schubert static u8 seq_id = 1;
76*71e72c9eSCy Schubert
77*71e72c9eSCy Schubert nan_test_schedule_cb(sched, false, 5745, 5745, 0, 20);
78*71e72c9eSCy Schubert
79*71e72c9eSCy Schubert /*
80*71e72c9eSCy Schubert * Modify the map to have a period or 1024 TUs (both halfs are
81*71e72c9eSCy Schubert * identical).
82*71e72c9eSCy Schubert */
83*71e72c9eSCy Schubert sched->chans[0].committed.period = 4;
84*71e72c9eSCy Schubert sched->chans[0].committed.len += sizeof(default_bitmap);
85*71e72c9eSCy Schubert os_memcpy(sched->chans[0].committed.bitmap + sizeof(default_bitmap),
86*71e72c9eSCy Schubert default_bitmap,
87*71e72c9eSCy Schubert sizeof(default_bitmap));
88*71e72c9eSCy Schubert
89*71e72c9eSCy Schubert sched->sequence_id = ++seq_id;
90*71e72c9eSCy Schubert return 0;
91*71e72c9eSCy Schubert }
92*71e72c9eSCy Schubert
93*71e72c9eSCy Schubert
nan_test_schedule_cb_2ghz_no_ndc(struct nan_schedule * sched)94*71e72c9eSCy Schubert static int nan_test_schedule_cb_2ghz_no_ndc(struct nan_schedule *sched)
95*71e72c9eSCy Schubert {
96*71e72c9eSCy Schubert static u8 seq_id = 1;
97*71e72c9eSCy Schubert
98*71e72c9eSCy Schubert nan_test_schedule_cb(sched, false, 2437, 2437, 0, 20);
99*71e72c9eSCy Schubert sched->sequence_id = ++seq_id;
100*71e72c9eSCy Schubert return 0;
101*71e72c9eSCy Schubert }
102*71e72c9eSCy Schubert
103*71e72c9eSCy Schubert
nan_test_get_chans_default(struct nan_channels * chans)104*71e72c9eSCy Schubert static int nan_test_get_chans_default(struct nan_channels *chans)
105*71e72c9eSCy Schubert {
106*71e72c9eSCy Schubert chans->n_chans = 2;
107*71e72c9eSCy Schubert chans->chans = os_zalloc(sizeof(struct nan_channel_info) *
108*71e72c9eSCy Schubert chans->n_chans);
109*71e72c9eSCy Schubert if (!chans->chans)
110*71e72c9eSCy Schubert return -1;
111*71e72c9eSCy Schubert
112*71e72c9eSCy Schubert chans->chans[0].channel = 6;
113*71e72c9eSCy Schubert chans->chans[0].op_class = 81;
114*71e72c9eSCy Schubert chans->chans[0].pref = 255;
115*71e72c9eSCy Schubert
116*71e72c9eSCy Schubert chans->chans[1].channel = 149;
117*71e72c9eSCy Schubert chans->chans[1].op_class = 126;
118*71e72c9eSCy Schubert chans->chans[1].pref = 254;
119*71e72c9eSCy Schubert
120*71e72c9eSCy Schubert return 0;
121*71e72c9eSCy Schubert }
122*71e72c9eSCy Schubert
123*71e72c9eSCy Schubert
nan_test_get_chans_default_reverse(struct nan_channels * chans)124*71e72c9eSCy Schubert static int nan_test_get_chans_default_reverse(struct nan_channels *chans)
125*71e72c9eSCy Schubert {
126*71e72c9eSCy Schubert chans->n_chans = 2;
127*71e72c9eSCy Schubert chans->chans = os_zalloc(sizeof(struct nan_channel_info) *
128*71e72c9eSCy Schubert chans->n_chans);
129*71e72c9eSCy Schubert if (!chans->chans)
130*71e72c9eSCy Schubert return -1;
131*71e72c9eSCy Schubert
132*71e72c9eSCy Schubert chans->chans[0].channel = 149;
133*71e72c9eSCy Schubert chans->chans[0].op_class = 126;
134*71e72c9eSCy Schubert chans->chans[0].pref = 255;
135*71e72c9eSCy Schubert
136*71e72c9eSCy Schubert chans->chans[1].channel = 6;
137*71e72c9eSCy Schubert chans->chans[1].op_class = 81;
138*71e72c9eSCy Schubert chans->chans[1].pref = 254;
139*71e72c9eSCy Schubert
140*71e72c9eSCy Schubert return 0;
141*71e72c9eSCy Schubert }
142*71e72c9eSCy Schubert
143*71e72c9eSCy Schubert
nan_test_get_chans_default_24g(struct nan_channels * chans)144*71e72c9eSCy Schubert static int nan_test_get_chans_default_24g(struct nan_channels *chans)
145*71e72c9eSCy Schubert {
146*71e72c9eSCy Schubert chans->n_chans = 1;
147*71e72c9eSCy Schubert chans->chans = os_zalloc(sizeof(struct nan_channel_info) *
148*71e72c9eSCy Schubert chans->n_chans);
149*71e72c9eSCy Schubert if (!chans->chans)
150*71e72c9eSCy Schubert return -1;
151*71e72c9eSCy Schubert
152*71e72c9eSCy Schubert chans->chans[0].channel = 6;
153*71e72c9eSCy Schubert chans->chans[0].op_class = 81;
154*71e72c9eSCy Schubert chans->chans[0].pref = 255;
155*71e72c9eSCy Schubert
156*71e72c9eSCy Schubert return 0;
157*71e72c9eSCy Schubert }
158*71e72c9eSCy Schubert
159*71e72c9eSCy Schubert
nan_test_get_chans_default_52g(struct nan_channels * chans)160*71e72c9eSCy Schubert static int nan_test_get_chans_default_52g(struct nan_channels *chans)
161*71e72c9eSCy Schubert {
162*71e72c9eSCy Schubert chans->n_chans = 1;
163*71e72c9eSCy Schubert chans->chans = os_zalloc(sizeof(struct nan_channel_info) *
164*71e72c9eSCy Schubert chans->n_chans);
165*71e72c9eSCy Schubert if (!chans->chans)
166*71e72c9eSCy Schubert return -1;
167*71e72c9eSCy Schubert
168*71e72c9eSCy Schubert chans->chans[0].channel = 149;
169*71e72c9eSCy Schubert chans->chans[0].op_class = 126;
170*71e72c9eSCy Schubert chans->chans[0].pref = 255;
171*71e72c9eSCy Schubert
172*71e72c9eSCy Schubert return 0;
173*71e72c9eSCy Schubert }
174*71e72c9eSCy Schubert
175*71e72c9eSCy Schubert
176*71e72c9eSCy Schubert static struct nan_test_case three_way_ndp_two_way_ndl_chan_149 = {
177*71e72c9eSCy Schubert .name = "Three way NDP and two way NDL channel 149",
178*71e72c9eSCy Schubert .pub_conf = {
179*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
180*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
181*71e72c9eSCy Schubert .n_ndps = 1,
182*71e72c9eSCy Schubert .ndp_confs = {
183*71e72c9eSCy Schubert {
184*71e72c9eSCy Schubert .accept_request = 1,
185*71e72c9eSCy Schubert .term_once_connected = 0,
186*71e72c9eSCy Schubert .expected_result =
187*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
188*71e72c9eSCy Schubert },
189*71e72c9eSCy Schubert },
190*71e72c9eSCy Schubert .pot_avail = {
191*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
192*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
193*71e72c9eSCy Schubert },
194*71e72c9eSCy Schubert .pot_avail_len = 13,
195*71e72c9eSCy Schubert },
196*71e72c9eSCy Schubert .sub_conf = {
197*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
198*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
199*71e72c9eSCy Schubert .n_ndps = 1,
200*71e72c9eSCy Schubert .ndp_confs = {
201*71e72c9eSCy Schubert {
202*71e72c9eSCy Schubert .accept_request = 1,
203*71e72c9eSCy Schubert .term_once_connected = 1,
204*71e72c9eSCy Schubert .expected_result =
205*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
206*71e72c9eSCy Schubert },
207*71e72c9eSCy Schubert },
208*71e72c9eSCy Schubert }
209*71e72c9eSCy Schubert };
210*71e72c9eSCy Schubert
211*71e72c9eSCy Schubert
212*71e72c9eSCy Schubert static struct nan_test_case three_way_ndp_two_way_ndl_diff_period = {
213*71e72c9eSCy Schubert .name = "Three way NDP and two way NDL channel 149. Subscriber period=4",
214*71e72c9eSCy Schubert .pub_conf = {
215*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
216*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
217*71e72c9eSCy Schubert .n_ndps = 1,
218*71e72c9eSCy Schubert .ndp_confs = {
219*71e72c9eSCy Schubert {
220*71e72c9eSCy Schubert .accept_request = 1,
221*71e72c9eSCy Schubert .term_once_connected = 0,
222*71e72c9eSCy Schubert .expected_result =
223*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
224*71e72c9eSCy Schubert },
225*71e72c9eSCy Schubert },
226*71e72c9eSCy Schubert .pot_avail = {
227*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
228*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
229*71e72c9eSCy Schubert },
230*71e72c9eSCy Schubert .pot_avail_len = 13,
231*71e72c9eSCy Schubert },
232*71e72c9eSCy Schubert .sub_conf = {
233*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc_period_4,
234*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
235*71e72c9eSCy Schubert .n_ndps = 1,
236*71e72c9eSCy Schubert .ndp_confs = {
237*71e72c9eSCy Schubert {
238*71e72c9eSCy Schubert .accept_request = 1,
239*71e72c9eSCy Schubert .term_once_connected = 1,
240*71e72c9eSCy Schubert .expected_result =
241*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
242*71e72c9eSCy Schubert },
243*71e72c9eSCy Schubert },
244*71e72c9eSCy Schubert }
245*71e72c9eSCy Schubert };
246*71e72c9eSCy Schubert
247*71e72c9eSCy Schubert static struct nan_test_case three_way_ndp_two_way_ndl_chan_6 = {
248*71e72c9eSCy Schubert .name = "Three way NDP and two way NDL channel 6",
249*71e72c9eSCy Schubert .pub_conf = {
250*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
251*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
252*71e72c9eSCy Schubert .n_ndps = 1,
253*71e72c9eSCy Schubert .ndp_confs = {
254*71e72c9eSCy Schubert {
255*71e72c9eSCy Schubert .accept_request = 1,
256*71e72c9eSCy Schubert .term_once_connected = 1,
257*71e72c9eSCy Schubert .expected_result =
258*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
259*71e72c9eSCy Schubert },
260*71e72c9eSCy Schubert },
261*71e72c9eSCy Schubert .pot_avail = {
262*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
263*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
264*71e72c9eSCy Schubert },
265*71e72c9eSCy Schubert .pot_avail_len = 13,
266*71e72c9eSCy Schubert },
267*71e72c9eSCy Schubert .sub_conf = {
268*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
269*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default_24g,
270*71e72c9eSCy Schubert .n_ndps = 1,
271*71e72c9eSCy Schubert .ndp_confs = {
272*71e72c9eSCy Schubert {
273*71e72c9eSCy Schubert .accept_request = 1,
274*71e72c9eSCy Schubert .term_once_connected = 0,
275*71e72c9eSCy Schubert .expected_result =
276*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
277*71e72c9eSCy Schubert },
278*71e72c9eSCy Schubert },
279*71e72c9eSCy Schubert }
280*71e72c9eSCy Schubert };
281*71e72c9eSCy Schubert
282*71e72c9eSCy Schubert static struct nan_test_case three_way_ndp_two_way_ndl_chan_mis = {
283*71e72c9eSCy Schubert .name = "Three way NDP and two way NDL channel mismatch",
284*71e72c9eSCy Schubert .pub_conf = {
285*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
286*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default_52g,
287*71e72c9eSCy Schubert .n_ndps = 1,
288*71e72c9eSCy Schubert .ndp_confs = {
289*71e72c9eSCy Schubert {
290*71e72c9eSCy Schubert .accept_request = 1,
291*71e72c9eSCy Schubert .expected_result =
292*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
293*71e72c9eSCy Schubert },
294*71e72c9eSCy Schubert },
295*71e72c9eSCy Schubert .pot_avail = {
296*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
297*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
298*71e72c9eSCy Schubert },
299*71e72c9eSCy Schubert .pot_avail_len = 13,
300*71e72c9eSCy Schubert },
301*71e72c9eSCy Schubert .sub_conf = {
302*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_2ghz_no_ndc,
303*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default_24g,
304*71e72c9eSCy Schubert .n_ndps = 1,
305*71e72c9eSCy Schubert .ndp_confs = {
306*71e72c9eSCy Schubert {
307*71e72c9eSCy Schubert .accept_request = 0,
308*71e72c9eSCy Schubert .expected_result =
309*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
310*71e72c9eSCy Schubert },
311*71e72c9eSCy Schubert },
312*71e72c9eSCy Schubert }
313*71e72c9eSCy Schubert };
314*71e72c9eSCy Schubert
315*71e72c9eSCy Schubert static struct nan_test_case three_way_ndp_three_way_ndl = {
316*71e72c9eSCy Schubert .name = "Three way NDP and three way NDL",
317*71e72c9eSCy Schubert .pub_conf = {
318*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
319*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
320*71e72c9eSCy Schubert .n_ndps = 1,
321*71e72c9eSCy Schubert .ndp_confs = {
322*71e72c9eSCy Schubert {
323*71e72c9eSCy Schubert .accept_request = 1,
324*71e72c9eSCy Schubert .expected_result =
325*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
326*71e72c9eSCy Schubert },
327*71e72c9eSCy Schubert },
328*71e72c9eSCy Schubert .pot_avail = {
329*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
330*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
331*71e72c9eSCy Schubert },
332*71e72c9eSCy Schubert .pot_avail_len = 13,
333*71e72c9eSCy Schubert },
334*71e72c9eSCy Schubert .sub_conf = {
335*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_2ghz_no_ndc,
336*71e72c9eSCy Schubert .schedule_conf_cb = nan_test_schedule_cb_all_ndc,
337*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default_reverse,
338*71e72c9eSCy Schubert .n_ndps = 1,
339*71e72c9eSCy Schubert .ndp_confs = {
340*71e72c9eSCy Schubert {
341*71e72c9eSCy Schubert .accept_request = 1,
342*71e72c9eSCy Schubert .expected_result =
343*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
344*71e72c9eSCy Schubert .term_once_connected = 1,
345*71e72c9eSCy Schubert },
346*71e72c9eSCy Schubert },
347*71e72c9eSCy Schubert }
348*71e72c9eSCy Schubert };
349*71e72c9eSCy Schubert
350*71e72c9eSCy Schubert static struct nan_test_case three_way_ndp_two_way_ndl_reject = {
351*71e72c9eSCy Schubert .name = "Three way NDP and two way NDL rejected",
352*71e72c9eSCy Schubert .pub_conf = {
353*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
354*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
355*71e72c9eSCy Schubert .n_ndps = 1,
356*71e72c9eSCy Schubert .ndp_confs = {
357*71e72c9eSCy Schubert {
358*71e72c9eSCy Schubert .accept_request = 0,
359*71e72c9eSCy Schubert .expected_result =
360*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
361*71e72c9eSCy Schubert .reason = NAN_REASON_NDP_REJECTED,
362*71e72c9eSCy Schubert },
363*71e72c9eSCy Schubert },
364*71e72c9eSCy Schubert .pot_avail = {
365*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
366*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
367*71e72c9eSCy Schubert },
368*71e72c9eSCy Schubert .pot_avail_len = 13,
369*71e72c9eSCy Schubert },
370*71e72c9eSCy Schubert .sub_conf = {
371*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
372*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
373*71e72c9eSCy Schubert .n_ndps = 1,
374*71e72c9eSCy Schubert .ndp_confs = {
375*71e72c9eSCy Schubert {
376*71e72c9eSCy Schubert .accept_request = 0,
377*71e72c9eSCy Schubert .expected_result =
378*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
379*71e72c9eSCy Schubert },
380*71e72c9eSCy Schubert },
381*71e72c9eSCy Schubert }
382*71e72c9eSCy Schubert };
383*71e72c9eSCy Schubert
384*71e72c9eSCy Schubert
385*71e72c9eSCy Schubert static struct nan_test_case four_way_ndp_two_way_ndl_chan_149_ccm_128 = {
386*71e72c9eSCy Schubert .name = "Four way NDP and two way NDL channel 149 with CCMP 128",
387*71e72c9eSCy Schubert .pub_conf = {
388*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
389*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
390*71e72c9eSCy Schubert .n_ndps = 1,
391*71e72c9eSCy Schubert .ndp_confs = {
392*71e72c9eSCy Schubert {
393*71e72c9eSCy Schubert .accept_request = 1,
394*71e72c9eSCy Schubert .expected_result =
395*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
396*71e72c9eSCy Schubert .csid = NAN_CS_SK_CCM_128,
397*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_CCM_128,
398*71e72c9eSCy Schubert },
399*71e72c9eSCy Schubert },
400*71e72c9eSCy Schubert .pot_avail = {
401*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
402*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
403*71e72c9eSCy Schubert },
404*71e72c9eSCy Schubert .pot_avail_len = 13,
405*71e72c9eSCy Schubert .pmk = {
406*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
407*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
408*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
409*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
410*71e72c9eSCy Schubert },
411*71e72c9eSCy Schubert },
412*71e72c9eSCy Schubert .sub_conf = {
413*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
414*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
415*71e72c9eSCy Schubert .n_ndps = 1,
416*71e72c9eSCy Schubert .ndp_confs = {
417*71e72c9eSCy Schubert {
418*71e72c9eSCy Schubert .accept_request = 1,
419*71e72c9eSCy Schubert .expected_result =
420*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
421*71e72c9eSCy Schubert .csid = NAN_CS_SK_CCM_128,
422*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_CCM_128,
423*71e72c9eSCy Schubert .term_once_connected = 1,
424*71e72c9eSCy Schubert },
425*71e72c9eSCy Schubert },
426*71e72c9eSCy Schubert .pmk = {
427*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
428*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
429*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
430*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
431*71e72c9eSCy Schubert },
432*71e72c9eSCy Schubert }
433*71e72c9eSCy Schubert };
434*71e72c9eSCy Schubert
435*71e72c9eSCy Schubert static struct nan_test_case four_way_ndp_two_way_ndl_chan_149_gcm_256 = {
436*71e72c9eSCy Schubert .name = "Four way NDP and three way NDL with GCMP 256",
437*71e72c9eSCy Schubert .pub_conf = {
438*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
439*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
440*71e72c9eSCy Schubert .n_ndps = 1,
441*71e72c9eSCy Schubert .ndp_confs = {
442*71e72c9eSCy Schubert {
443*71e72c9eSCy Schubert .accept_request = 1,
444*71e72c9eSCy Schubert .expected_result =
445*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
446*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
447*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
448*71e72c9eSCy Schubert },
449*71e72c9eSCy Schubert },
450*71e72c9eSCy Schubert .pot_avail = {
451*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
452*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
453*71e72c9eSCy Schubert },
454*71e72c9eSCy Schubert .pot_avail_len = 13,
455*71e72c9eSCy Schubert .pmk = {
456*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
457*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
458*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
459*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
460*71e72c9eSCy Schubert },
461*71e72c9eSCy Schubert },
462*71e72c9eSCy Schubert .sub_conf = {
463*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_2ghz_no_ndc,
464*71e72c9eSCy Schubert .schedule_conf_cb = nan_test_schedule_cb_all_ndc,
465*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default_reverse,
466*71e72c9eSCy Schubert .n_ndps = 1,
467*71e72c9eSCy Schubert .ndp_confs = {
468*71e72c9eSCy Schubert {
469*71e72c9eSCy Schubert .accept_request = 1,
470*71e72c9eSCy Schubert .expected_result =
471*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
472*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
473*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
474*71e72c9eSCy Schubert .term_once_connected = 1,
475*71e72c9eSCy Schubert },
476*71e72c9eSCy Schubert },
477*71e72c9eSCy Schubert .pmk = {
478*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
479*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
480*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
481*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
482*71e72c9eSCy Schubert },
483*71e72c9eSCy Schubert }
484*71e72c9eSCy Schubert };
485*71e72c9eSCy Schubert
486*71e72c9eSCy Schubert
487*71e72c9eSCy Schubert static struct nan_test_case pmk_mismatch = {
488*71e72c9eSCy Schubert .name = "PMK mismatch test case",
489*71e72c9eSCy Schubert .pub_conf = {
490*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
491*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
492*71e72c9eSCy Schubert .n_ndps = 1,
493*71e72c9eSCy Schubert .ndp_confs = {
494*71e72c9eSCy Schubert {
495*71e72c9eSCy Schubert .accept_request = 1,
496*71e72c9eSCy Schubert .expected_result =
497*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
498*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
499*71e72c9eSCy Schubert },
500*71e72c9eSCy Schubert },
501*71e72c9eSCy Schubert .pot_avail = {
502*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
503*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
504*71e72c9eSCy Schubert },
505*71e72c9eSCy Schubert .pot_avail_len = 13,
506*71e72c9eSCy Schubert .pmk = {
507*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
508*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
509*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
510*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
511*71e72c9eSCy Schubert },
512*71e72c9eSCy Schubert },
513*71e72c9eSCy Schubert .sub_conf = {
514*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
515*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
516*71e72c9eSCy Schubert .n_ndps = 1,
517*71e72c9eSCy Schubert .ndp_confs = {
518*71e72c9eSCy Schubert {
519*71e72c9eSCy Schubert .accept_request = 1,
520*71e72c9eSCy Schubert .expected_result =
521*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
522*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
523*71e72c9eSCy Schubert },
524*71e72c9eSCy Schubert },
525*71e72c9eSCy Schubert .pmk = {
526*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
527*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
528*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
529*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x0,
530*71e72c9eSCy Schubert },
531*71e72c9eSCy Schubert }
532*71e72c9eSCy Schubert };
533*71e72c9eSCy Schubert
534*71e72c9eSCy Schubert
535*71e72c9eSCy Schubert static struct nan_test_case two_ndps_no_security = {
536*71e72c9eSCy Schubert .name = "Two NDPs: no security. Both accepted",
537*71e72c9eSCy Schubert .pub_conf = {
538*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
539*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
540*71e72c9eSCy Schubert .n_ndps = 2,
541*71e72c9eSCy Schubert .ndp_confs = {
542*71e72c9eSCy Schubert {
543*71e72c9eSCy Schubert .accept_request = 1,
544*71e72c9eSCy Schubert .term_once_connected = 0,
545*71e72c9eSCy Schubert .expected_result =
546*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
547*71e72c9eSCy Schubert },
548*71e72c9eSCy Schubert {
549*71e72c9eSCy Schubert .accept_request = 1,
550*71e72c9eSCy Schubert .term_once_connected = 0,
551*71e72c9eSCy Schubert .expected_result =
552*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
553*71e72c9eSCy Schubert },
554*71e72c9eSCy Schubert },
555*71e72c9eSCy Schubert .pot_avail = {
556*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
557*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
558*71e72c9eSCy Schubert },
559*71e72c9eSCy Schubert .pot_avail_len = 13,
560*71e72c9eSCy Schubert },
561*71e72c9eSCy Schubert .sub_conf = {
562*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
563*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
564*71e72c9eSCy Schubert .n_ndps = 2,
565*71e72c9eSCy Schubert .ndp_confs = {
566*71e72c9eSCy Schubert {
567*71e72c9eSCy Schubert .accept_request = 1,
568*71e72c9eSCy Schubert .term_once_connected = 0,
569*71e72c9eSCy Schubert .expected_result =
570*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
571*71e72c9eSCy Schubert },
572*71e72c9eSCy Schubert {
573*71e72c9eSCy Schubert .accept_request = 1,
574*71e72c9eSCy Schubert .term_once_connected = 1,
575*71e72c9eSCy Schubert .expected_result =
576*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
577*71e72c9eSCy Schubert },
578*71e72c9eSCy Schubert },
579*71e72c9eSCy Schubert }
580*71e72c9eSCy Schubert };
581*71e72c9eSCy Schubert
582*71e72c9eSCy Schubert
583*71e72c9eSCy Schubert static struct nan_test_case three_ndps_no_security_middle_one_rejected = {
584*71e72c9eSCy Schubert .name = "Three NDPs: no security. Middle one rejected",
585*71e72c9eSCy Schubert .pub_conf = {
586*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
587*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
588*71e72c9eSCy Schubert .n_ndps = 3,
589*71e72c9eSCy Schubert .ndp_confs = {
590*71e72c9eSCy Schubert {
591*71e72c9eSCy Schubert .accept_request = 1,
592*71e72c9eSCy Schubert .expected_result =
593*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
594*71e72c9eSCy Schubert },
595*71e72c9eSCy Schubert {
596*71e72c9eSCy Schubert .accept_request = 0,
597*71e72c9eSCy Schubert .expected_result =
598*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
599*71e72c9eSCy Schubert },
600*71e72c9eSCy Schubert {
601*71e72c9eSCy Schubert .accept_request = 1,
602*71e72c9eSCy Schubert .expected_result =
603*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
604*71e72c9eSCy Schubert },
605*71e72c9eSCy Schubert },
606*71e72c9eSCy Schubert .pot_avail = {
607*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
608*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
609*71e72c9eSCy Schubert },
610*71e72c9eSCy Schubert .pot_avail_len = 13,
611*71e72c9eSCy Schubert },
612*71e72c9eSCy Schubert .sub_conf = {
613*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
614*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
615*71e72c9eSCy Schubert .n_ndps = 3,
616*71e72c9eSCy Schubert .ndp_confs = {
617*71e72c9eSCy Schubert {
618*71e72c9eSCy Schubert .accept_request = 1,
619*71e72c9eSCy Schubert .expected_result =
620*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
621*71e72c9eSCy Schubert },
622*71e72c9eSCy Schubert {
623*71e72c9eSCy Schubert .accept_request = 1,
624*71e72c9eSCy Schubert .expected_result =
625*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_DISCONNECTED,
626*71e72c9eSCy Schubert },
627*71e72c9eSCy Schubert {
628*71e72c9eSCy Schubert .accept_request = 1,
629*71e72c9eSCy Schubert .term_once_connected = 1,
630*71e72c9eSCy Schubert .expected_result =
631*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
632*71e72c9eSCy Schubert },
633*71e72c9eSCy Schubert },
634*71e72c9eSCy Schubert }
635*71e72c9eSCy Schubert };
636*71e72c9eSCy Schubert
637*71e72c9eSCy Schubert
638*71e72c9eSCy Schubert static struct nan_test_case three_ndps_increasing_security = {
639*71e72c9eSCy Schubert .name = "Three NDPs: increasing security levels",
640*71e72c9eSCy Schubert .pub_conf = {
641*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
642*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
643*71e72c9eSCy Schubert .n_ndps = 3,
644*71e72c9eSCy Schubert .ndp_confs = {
645*71e72c9eSCy Schubert {
646*71e72c9eSCy Schubert .accept_request = 1,
647*71e72c9eSCy Schubert .expected_result =
648*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
649*71e72c9eSCy Schubert },
650*71e72c9eSCy Schubert {
651*71e72c9eSCy Schubert .accept_request = 1,
652*71e72c9eSCy Schubert .expected_result =
653*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
654*71e72c9eSCy Schubert .csid = NAN_CS_SK_CCM_128,
655*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_CCM_128,
656*71e72c9eSCy Schubert },
657*71e72c9eSCy Schubert {
658*71e72c9eSCy Schubert .accept_request = 1,
659*71e72c9eSCy Schubert .expected_result =
660*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
661*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
662*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
663*71e72c9eSCy Schubert },
664*71e72c9eSCy Schubert },
665*71e72c9eSCy Schubert .pot_avail = {
666*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
667*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
668*71e72c9eSCy Schubert },
669*71e72c9eSCy Schubert .pot_avail_len = 13,
670*71e72c9eSCy Schubert .pmk = {
671*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
672*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
673*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
674*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
675*71e72c9eSCy Schubert },
676*71e72c9eSCy Schubert },
677*71e72c9eSCy Schubert .sub_conf = {
678*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
679*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
680*71e72c9eSCy Schubert .n_ndps = 3,
681*71e72c9eSCy Schubert .ndp_confs = {
682*71e72c9eSCy Schubert {
683*71e72c9eSCy Schubert .accept_request = 1,
684*71e72c9eSCy Schubert .expected_result =
685*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
686*71e72c9eSCy Schubert },
687*71e72c9eSCy Schubert {
688*71e72c9eSCy Schubert .accept_request = 1,
689*71e72c9eSCy Schubert .expected_result =
690*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
691*71e72c9eSCy Schubert .csid = NAN_CS_SK_CCM_128,
692*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_CCM_128,
693*71e72c9eSCy Schubert },
694*71e72c9eSCy Schubert {
695*71e72c9eSCy Schubert .accept_request = 1,
696*71e72c9eSCy Schubert .term_once_connected = 1,
697*71e72c9eSCy Schubert .expected_result =
698*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
699*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
700*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
701*71e72c9eSCy Schubert },
702*71e72c9eSCy Schubert },
703*71e72c9eSCy Schubert .pmk = {
704*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
705*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
706*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
707*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
708*71e72c9eSCy Schubert },
709*71e72c9eSCy Schubert }
710*71e72c9eSCy Schubert };
711*71e72c9eSCy Schubert
712*71e72c9eSCy Schubert
713*71e72c9eSCy Schubert static struct nan_test_case three_ndps_deacreasing_security = {
714*71e72c9eSCy Schubert .name = "Three NDPs: decreasing security levels",
715*71e72c9eSCy Schubert .pub_conf = {
716*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_ndc,
717*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
718*71e72c9eSCy Schubert .n_ndps = 3,
719*71e72c9eSCy Schubert .ndp_confs = {
720*71e72c9eSCy Schubert {
721*71e72c9eSCy Schubert .accept_request = 1,
722*71e72c9eSCy Schubert .expected_result =
723*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
724*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
725*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
726*71e72c9eSCy Schubert },
727*71e72c9eSCy Schubert {
728*71e72c9eSCy Schubert .accept_request = 1,
729*71e72c9eSCy Schubert .expected_result =
730*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
731*71e72c9eSCy Schubert .csid = NAN_CS_SK_CCM_128,
732*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
733*71e72c9eSCy Schubert },
734*71e72c9eSCy Schubert {
735*71e72c9eSCy Schubert .accept_request = 1,
736*71e72c9eSCy Schubert .expected_result =
737*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
738*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
739*71e72c9eSCy Schubert },
740*71e72c9eSCy Schubert },
741*71e72c9eSCy Schubert .pot_avail = {
742*71e72c9eSCy Schubert 0x12, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00,
743*71e72c9eSCy Schubert 0xba, 0x02, 0x20, 0x02, 0x04
744*71e72c9eSCy Schubert },
745*71e72c9eSCy Schubert .pot_avail_len = 13,
746*71e72c9eSCy Schubert .pmk = {
747*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
748*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
749*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
750*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
751*71e72c9eSCy Schubert },
752*71e72c9eSCy Schubert },
753*71e72c9eSCy Schubert .sub_conf = {
754*71e72c9eSCy Schubert .schedule_cb = nan_test_schedule_cb_all_no_ndc,
755*71e72c9eSCy Schubert .get_chans_cb = nan_test_get_chans_default,
756*71e72c9eSCy Schubert .n_ndps = 3,
757*71e72c9eSCy Schubert .ndp_confs = {
758*71e72c9eSCy Schubert {
759*71e72c9eSCy Schubert .accept_request = 1,
760*71e72c9eSCy Schubert .expected_result =
761*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
762*71e72c9eSCy Schubert .csid = NAN_CS_SK_GCM_256,
763*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
764*71e72c9eSCy Schubert },
765*71e72c9eSCy Schubert {
766*71e72c9eSCy Schubert .accept_request = 1,
767*71e72c9eSCy Schubert .expected_result =
768*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
769*71e72c9eSCy Schubert .csid = NAN_CS_SK_CCM_128,
770*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
771*71e72c9eSCy Schubert },
772*71e72c9eSCy Schubert {
773*71e72c9eSCy Schubert .accept_request = 1,
774*71e72c9eSCy Schubert .term_once_connected = 1,
775*71e72c9eSCy Schubert .expected_result =
776*71e72c9eSCy Schubert NAN_TEST_NDP_NOTIFY_CONNECTED,
777*71e72c9eSCy Schubert .expected_csid = NAN_CS_SK_GCM_256,
778*71e72c9eSCy Schubert },
779*71e72c9eSCy Schubert },
780*71e72c9eSCy Schubert .pmk = {
781*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
782*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
783*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
784*71e72c9eSCy Schubert 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
785*71e72c9eSCy Schubert },
786*71e72c9eSCy Schubert }
787*71e72c9eSCy Schubert };
788*71e72c9eSCy Schubert
789*71e72c9eSCy Schubert
790*71e72c9eSCy Schubert static const struct nan_test_case *g_nan_test_cases[] = {
791*71e72c9eSCy Schubert &three_way_ndp_two_way_ndl_chan_149,
792*71e72c9eSCy Schubert &three_way_ndp_two_way_ndl_diff_period,
793*71e72c9eSCy Schubert &three_way_ndp_two_way_ndl_chan_6,
794*71e72c9eSCy Schubert &three_way_ndp_two_way_ndl_chan_mis,
795*71e72c9eSCy Schubert &three_way_ndp_two_way_ndl_reject,
796*71e72c9eSCy Schubert &three_way_ndp_three_way_ndl,
797*71e72c9eSCy Schubert &four_way_ndp_two_way_ndl_chan_149_ccm_128,
798*71e72c9eSCy Schubert &four_way_ndp_two_way_ndl_chan_149_gcm_256,
799*71e72c9eSCy Schubert &pmk_mismatch,
800*71e72c9eSCy Schubert &two_ndps_no_security,
801*71e72c9eSCy Schubert &three_ndps_no_security_middle_one_rejected,
802*71e72c9eSCy Schubert &three_ndps_increasing_security,
803*71e72c9eSCy Schubert &three_ndps_deacreasing_security,
804*71e72c9eSCy Schubert NULL
805*71e72c9eSCy Schubert };
806*71e72c9eSCy Schubert
807*71e72c9eSCy Schubert
nan_test_case_get_next(void)808*71e72c9eSCy Schubert const struct nan_test_case * nan_test_case_get_next(void)
809*71e72c9eSCy Schubert {
810*71e72c9eSCy Schubert static u32 nan_test_case_idx = 0;
811*71e72c9eSCy Schubert const struct nan_test_case *curr = g_nan_test_cases[nan_test_case_idx];
812*71e72c9eSCy Schubert
813*71e72c9eSCy Schubert if (curr)
814*71e72c9eSCy Schubert nan_test_case_idx++;
815*71e72c9eSCy Schubert
816*71e72c9eSCy Schubert return curr;
817*71e72c9eSCy Schubert }
818