Skip to content

Commit 977cf05

Browse files
committed
Update WHD to v1.50
1 parent 799146b commit 977cf05

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+81891
-131258
lines changed

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/generated_mac_address.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
* MAC address is printed during WHD power up
77
*/
88

9-
#define NVRAM_GENERATED_MAC_ADDRESS "macaddr=00:A0:50:bb:5c:af"
9+
#define NVRAM_GENERATED_MAC_ADDRESS "macaddr=00:A0:50:13:e1:5d"

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/inc/whd_types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ typedef struct wl_af_params whd_af_params_t;
118118
/**
119119
* The maximum size in bytes of the data part of an Ethernet frame
120120
*/
121+
#ifndef WHD_PAYLOAD_MTU
121122
#define WHD_PAYLOAD_MTU (1500)
123+
#endif
122124

123125
/**
124126
* The maximum size in bytes of a packet used within whd.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
#define WHD_VERSION "v1.40.0"
2-
#define WHD_BRANCH "v1.40.0"
3-
#define WHD_DATE "2019-10-02 13:25:35 +0800"
1+
#define WHD_VERSION "v1.50.0-rc1"
2+
#define WHD_BRANCH "v1.50.0-rc1"
3+
#define WHD_DATE "2019-10-30 18:42:31 +0530"

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43012/43012C0-mfgtest_bin.c

Lines changed: 30912 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43012/43012C0-mfgtest_clm_blob.c

Lines changed: 427 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43012/43012C0_bin.c

Lines changed: 25956 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43012/43012C0_clm_blob.c

Lines changed: 427 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43012/resources.h renamed to targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43012/resources.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
#include "wiced_resource.h"
2121

2222
extern const resource_hnd_t wifi_firmware_image;
23-
extern const char wifi_firmware_image_data[360823];
23+
extern const unsigned char wifi_firmware_image_data[448820];
2424
extern const resource_hnd_t wifi_firmware_clm_blob;
25-
extern const char wifi_firmware_clm_blob_image_data[7697];
25+
extern const unsigned char wifi_firmware_clm_blob_image_data[7697];
26+
extern const resource_hnd_t wifi_mfg_firmware_image;
27+
extern const unsigned char wifi_mfg_firmware_image_data[529375];
28+
extern const resource_hnd_t wifi_mfg_firmware_clm_blob;
29+
extern const unsigned char wifi_mfg_firmware_clm_blob_image_data[7697];
2630

2731
#endif /* ifndef INCLUDED_RESOURCES_H_ */
28-

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43438/43438A1-mfgtest_bin.c

Lines changed: 23644 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_43438/43438A1-mfgtest_clm_blob.c

Lines changed: 400 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright (c) 2019, Cypress Semiconductor Corporation, All Rights Reserved
3+
* SPDX-License-Identifier: LicenseRef-PBL
4+
*
5+
* This file and the related binary are licensed under the
6+
* Permissive Binary License, Version 1.0 (the "License");
7+
* you may not use these files except in compliance with the License.
8+
*
9+
* You may obtain a copy of the License here:
10+
* LICENSE-permissive-binary-license-1.0.txt and at
11+
* https://www.mbed.com/licenses/PBL-1.0
12+
*
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
/* Automatically generated file - this comment ensures resources.h file creation */
17+
/* Auto-generated header file. Do not edit */
18+
#ifndef INCLUDED_RESOURCES_H_
19+
#define INCLUDED_RESOURCES_H_
20+
#include "wiced_resource.h"
21+
22+
extern const resource_hnd_t wifi_firmware_image;
23+
extern const unsigned char wifi_firmware_image_data[420690];
24+
extern const resource_hnd_t wifi_firmware_clm_blob;
25+
extern const unsigned char wifi_firmware_clm_blob_image_data[7222];
26+
extern const resource_hnd_t wifi_mfg_firmware_image;
27+
extern const unsigned char wifi_mfg_firmware_image_data[391277];
28+
extern const resource_hnd_t wifi_mfg_firmware_clm_blob_image;
29+
extern const unsigned char wifi_mfg_firmware_clm_blob_image_data[7222];
30+
31+
#endif /* ifndef INCLUDED_RESOURCES_H_ */
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23642,3 +23642,5 @@ const unsigned char wifi_mfg_firmware_image_data[391277] =
2364223642
49, 45, 48, 56, 98, 98, 49, 100, 102, 51
2364323643
};
2364423644

