Skip to content

Commit 58fe1ac

Browse files
committed
Cypress Target update to support WiFi Manufacturing Test
MBED-OS changes for adding IOCTLS in WhdSTAInterface for MFG Test. Fix WHD EMAC interface to release buffer when emac is not powered up or callback is not registered.
1 parent 470ab8d commit 58fe1ac

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/WhdSTAInterface.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,30 @@ int WhdSTAInterface::wifi_set_ioctl_value(uint32_t ioctl, uint32_t value)
571571
return res;
572572
}
573573

574+
int WhdSTAInterface::wifi_get_ioctl_value(uint32_t ioctl, uint32_t *value )
575+
{
576+
int res = WHD_SUCCESS;
577+
_whd_emac.ifp->role = WHD_STA_ROLE;
578+
res = whd_wifi_get_ioctl_value(_whd_emac.ifp, ioctl, value);
579+
return res;
580+
}
581+
582+
int WhdSTAInterface::wifi_get_ioctl_buffer(uint32_t ioctl, uint8_t *buffer, uint16_t len)
583+
{
584+
int res = WHD_SUCCESS;
585+
_whd_emac.ifp->role = WHD_STA_ROLE;
586+
res = whd_wifi_get_ioctl_buffer(_whd_emac.ifp, ioctl, buffer, len);
587+
return res;
588+
}
589+
590+
int WhdSTAInterface::wifi_set_ioctl_buffer(uint32_t ioctl, uint8_t *buffer, uint16_t len)
591+
{
592+
int res = WHD_SUCCESS;
593+
_whd_emac.ifp->role = WHD_STA_ROLE;
594+
res = whd_wifi_set_ioctl_buffer(_whd_emac.ifp, ioctl, buffer, len);
595+
return res;
596+
}
597+
574598
int WhdSTAInterface::wifi_get_ifp(whd_interface_t *ifp)
575599
{
576600
int res = WHD_SUCCESS;

features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/WhdSTAInterface.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,15 @@ class WhdSTAInterface : public WiFiInterface, public EMACInterface {
191191
/* set ioctl value */
192192
int wifi_set_ioctl_value(uint32_t ioctl, uint32_t value) ;
193193

194+
/* get ioctl value */
195+
int wifi_get_ioctl_value(uint32_t ioctl, uint32_t *value);
196+
197+
/* get ioctl buffer */
198+
int wifi_get_ioctl_buffer(uint32_t ioctl, uint8_t *buffer, uint16_t len);
199+
200+
/* set ioctl buffer */
201+
int wifi_set_ioctl_buffer(uint32_t ioctl, uint8_t *buffer, uint16_t len);
202+
194203
/* get WHD ifp value */
195204
int wifi_get_ifp(whd_interface_t *ifp);
196205

features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/whd_emac.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ extern "C"
253253

254254
WHD_EMAC &emac = WHD_EMAC::get_instance(ifp->role);
255255

256-
if (!emac.powered_up && !emac.emac_link_input_cb) {
256+
if (!emac.powered_up || !emac.emac_link_input_cb) {
257257
// ignore any trailing packets
258258
whd_buffer_release(emac.drvp, buffer, WHD_NETWORK_RX);
259259
return;

0 commit comments

Comments
 (0)