mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-07 07:05:20 +00:00
mwifiex: module load parameter for interface creation
This patch adds module load parameter driver_mode for mwifiex which would enable driver to create AP or P2P client interface while loading module. driver_mode is bitmap of interface modes for station, AP and P2P client. Station interface is created by default and is unaffected by driver_mode parameter. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
325e188176
commit
0013c7cebe
2 changed files with 37 additions and 0 deletions
|
@ -28,6 +28,11 @@ const char driver_version[] = "mwifiex " VERSION " (%s) ";
|
||||||
static char *cal_data_cfg;
|
static char *cal_data_cfg;
|
||||||
module_param(cal_data_cfg, charp, 0);
|
module_param(cal_data_cfg, charp, 0);
|
||||||
|
|
||||||
|
static unsigned short driver_mode;
|
||||||
|
module_param(driver_mode, ushort, 0);
|
||||||
|
MODULE_PARM_DESC(driver_mode,
|
||||||
|
"station=0x1(default), ap-sta=0x3, station-p2p=0x5, ap-sta-p2p=0x7");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function registers the device and performs all the necessary
|
* This function registers the device and performs all the necessary
|
||||||
* initializations.
|
* initializations.
|
||||||
|
@ -449,6 +454,11 @@ static void mwifiex_fw_dpc(const struct firmware *firmware, void *context)
|
||||||
goto err_init_fw;
|
goto err_init_fw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (driver_mode) {
|
||||||
|
driver_mode &= MWIFIEX_DRIVER_MODE_BITMASK;
|
||||||
|
driver_mode |= MWIFIEX_DRIVER_MODE_STA;
|
||||||
|
}
|
||||||
|
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
/* Create station interface by default */
|
/* Create station interface by default */
|
||||||
wdev = mwifiex_add_virtual_intf(adapter->wiphy, "mlan%d",
|
wdev = mwifiex_add_virtual_intf(adapter->wiphy, "mlan%d",
|
||||||
|
@ -458,6 +468,28 @@ static void mwifiex_fw_dpc(const struct firmware *firmware, void *context)
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
goto err_add_intf;
|
goto err_add_intf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (driver_mode & MWIFIEX_DRIVER_MODE_UAP) {
|
||||||
|
wdev = mwifiex_add_virtual_intf(adapter->wiphy, "uap%d",
|
||||||
|
NL80211_IFTYPE_AP, NULL, NULL);
|
||||||
|
if (IS_ERR(wdev)) {
|
||||||
|
dev_err(adapter->dev, "cannot create AP interface\n");
|
||||||
|
rtnl_unlock();
|
||||||
|
goto err_add_intf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (driver_mode & MWIFIEX_DRIVER_MODE_P2P) {
|
||||||
|
wdev = mwifiex_add_virtual_intf(adapter->wiphy, "p2p%d",
|
||||||
|
NL80211_IFTYPE_P2P_CLIENT, NULL,
|
||||||
|
NULL);
|
||||||
|
if (IS_ERR(wdev)) {
|
||||||
|
dev_err(adapter->dev,
|
||||||
|
"cannot create p2p client interface\n");
|
||||||
|
rtnl_unlock();
|
||||||
|
goto err_add_intf;
|
||||||
|
}
|
||||||
|
}
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
|
|
||||||
mwifiex_drv_get_driver_version(adapter, fmt, sizeof(fmt) - 1);
|
mwifiex_drv_get_driver_version(adapter, fmt, sizeof(fmt) - 1);
|
||||||
|
|
|
@ -48,6 +48,11 @@ enum {
|
||||||
MWIFIEX_SYNC_CMD
|
MWIFIEX_SYNC_CMD
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define MWIFIEX_DRIVER_MODE_STA BIT(0)
|
||||||
|
#define MWIFIEX_DRIVER_MODE_UAP BIT(1)
|
||||||
|
#define MWIFIEX_DRIVER_MODE_P2P BIT(2)
|
||||||
|
#define MWIFIEX_DRIVER_MODE_BITMASK (BIT(0) | BIT(1) | BIT(2))
|
||||||
|
|
||||||
#define MWIFIEX_MAX_AP 64
|
#define MWIFIEX_MAX_AP 64
|
||||||
|
|
||||||
#define MWIFIEX_DEFAULT_WATCHDOG_TIMEOUT (5 * HZ)
|
#define MWIFIEX_DEFAULT_WATCHDOG_TIMEOUT (5 * HZ)
|
||||||
|
|
Loading…
Add table
Reference in a new issue