23645+
const resource_hnd_t wifi_mfg_firmware_image =
23646+
{ RESOURCE_IN_MEMORY, 391277, {.mem = { (const char *)wifi_mfg_firmware_image_data }}};
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,4 +397,5 @@ const unsigned char wifi_mfg_firmware_clm_blob_image_data[7222] =
397397
1, 255, 1, 52, 1, 14, 1, 15, 3, 28, 39, 49, 2, 19, 49, 166, 169, 0,
398398
0
399399
};
400-
400+
const resource_hnd_t wifi_mfg_firmware_clm_blob =
401+
{ RESOURCE_IN_MEMORY, 7222, {.mem = { (const char *)wifi_mfg_firmware_clm_blob_image_data }}};

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_4343W/resources.h renamed to targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/resources.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
#include "wiced_resource.h"
2121

2222
extern const resource_hnd_t wifi_firmware_image;
23+
extern const unsigned char wifi_firmware_image_data[420690];
2324
extern const resource_hnd_t wifi_firmware_clm_blob;
24-
extern const unsigned char wifi_firmware_image_data[416801];
2525
extern const unsigned char wifi_firmware_clm_blob_image_data[7222];
26+
extern const resource_hnd_t wifi_mfg_firmware_image;
27+
extern const unsigned char wifi_mfg_firmware_image_data[391277];
28+
extern const resource_hnd_t wifi_mfg_firmware_clm_blob;
29+
extern const unsigned char wifi_mfg_firmware_clm_blob_image_data[7222];
2630

2731
#endif /* ifndef INCLUDED_RESOURCES_H_ */
28-

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43012/43012C0-mfgtest_bin.c

Lines changed: 0 additions & 30669 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43012/43012C0-mfgtest_clm_blob.c

Lines changed: 0 additions & 408 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43012/43012C0_bin.c

Lines changed: 0 additions & 25762 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43012/43012C0_clm_blob.c

Lines changed: 0 additions & 430 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43364/43364A1_bin.c

Lines changed: 0 additions & 25469 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43364/43364A1_clm_blob.c

Lines changed: 0 additions & 402 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43364/4343WA1-mfgtest_bin.c

Lines changed: 0 additions & 23644 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43364/4343WA1-mfgtest_clm_blob.c

Lines changed: 0 additions & 400 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43438/4343WA1-mfgtest_bin.c

Lines changed: 0 additions & 23644 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/firmware/TARGET_43438/4343WA1-mfgtest_clm_blob.c

