simwifi: Refactor the interfaces of simwifi and simnet

Refactor simwifi to separate host and sim logic.

Signed-off-by: liqinhui <liqinhui@xiaomi.com>
This commit is contained in:
liqinhui
2025-04-15 15:07:14 +08:00
committed by Xiang Xiao
parent 58110f3d1a
commit dce89e1820
5 changed files with 189 additions and 70 deletions
+1
View File
@@ -211,6 +211,7 @@ endif
ifneq ($(CONFIG_SIM_WIFIDEV_NUMBER),0)
CFLAGS += -DTOPDIR=\"$(TOPDIR)\"
CSRCS += sim_wifihost.c
endif
ifeq ($(CONFIG_SIM_NETDEV_TAP),y)
+5
View File
@@ -213,6 +213,11 @@ if(CONFIG_SIM_X11FB)
endif()
endif()
if(NOT ${CONFIG_SIM_WIFIDEV_NUMBER} EQUAL 0)
add_compile_options(-DTOPDIR=$(TOPDIR))
list(APPEND SRCS sim_wifihost.c)
endif()
if(CONFIG_SIM_NETDEV_TAP)
list(APPEND SRCS sim_netdriver.c)
+24 -9
View File
@@ -72,6 +72,7 @@
#include <nuttx/net/pkt.h>
#include "sim_internal.h"
#include "sim_wifihost.h"
#define SIM_NETDEV_BUFSIZE (CONFIG_SIM_NETDEV_MTU + ETH_HDRLEN + \
CONFIG_NET_GUARDSIZE)
@@ -90,20 +91,22 @@
#define DEVIDX(p) ((struct sim_netdev_s *)(p) - g_sim_dev)
#define DEVBUF(p) (((struct sim_netdev_s *)(p))->buf)
#if CONFIG_SIM_WIFIDEV_NUMBER != 0
# include "sim_wifidriver.c"
#else
#define IDXDEV(i) ((struct netdev_lowerhalf_s *)(&g_sim_dev[i].dev))
/****************************************************************************
* Private Types
****************************************************************************/
struct sim_netdev_s
{
#if CONFIG_SIM_WIFIDEV_NUMBER != 0
struct sim_wifihost_lowerhalf_s dev;
#else
struct netdev_lowerhalf_s dev;
#endif
uint8_t buf[SIM_NETDEV_BUFSIZE]; /* Used when packet buffer is fragmented */
struct wdog_s wdog;
};
#endif
/****************************************************************************
* Private Function Prototypes
@@ -211,7 +214,7 @@ static int netdriver_ifup(struct netdev_lowerhalf_s *dev)
#if CONFIG_SIM_WIFIDEV_NUMBER != 0
if (DEVIDX(dev) < CONFIG_SIM_WIFIDEV_NUMBER)
{
if (wifidriver_connected(dev))
if (sim_wifihost_connected((struct sim_wifihost_lowerhalf_s *)dev))
{
netdev_lower_carrier_on(dev);
}
@@ -283,7 +286,7 @@ int sim_netdriver_init(void)
for (devidx = 0; devidx < CONFIG_SIM_NETDEV_NUMBER; devidx++)
{
dev = &g_sim_dev[devidx].dev;
dev = IDXDEV(devidx);
/* Internal initialization */
@@ -300,7 +303,8 @@ int sim_netdriver_init(void)
#if CONFIG_SIM_WIFIDEV_NUMBER != 0
if (devidx < CONFIG_SIM_WIFIDEV_NUMBER)
{
wifidriver_init(dev, devidx);
sim_wifihost_init((struct sim_wifihost_lowerhalf_s *)dev,
devidx);
}
#endif
@@ -319,13 +323,24 @@ int sim_netdriver_init(void)
void sim_netdriver_setmacaddr(int devidx, unsigned char *macaddr)
{
memcpy(g_sim_dev[devidx].dev.netdev.d_mac.ether.ether_addr_octet, macaddr,
memcpy(IDXDEV(devidx)->netdev.d_mac.ether.ether_addr_octet, macaddr,
IFHWADDRLEN);
}
void sim_netdriver_setmtu(int devidx, int mtu)
{
g_sim_dev[devidx].dev.netdev.d_pktsize = MIN(SIM_NETDEV_BUFSIZE,
IDXDEV(devidx)->netdev.d_pktsize = MIN(SIM_NETDEV_BUFSIZE,
mtu + ETH_HDRLEN);
}
void sim_netdriver_loop(void)
{
int devidx;
for (devidx = 0; devidx < CONFIG_SIM_NETDEV_NUMBER; devidx++)
{
if (sim_netdev_avail(devidx))
{
netdev_lower_rxready(IDXDEV(devidx));
}
}
}
@@ -1,7 +1,6 @@
/****************************************************************************
* arch/sim/src/sim/sim_wifidriver.c
*
* SPDX-License-Identifier: Apache-2.0
* arch/sim/src/sim/sim_wifihost.c
* Manage the host wireless
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -35,6 +34,7 @@
#include <sys/time.h>
#include "sim_internal.h"
#include "sim_wifihost.h"
/****************************************************************************
* Pre-processor Definitions
@@ -105,6 +105,9 @@
ret__; \
})
#define NETDEV2WIFI(dev) \
((struct sim_wifi_s *)((struct sim_wifihost_lowerhalf_s *)dev)->wifi)
/****************************************************************************
* Private Types
****************************************************************************/
@@ -155,10 +158,9 @@ struct sim_bss_info_s
int16_t snr; /* average SNR of during frame reception */
};
struct sim_netdev_s
struct sim_wifi_s
{
struct netdev_lowerhalf_s dev;
uint8_t buf[SIM_NETDEV_BUFSIZE]; /* Used when packet buffer is fragmented */
struct netdev_lowerhalf_s *dev;
char ssid[SSID_MAX_LEN];
char bssid[ETH_ALEN];
uint16_t channel;
@@ -257,7 +259,7 @@ static const struct wireless_ops_s g_iw_ops =
* Private Functions
****************************************************************************/
static int get_cmd_result_num(struct sim_netdev_s *wifidev, char *cmd)
static int get_cmd_result_num(struct sim_wifi_s *wifidev, char *cmd)
{
int num = 0;
char rbuf[BUF_LEN];
@@ -277,21 +279,21 @@ static int get_cmd_result_num(struct sim_netdev_s *wifidev, char *cmd)
/* For sta, add an available network. */
static int wpa_add_network(struct sim_netdev_s *wifidev)
static int wpa_add_network(struct sim_wifi_s *wifidev)
{
return get_cmd_result_num(wifidev, "add_network");
}
/* For sta, get the number of available networks. */
static int wpa_get_network_num(struct sim_netdev_s *wifidev)
static int wpa_get_network_num(struct sim_wifi_s *wifidev)
{
return get_cmd_result_num(wifidev, "list_network | grep \"\\[\" | wc -l");
}
/* For sta, get the available network_id. */
static int wpa_get_last_network_id(struct sim_netdev_s *wifidev,
static int wpa_get_last_network_id(struct sim_wifi_s *wifidev,
int network_num)
{
int num;
@@ -823,7 +825,7 @@ static int get_bss_info(struct sim_bss_info_s *bss_info, char *buf, int len)
return OK;
}
static int get_scan_results(struct sim_netdev_s *wifidev,
static int get_scan_results(struct sim_wifi_s *wifidev,
struct sim_scan_result_s *scan_reqs)
{
int ret;
@@ -898,7 +900,7 @@ get_scan:
return ret;
}
static bool get_wpa_state(struct sim_netdev_s *wifidev)
static bool get_wpa_state(struct sim_wifi_s *wifidev)
{
int ret;
char rbuf[BUF_LEN];
@@ -914,7 +916,7 @@ static bool get_wpa_state(struct sim_netdev_s *wifidev)
return false;
}
static bool get_wpa_bssid(struct sim_netdev_s *wifidev,
static bool get_wpa_bssid(struct sim_wifi_s *wifidev,
unsigned char *bssid)
{
int ret;
@@ -931,7 +933,7 @@ static bool get_wpa_bssid(struct sim_netdev_s *wifidev,
return false;
}
static bool get_wpa_rssi(struct sim_netdev_s *wifidev, int32_t *rssi)
static bool get_wpa_rssi(struct sim_wifi_s *wifidev, int32_t *rssi)
{
int ret;
char rbuf[BUF_LEN];
@@ -948,14 +950,14 @@ static bool get_wpa_rssi(struct sim_netdev_s *wifidev, int32_t *rssi)
return false;
}
static void get_wpa_ssid(struct sim_netdev_s *wifidev,
static void get_wpa_ssid(struct sim_wifi_s *wifidev,
struct iw_point *essid)
{
essid->length = strlen(wifidev->ssid);
strlcpy(essid->pointer, wifidev->ssid, essid->length + 1);
}
static int get_wpa_freq(struct sim_netdev_s *wifidev)
static int get_wpa_freq(struct sim_wifi_s *wifidev)
{
return get_cmd_result_num(wifidev,
"status | grep freq | awk -F'=' '{print $2}'");
@@ -1075,7 +1077,7 @@ static int wifi_send_event(struct net_driver_s *dev, unsigned int cmd,
return OK;
}
static int wifidriver_start_scan(struct sim_netdev_s *wifidev,
static int wifidriver_start_scan(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int ret;
@@ -1110,7 +1112,7 @@ static int wifidriver_start_scan(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_scan_result(struct sim_netdev_s *wifidev,
static int wifidriver_scan_result(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
struct sim_scan_result_s scan_req;
@@ -1139,7 +1141,7 @@ static int wifidriver_scan_result(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_set_auth(struct sim_netdev_s *wifidev,
static int wifidriver_set_auth(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int ret = 0;
@@ -1210,7 +1212,7 @@ static int wifidriver_set_auth(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_get_auth(struct sim_netdev_s *wifidev,
static int wifidriver_get_auth(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int ret = 0;
@@ -1233,7 +1235,7 @@ static int wifidriver_get_auth(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_set_psk(struct sim_netdev_s *wifidev,
static int wifidriver_set_psk(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
struct iw_encode_ext *ext;
@@ -1287,7 +1289,7 @@ static int wifidriver_set_psk(struct sim_netdev_s *wifidev,
return ret ;
}
static int wifidriver_get_psk(struct sim_netdev_s *wifidev,
static int wifidriver_get_psk(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
struct iw_encode_ext *ext;
@@ -1323,7 +1325,7 @@ static int wifidriver_get_psk(struct sim_netdev_s *wifidev,
return ret ;
}
static int wifidriver_set_essid(struct sim_netdev_s *wifidev,
static int wifidriver_set_essid(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
char ssid_buf[SSID_MAX_LEN];
@@ -1379,7 +1381,7 @@ static int wifidriver_set_essid(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_get_essid(struct sim_netdev_s *wifidev,
static int wifidriver_get_essid(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int ret = 0;
@@ -1414,7 +1416,7 @@ static int wifidriver_get_essid(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_set_bssid(struct sim_netdev_s *wifidev,
static int wifidriver_set_bssid(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int ret = 0;
@@ -1453,7 +1455,7 @@ static int wifidriver_set_bssid(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_get_bssid(struct sim_netdev_s *wifidev,
static int wifidriver_get_bssid(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
struct sockaddr *sockaddr = &pwrq->u.ap_addr;
@@ -1485,7 +1487,7 @@ static int wifidriver_get_bssid(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_start_connect(struct sim_netdev_s *wifidev)
static int wifidriver_start_connect(struct sim_wifi_s *wifidev)
{
int timeout = 10;
@@ -1519,7 +1521,7 @@ static int wifidriver_start_connect(struct sim_netdev_s *wifidev)
memset(&wrqu, 0, sizeof(wrqu));
memcpy(wrqu.ap_addr.sa_data, bssid, ETH_ALEN);
wifi_send_event(&wifidev->dev.netdev, SIOCGIWAP, &wrqu);
wifi_send_event(&wifidev->dev->netdev, SIOCGIWAP, &wrqu);
return OK;
}
@@ -1544,7 +1546,7 @@ static int wifidriver_start_connect(struct sim_netdev_s *wifidev)
return OK;
}
static int wifidriver_start_disconnect(struct sim_netdev_s *wifidev)
static int wifidriver_start_disconnect(struct sim_wifi_s *wifidev)
{
int ret;
@@ -1564,14 +1566,14 @@ static int wifidriver_start_disconnect(struct sim_netdev_s *wifidev)
return ret;
}
static int wifidriver_get_mode(struct sim_netdev_s *wifidev,
static int wifidriver_get_mode(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
pwrq->u.mode = wifidev->mode;
return OK;
}
static int wifidriver_set_mode(struct sim_netdev_s *wifidev,
static int wifidriver_set_mode(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int ret;
@@ -1638,7 +1640,7 @@ static int wifidriver_set_mode(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_set_country(struct sim_netdev_s *wifidev,
static int wifidriver_set_country(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
char country[4] =
@@ -1658,7 +1660,7 @@ static int wifidriver_set_country(struct sim_netdev_s *wifidev,
return set_cmd(wifidev, "set country %s", country);
}
static int wifidriver_get_country(struct sim_netdev_s *wifidev,
static int wifidriver_get_country(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
char country[128];
@@ -1696,7 +1698,7 @@ static int wifidriver_get_country(struct sim_netdev_s *wifidev,
return ret;
}
static int wifidriver_get_sensitivity(struct sim_netdev_s *wifidev,
static int wifidriver_get_sensitivity(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int32_t rssi;
@@ -1722,7 +1724,7 @@ static int wifidriver_get_sensitivity(struct sim_netdev_s *wifidev,
return ret;
}
int wifidriver_set_freq(struct sim_netdev_s *wifidev, struct iwreq *pwrq)
int wifidriver_set_freq(struct sim_wifi_s *wifidev, struct iwreq *pwrq)
{
int channel;
int ret = 0;
@@ -1747,7 +1749,7 @@ int wifidriver_set_freq(struct sim_netdev_s *wifidev, struct iwreq *pwrq)
return ret;
}
static int wifidriver_get_freq(struct sim_netdev_s *wifidev,
static int wifidriver_get_freq(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
switch (wifidev->mode)
@@ -1775,7 +1777,7 @@ static int wifidriver_get_freq(struct sim_netdev_s *wifidev,
return OK;
}
static int wifidriver_get_range(struct sim_netdev_s *wifidev,
static int wifidriver_get_range(struct sim_wifi_s *wifidev,
struct iwreq *pwrq)
{
int k;
@@ -1798,7 +1800,7 @@ static int wifidriver_connect(struct netdev_lowerhalf_s *dev)
{
int ret;
ret = wifidriver_start_connect((struct sim_netdev_s *)dev);
ret = wifidriver_start_connect(NETDEV2WIFI(dev));
if (ret >= 0)
{
netdev_lower_carrier_on(dev);
@@ -1812,7 +1814,7 @@ static int wifidriver_disconnect(struct netdev_lowerhalf_s *dev)
int ret;
union iwreq_data wrqu;
ret = wifidriver_start_disconnect((struct sim_netdev_s *)dev);
ret = wifidriver_start_disconnect(NETDEV2WIFI(dev));
if (ret >= 0)
{
netdev_lower_carrier_off(dev);
@@ -1827,7 +1829,7 @@ static int wifidriver_disconnect(struct netdev_lowerhalf_s *dev)
static int wifidriver_essid(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1843,7 +1845,7 @@ static int wifidriver_bssid(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
int ret;
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1866,18 +1868,18 @@ static int wifidriver_passwd(struct netdev_lowerhalf_s *dev,
{
if (set)
{
return wifidriver_set_psk((struct sim_netdev_s *)dev, iwr);
return wifidriver_set_psk(NETDEV2WIFI(dev), iwr);
}
else
{
return wifidriver_get_psk((struct sim_netdev_s *)dev, iwr);
return wifidriver_get_psk(NETDEV2WIFI(dev), iwr);
}
}
static int wifidriver_mode(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1892,7 +1894,7 @@ static int wifidriver_mode(struct netdev_lowerhalf_s *dev,
static int wifidriver_auth(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1907,7 +1909,7 @@ static int wifidriver_auth(struct netdev_lowerhalf_s *dev,
static int wifidriver_freq(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1934,7 +1936,7 @@ static int wifidriver_txpower(struct netdev_lowerhalf_s *dev,
static int wifidriver_country(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1949,7 +1951,7 @@ static int wifidriver_country(struct netdev_lowerhalf_s *dev,
static int wifidriver_sensitivity(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1964,7 +1966,7 @@ static int wifidriver_sensitivity(struct netdev_lowerhalf_s *dev,
static int wifidriver_scan(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr, bool set)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = NETDEV2WIFI(dev);
if (set)
{
@@ -1979,12 +1981,20 @@ static int wifidriver_scan(struct netdev_lowerhalf_s *dev,
static int wifidriver_range(struct netdev_lowerhalf_s *dev,
struct iwreq *iwr)
{
return wifidriver_get_range((struct sim_netdev_s *)dev, iwr);
return wifidriver_get_range(NETDEV2WIFI(dev), iwr);
}
static bool wifidriver_connected(struct netdev_lowerhalf_s *dev)
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: sim_wifihost_connected
****************************************************************************/
bool sim_wifihost_connected(struct sim_wifihost_lowerhalf_s *dev)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
struct sim_wifi_s *wifidev = (struct sim_wifi_s *)dev->wifi;
if (wifidev->mode == IW_MODE_MASTER)
{
@@ -1998,21 +2008,36 @@ static bool wifidriver_connected(struct netdev_lowerhalf_s *dev)
return false;
}
static void wifidriver_init(struct netdev_lowerhalf_s *dev, int devidx)
{
struct sim_netdev_s *wifidev = (struct sim_netdev_s *)dev;
/****************************************************************************
* Name: sim_wifihost_init
****************************************************************************/
wifidev->mode = IW_MODE_AUTO;
wifidev->devidx = devidx;
int sim_wifihost_init(struct sim_wifihost_lowerhalf_s *dev, int devidx)
{
struct sim_wifi_s *priv;
priv = kmm_zalloc(sizeof(*priv));
if (priv == NULL)
{
nerr("wifi driver priv alloc failed\n");
return -ENOMEM;
}
dev->wifi = priv;
priv->dev = &dev->lower;
priv->mode = IW_MODE_AUTO;
priv->devidx = devidx;
/* Bind the wireless ops interfaces. */
dev->lower.iw_ops = &g_iw_ops;
/* The default host wlan interface name is corresponding to the nuttx
* wlan interface name. If not, should modify the host wlan interface
* name.
*/
snprintf(wifidev->host_ifname, IFNAMSIZ, "wlan%d", devidx);
snprintf(priv->host_ifname, IFNAMSIZ, "wlan%d", devidx);
/* Bind the wireless ops interfaces. */
dev->iw_ops = &g_iw_ops;
return OK;
}
+73
View File
@@ -0,0 +1,73 @@
/****************************************************************************
* arch/sim/src/sim/sim_wifihost.h
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __ARCH_SIM_SRC_SIM_WIFIHOST_H
#define __ARCH_SIM_SRC_SIM_WIFIHOST_H
#if CONFIG_SIM_WIFIDEV_NUMBER != 0
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/net/netdev_lowerhalf.h>
/****************************************************************************
* Public Data
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Type Definitions
****************************************************************************/
struct sim_wifihost_lowerhalf_s
{
/* This holds the information visible to the NuttX network */
struct netdev_lowerhalf_s lower; /* The netdev lowerhalf */
void *wifi;
};
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
int sim_wifihost_init(struct sim_wifihost_lowerhalf_s *dev, int devidx);
bool sim_wifihost_connected(struct sim_wifihost_lowerhalf_s *dev);
#undef EXTERN
#ifdef __cplusplus
}
#endif
#endif /* CONFIG_DRIVERS_WIFI_SIM */
#endif /* __ARCH_SIM_SRC_SIM_WIFIHOST_H */