@@ -75,6 +75,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
75
75
.vht160_mcs_rx_highest = 0 ,
76
76
.vht160_mcs_tx_highest = 0 ,
77
77
.n_cipher_suites = 8 ,
78
+ .num_peers = TARGET_TLV_NUM_PEERS ,
79
+ .ast_skid_limit = 0x10 ,
80
+ .num_wds_entries = 0x20 ,
78
81
},
79
82
{
80
83
.id = QCA9887_HW_1_0_VERSION ,
@@ -99,6 +102,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
99
102
.vht160_mcs_rx_highest = 0 ,
100
103
.vht160_mcs_tx_highest = 0 ,
101
104
.n_cipher_suites = 8 ,
105
+ .num_peers = TARGET_TLV_NUM_PEERS ,
106
+ .ast_skid_limit = 0x10 ,
107
+ .num_wds_entries = 0x20 ,
102
108
},
103
109
{
104
110
.id = QCA6174_HW_2_1_VERSION ,
@@ -122,6 +128,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
122
128
.vht160_mcs_rx_highest = 0 ,
123
129
.vht160_mcs_tx_highest = 0 ,
124
130
.n_cipher_suites = 8 ,
131
+ .num_peers = TARGET_TLV_NUM_PEERS ,
132
+ .ast_skid_limit = 0x10 ,
133
+ .num_wds_entries = 0x20 ,
125
134
},
126
135
{
127
136
.id = QCA6174_HW_2_1_VERSION ,
@@ -145,6 +154,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
145
154
.vht160_mcs_rx_highest = 0 ,
146
155
.vht160_mcs_tx_highest = 0 ,
147
156
.n_cipher_suites = 8 ,
157
+ .num_peers = TARGET_TLV_NUM_PEERS ,
158
+ .ast_skid_limit = 0x10 ,
159
+ .num_wds_entries = 0x20 ,
148
160
},
149
161
{
150
162
.id = QCA6174_HW_3_0_VERSION ,
@@ -168,6 +180,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
168
180
.vht160_mcs_rx_highest = 0 ,
169
181
.vht160_mcs_tx_highest = 0 ,
170
182
.n_cipher_suites = 8 ,
183
+ .num_peers = TARGET_TLV_NUM_PEERS ,
184
+ .ast_skid_limit = 0x10 ,
185
+ .num_wds_entries = 0x20 ,
171
186
},
172
187
{
173
188
.id = QCA6174_HW_3_2_VERSION ,
@@ -194,6 +209,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
194
209
.vht160_mcs_rx_highest = 0 ,
195
210
.vht160_mcs_tx_highest = 0 ,
196
211
.n_cipher_suites = 8 ,
212
+ .num_peers = TARGET_TLV_NUM_PEERS ,
213
+ .ast_skid_limit = 0x10 ,
214
+ .num_wds_entries = 0x20 ,
197
215
},
198
216
{
199
217
.id = QCA99X0_HW_2_0_DEV_VERSION ,
@@ -223,6 +241,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
223
241
.vht160_mcs_rx_highest = 0 ,
224
242
.vht160_mcs_tx_highest = 0 ,
225
243
.n_cipher_suites = 11 ,
244
+ .num_peers = TARGET_TLV_NUM_PEERS ,
245
+ .ast_skid_limit = 0x10 ,
246
+ .num_wds_entries = 0x20 ,
226
247
},
227
248
{
228
249
.id = QCA9984_HW_1_0_DEV_VERSION ,
@@ -257,6 +278,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
257
278
.vht160_mcs_rx_highest = 1560 ,
258
279
.vht160_mcs_tx_highest = 1560 ,
259
280
.n_cipher_suites = 11 ,
281
+ .num_peers = TARGET_TLV_NUM_PEERS ,
282
+ .ast_skid_limit = 0x10 ,
283
+ .num_wds_entries = 0x20 ,
260
284
},
261
285
{
262
286
.id = QCA9888_HW_2_0_DEV_VERSION ,
@@ -290,6 +314,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
290
314
.vht160_mcs_rx_highest = 780 ,
291
315
.vht160_mcs_tx_highest = 780 ,
292
316
.n_cipher_suites = 11 ,
317
+ .num_peers = TARGET_TLV_NUM_PEERS ,
318
+ .ast_skid_limit = 0x10 ,
319
+ .num_wds_entries = 0x20 ,
293
320
},
294
321
{
295
322
.id = QCA9377_HW_1_0_DEV_VERSION ,
@@ -313,6 +340,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
313
340
.vht160_mcs_rx_highest = 0 ,
314
341
.vht160_mcs_tx_highest = 0 ,
315
342
.n_cipher_suites = 8 ,
343
+ .num_peers = TARGET_TLV_NUM_PEERS ,
344
+ .ast_skid_limit = 0x10 ,
345
+ .num_wds_entries = 0x20 ,
316
346
},
317
347
{
318
348
.id = QCA9377_HW_1_1_DEV_VERSION ,
@@ -338,6 +368,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
338
368
.vht160_mcs_rx_highest = 0 ,
339
369
.vht160_mcs_tx_highest = 0 ,
340
370
.n_cipher_suites = 8 ,
371
+ .num_peers = TARGET_TLV_NUM_PEERS ,
372
+ .ast_skid_limit = 0x10 ,
373
+ .num_wds_entries = 0x20 ,
341
374
},
342
375
{
343
376
.id = QCA4019_HW_1_0_DEV_VERSION ,
@@ -368,6 +401,27 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
368
401
.vht160_mcs_rx_highest = 0 ,
369
402
.vht160_mcs_tx_highest = 0 ,
370
403
.n_cipher_suites = 11 ,
404
+ .num_peers = TARGET_TLV_NUM_PEERS ,
405
+ .ast_skid_limit = 0x10 ,
406
+ .num_wds_entries = 0x20 ,
407
+ },
408
+ {
409
+ .id = WCN3990_HW_1_0_DEV_VERSION ,
410
+ .dev_id = 0 ,
411
+ .name = "wcn3990 hw1.0" ,
412
+ .continuous_frag_desc = true,
413
+ .tx_chain_mask = 0x7 ,
414
+ .rx_chain_mask = 0x7 ,
415
+ .max_spatial_stream = 4 ,
416
+ .fw = {
417
+ .dir = WCN3990_HW_1_0_FW_DIR ,
418
+ },
419
+ .sw_decrypt_mcast_mgmt = true,
420
+ .hw_ops = & wcn3990_ops ,
421
+ .decap_align_bytes = 1 ,
422
+ .num_peers = TARGET_HL_10_TLV_NUM_PEERS ,
423
+ .ast_skid_limit = TARGET_HL_10_TLV_AST_SKID_LIMIT ,
424
+ .num_wds_entries = TARGET_HL_10_TLV_NUM_WDS_ENTRIES ,
371
425
},
372
426
};
373
427
@@ -390,6 +444,7 @@ static const char *const ath10k_core_fw_feature_str[] = {
390
444
[ATH10K_FW_FEATURE_SKIP_NULL_FUNC_WAR ] = "skip-null-func-war" ,
391
445
[ATH10K_FW_FEATURE_ALLOWS_MESH_BCAST ] = "allows-mesh-bcast" ,
392
446
[ATH10K_FW_FEATURE_NO_PS ] = "no-ps" ,
447
+ [ATH10K_FW_FEATURE_MGMT_TX_BY_REF ] = "mgmt-tx-by-reference" ,
393
448
};
394
449
395
450
static unsigned int ath10k_core_get_fw_feature_str (char * buf ,
@@ -860,6 +915,28 @@ static int ath10k_core_check_smbios(struct ath10k *ar)
860
915
return 0 ;
861
916
}
862
917
918
+ static int ath10k_core_check_dt (struct ath10k * ar )
919
+ {
920
+ struct device_node * node ;
921
+ const char * variant = NULL ;
922
+
923
+ node = ar -> dev -> of_node ;
924
+ if (!node )
925
+ return - ENOENT ;
926
+
927
+ of_property_read_string (node , "qcom,ath10k-calibration-variant" ,
928
+ & variant );
929
+ if (!variant )
930
+ return - ENODATA ;
931
+
932
+ if (strscpy (ar -> id .bdf_ext , variant , sizeof (ar -> id .bdf_ext )) < 0 )
933
+ ath10k_dbg (ar , ATH10K_DBG_BOOT ,
934
+ "bdf variant string is longer than the buffer can accommodate (variant: %s)\n" ,
935
+ variant );
936
+
937
+ return 0 ;
938
+ }
939
+
863
940
static int ath10k_download_and_run_otp (struct ath10k * ar )
864
941
{
865
942
u32 result , address = ar -> hw_params .patch_load_addr ;
@@ -1231,19 +1308,19 @@ static int ath10k_core_create_board_name(struct ath10k *ar, char *name,
1231
1308
/* strlen(',variant=') + strlen(ar->id.bdf_ext) */
1232
1309
char variant [9 + ATH10K_SMBIOS_BDF_EXT_STR_LENGTH ] = { 0 };
1233
1310
1311
+ if (ar -> id .bdf_ext [0 ] != '\0' )
1312
+ scnprintf (variant , sizeof (variant ), ",variant=%s" ,
1313
+ ar -> id .bdf_ext );
1314
+
1234
1315
if (ar -> id .bmi_ids_valid ) {
1235
1316
scnprintf (name , name_len ,
1236
- "bus=%s,bmi-chip-id=%d,bmi-board-id=%d" ,
1317
+ "bus=%s,bmi-chip-id=%d,bmi-board-id=%d%s " ,
1237
1318
ath10k_bus_str (ar -> hif .bus ),
1238
1319
ar -> id .bmi_chip_id ,
1239
- ar -> id .bmi_board_id );
1320
+ ar -> id .bmi_board_id , variant );
1240
1321
goto out ;
1241
1322
}
1242
1323
1243
- if (ar -> id .bdf_ext [0 ] != '\0' )
1244
- scnprintf (variant , sizeof (variant ), ",variant=%s" ,
1245
- ar -> id .bdf_ext );
1246
-
1247
1324
scnprintf (name , name_len ,
1248
1325
"bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x%s" ,
1249
1326
ath10k_bus_str (ar -> hif .bus ),
@@ -2343,7 +2420,11 @@ static int ath10k_core_probe_fw(struct ath10k *ar)
2343
2420
2344
2421
ret = ath10k_core_check_smbios (ar );
2345
2422
if (ret )
2346
- ath10k_dbg (ar , ATH10K_DBG_BOOT , "bdf variant name not set.\n" );
2423
+ ath10k_dbg (ar , ATH10K_DBG_BOOT , "SMBIOS bdf variant name not set.\n" );
2424
+
2425
+ ret = ath10k_core_check_dt (ar );
2426
+ if (ret )
2427
+ ath10k_dbg (ar , ATH10K_DBG_BOOT , "DT bdf variant name not set.\n" );
2347
2428
2348
2429
ret = ath10k_core_fetch_board_file (ar );
2349
2430
if (ret ) {
0 commit comments