Lines changed: 0 additions & 400 deletions
This file was deleted.

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/resources/resource_imp/whd_resources.c

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,14 @@ resource_result_t resource_read(const resource_hnd_t *resource, uint32_t offset,
6868
* Variable Definitions
6969
******************************************************/
7070

71+
#ifdef WLAN_MFG_FIRMWARE
72+
extern const resource_hnd_t wifi_mfg_firmware_image;
73+
extern const resource_hnd_t wifi_mfg_firmware_clm_blob;
74+
#else
7175
extern const resource_hnd_t wifi_firmware_image;
7276
extern const resource_hnd_t wifi_firmware_clm_blob;
77+
#endif
78+
7379
unsigned char r_buffer[BLOCK_BUFFER_SIZE];
7480

7581
#if defined(WHD_DYNAMIC_NVRAM)
@@ -172,10 +178,14 @@ uint32_t host_platform_resource_size(whd_driver_t whd_drv, whd_resource_type_t r
172178
return ( whd_result_t )RESOURCE_UNSUPPORTED;
173179
}
174180
wiced_waf_app_get_size(&wifi_app, size_out);
181+
#else
182+
#ifdef WLAN_MFG_FIRMWARE
183+
*size_out = (uint32_t)resource_get_size(&wifi_mfg_firmware_image);
175184
#else
176185
*size_out = (uint32_t)resource_get_size(&wifi_firmware_image);
177-
#endif
178-
#endif
186+
#endif /* WLAN_MFG_FIRMWARE */
187+
#endif /* WIFI_FIRMWARE_IN_MULTI_APP */
188+
#endif /* NO_WIFI_FIRMWARE */
179189

180190
}
181191
else if (resource == WHD_RESOURCE_WLAN_NVRAM)
@@ -184,7 +194,11 @@ uint32_t host_platform_resource_size(whd_driver_t whd_drv, whd_resource_type_t r
184194
}
185195
else
186196
{
197+
#ifdef WLAN_MFG_FIRMWARE
198+
*size_out = (uint32_t)resource_get_size(&wifi_mfg_firmware_clm_blob);
199+
#else
187200
*size_out = (uint32_t)resource_get_size(&wifi_firmware_clm_blob);
201+
#endif /* WLAN_MFG_FIRMWARE */
188202
}
189203
return WHD_SUCCESS;
190204
}
@@ -211,8 +225,13 @@ uint32_t host_get_resource_block(whd_driver_t whd_drv, whd_resource_type_t type,
211225

212226
if (type == WHD_RESOURCE_WLAN_FIRMWARE)
213227
{
228+
#ifdef WLAN_MFG_FIRMWARE
229+
result = resource_read( (const resource_hnd_t *)&wifi_mfg_firmware_image, read_pos, block_size, size_out,
230+
r_buffer );
231+
#else
214232
result = resource_read( (const resource_hnd_t *)&wifi_firmware_image, read_pos, block_size, size_out,
215233
r_buffer );
234+
#endif /* WLAN_MFG_FIRMWARE */
216235
if (result != WHD_SUCCESS)
217236
{
218237
return result;
@@ -242,9 +261,15 @@ uint32_t host_get_resource_block(whd_driver_t whd_drv, whd_resource_type_t type,
242261
}
243262
else
244263
{
264+
#ifdef WLAN_MFG_FIRMWARE
265+
result = resource_read( (const resource_hnd_t *)&wifi_mfg_firmware_clm_blob, read_pos, block_size,
266+
size_out,
267+
r_buffer );
268+
#else
245269
result = resource_read( (const resource_hnd_t *)&wifi_firmware_clm_blob, read_pos, block_size,
246270
size_out,
247271
r_buffer );
272+
#endif /* WLAN_MFG_FIRMWARE */
248273
if (result != WHD_SUCCESS)
249274
{
250275
return result;

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/src/include/whd_debug.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,27 @@ extern "C"
5454
#define whd_minor_assert(error_string, \
5555
assertion) do { if (!(assertion) ) WPRINT_MACRO( (error_string) ); } while (0)
5656
#else
57-
#define whd_assert(error_string, assertion) do { if (!(assertion) ) WPRINT_MACRO( (error_string) ); } while (0)
57+
#define whd_assert(error_string, \
58+
assertion) do { if (!(assertion) ){ WPRINT_MACRO( (error_string) ); } } while (0)
5859
#define whd_minor_assert(error_string, assertion) do { (void)(assertion); } while (0)
5960
#endif
6061

6162
/******************************************************
6263
* Print declarations
6364
******************************************************/
65+
/* IF MFG TEST is enabled then disable all LOGGING VIA UART as
66+
+ * this interrupts communication between WL TOOL and MFG Test APP
67+
+ * via STDIO UART causing Wrong Message Exchange and failure.
68+
+ */
69+
#ifdef WLAN_MFG_FIRMWARE
70+
#define WPRINT_MACRO(args)
71+
#else
6472
#if defined(WHD_LOGGING_BUFFER_ENABLE)
6573
#define WPRINT_MACRO(args) do { whd_buffer_printf args; } while (0 == 1)
6674
#else
6775
#define WPRINT_MACRO(args) do { printf args;} while (0 == 1)
6876
#endif
77+
#endif
6978

7079

7180
/* WICED printing macros for Wiced Wi-Fi Driver*/

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/src/whd_ap.c

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ static void *whd_handle_apsta_event(whd_interface_t ifp, const whd_event_header_
180180
{
181181
whd_result_t result;
182182
result = cy_rtos_set_semaphore(&ap->whd_wifi_sleep_flag, WHD_FALSE);
183-
whd_assert("failed to post AP link semaphore", result == WHD_SUCCESS);
183+
WPRINT_WHD_DEBUG( ("%s failed to post AP link semaphore at %d\n", __func__, __LINE__) );
184184
REFERENCE_DEBUG_ONLY_VARIABLE(result);
185185
}
186186
}
@@ -191,31 +191,50 @@ static void *whd_handle_apsta_event(whd_interface_t ifp, const whd_event_header_
191191
uint32_t whd_wifi_init_ap(whd_interface_t ifp, whd_ssid_t *ssid, whd_security_t auth_type,
192192
const uint8_t *security_key, uint8_t key_length, uint8_t channel)
193193
{
194+
whd_driver_t whd_driver;
194195
whd_bool_t wait_for_interface = WHD_FALSE;
195196
whd_result_t result;
196197
whd_buffer_t response;
197198
whd_buffer_t buffer;
198-
uint32_t *data;
199+
whd_interface_t prim_ifp;
199200
whd_ap_int_info_t *ap;
201+
uint32_t *data;
200202
uint32_t bss_index;
201203
uint16_t wlan_chip_id;
202204
uint16_t event_entry = (uint16_t)0xFF;
203-
whd_interface_t prim_ifp;
204-
whd_driver_t whd_driver;
205+
205206

206207
CHECK_IFP_NULL(ifp);
207208

208209
whd_driver = ifp->whd_driver;
209210

210211
CHECK_DRIVER_NULL(whd_driver);
211212

213+
ap = &whd_driver->ap_info;
214+
212215
prim_ifp = whd_get_primary_interface(whd_driver);
213216
if (prim_ifp == NULL)
214217
{
215218
WPRINT_WHD_ERROR( ("%s failed at %d \n", __func__, __LINE__) );
216219
return WHD_UNKNOWN_INTERFACE;
217220
}
218-
ap = &whd_driver->ap_info;
221+
222+
/* Turn off APSTA when creating AP mode on primary interface */
223+
if (ifp == prim_ifp)
224+
{
225+
CHECK_RETURN(whd_wifi_set_ioctl_buffer(prim_ifp, WLC_DOWN, NULL, 0) );
226+
data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_APSTA);
227+
CHECK_IOCTL_BUFFER(data);
228+
*data = 0;
229+
result = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0);
230+
if ( (result != WHD_SUCCESS) && (result != WHD_WLAN_UNSUPPORTED) )
231+
{
232+
WPRINT_WHD_ERROR( ("Could not turn off apsta\n") );
233+
return result;
234+
}
235+
CHECK_RETURN(whd_wifi_set_ioctl_buffer(prim_ifp, WLC_UP, NULL, 0) );
236+
}
237+
219238
bss_index = ifp->bsscfgidx;
220239
/* Get the Chip Number */
221240
wlan_chip_id = whd_chip_get_chip_id(whd_driver);

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/src/whd_management.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
#define MINIMUM_WHD_STACK_SIZE (1024 + 1200 + 2500)
4444

45+
#define DEFAULT_PM2_SLEEP_RET_TIME 200
4546
/******************************************************
4647
* Static Variables
4748
******************************************************/
@@ -329,7 +330,6 @@ uint32_t whd_wifi_on(whd_driver_t whd_driver, whd_interface_t *ifpp)
329330
return retval;
330331
}
331332

332-
#if 0
333333
/* Turn APSTA on */
334334
data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)sizeof(*data), IOVAR_STR_APSTA);
335335
if (data == NULL)
@@ -340,12 +340,15 @@ uint32_t whd_wifi_on(whd_driver_t whd_driver, whd_interface_t *ifpp)
340340
*data = htod32( (uint32_t)1 );
341341
/* This will fail on manufacturing test build since it does not have APSTA available */
342342
retval = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0);
343-
if ( (retval != WHD_SUCCESS) && (retval != WHD_WLAN_UNSUPPORTED) )
343+
if (retval == WHD_WLAN_UNSUPPORTED)
344344
{
345-
/* Could not turn on APSTA */
346-
WPRINT_WHD_DEBUG( ("Could not turn on APSTA\n") );
345+
WPRINT_WHD_DEBUG( ("Firmware does not support APSTA\n") );
346+
}
347+
else if (retval != WHD_SUCCESS)
348+
{
349+
WPRINT_WHD_ERROR( ("Could not turn on APSTA\n") );
350+
return retval;
347351
}
348-
#endif
349352

350353
/* Send set country command */
351354
/* This is the first time that the WLAN chip is required to respond
@@ -414,7 +417,7 @@ uint32_t whd_wifi_on(whd_driver_t whd_driver, whd_interface_t *ifpp)
414417
/* Send UP command */
415418
CHECK_RETURN(whd_wifi_set_up(ifp) );
416419

417-
whd_wifi_enable_powersave_with_throughput(ifp, 0);
420+
whd_wifi_enable_powersave_with_throughput(ifp, DEFAULT_PM2_SLEEP_RET_TIME);
418421
/* Set the GMode */
419422
data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4);
420423
if (data == NULL)

targets/TARGET_Cypress/TARGET_PSOC6/COMPONENT_WHD/src/whd_wifi_api.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2680,11 +2680,7 @@ uint32_t whd_wifi_enable_powersave_with_throughput(whd_interface_t ifp, uint16_t
26802680

26812681
CHECK_DRIVER_NULL(whd_driver);
26822682

2683-
if (return_to_sleep_delay_ms == 0)
2684-
{
2685-
return WHD_BADARG;
2686-
}
2687-
else if (return_to_sleep_delay_ms < PM2_SLEEP_RET_TIME_MIN)
2683+
if (return_to_sleep_delay_ms < PM2_SLEEP_RET_TIME_MIN)
26882684
{
26892685
WPRINT_WHD_ERROR( ("Delay too short, %s failed at line %d \n", __func__, __LINE__) );
26902686
return WHD_DELAY_TOO_SHORT;
@@ -3102,7 +3098,7 @@ uint32_t whd_wifi_get_ioctl_value(whd_interface_t ifp, uint32_t ioctl, uint32_t
31023098
CHECK_IOCTL_BUFFER(whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)sizeof(*value) ) );
31033099
CHECK_RETURN_UNSUPPORTED_OK(whd_cdc_send_ioctl(ifp, CDC_GET, ioctl, buffer, &response) );
31043100

3105-
*value = dtoh32(*whd_buffer_get_current_piece_data_pointer(whd_driver, response) );
3101+
*value = dtoh32(*(uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response) );
31063102

31073103
CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) );
31083104

@@ -3138,6 +3134,7 @@ uint32_t whd_wifi_get_ioctl_buffer(whd_interface_t ifp, uint32_t ioctl, uint8_t
31383134
whd_driver = ifp->whd_driver;
31393135
data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, out_length);
31403136
CHECK_IOCTL_BUFFER(data);
3137+
memcpy(data, out_buffer, out_length);
31413138

31423139
result = whd_cdc_send_ioctl(ifp, CDC_GET, ioctl, buffer, &response);
31433140

0 commit comments

Comments
 (0)