qcacld-3.0: Add vendor command support for setband
This is a qcacld-2.0 to qcacld-3.0 propagation This commit allows the upper layers to send setband request to driver using vendor command. Change-Id: I3ce769e5426a5afb85979b4e19dbabd234f18e98 CRs-Fixed: 879527 (cherry picked from commit 0e0eaa6aa061031c5cf5314497b9d41eb0aef850)
このコミットが含まれているのは:
@@ -7150,6 +7150,71 @@ static int wlan_hdd_cfg80211_get_wakelock_stats(struct wiphy *wiphy,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*__wlan_hdd_cfg80211_setband() - set band
|
||||||
|
* @wiphy: Pointer to wireless phy
|
||||||
|
* @wdev: Pointer to wireless device
|
||||||
|
* @data: Pointer to data
|
||||||
|
* @data_len: Length of @data
|
||||||
|
*
|
||||||
|
* Return: 0 on success, negative errno on failure
|
||||||
|
*/
|
||||||
|
static int __wlan_hdd_cfg80211_setband(struct wiphy *wiphy,
|
||||||
|
struct wireless_dev *wdev,
|
||||||
|
const void *data, int data_len)
|
||||||
|
{
|
||||||
|
struct net_device *dev = wdev->netdev;
|
||||||
|
hdd_context_t *hdd_ctx = wiphy_priv(wiphy);
|
||||||
|
struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_MAX + 1];
|
||||||
|
int ret;
|
||||||
|
static const struct nla_policy policy[QCA_WLAN_VENDOR_ATTR_MAX + 1]
|
||||||
|
= {[QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE] = { .type = NLA_U32 } };
|
||||||
|
|
||||||
|
ENTER();
|
||||||
|
|
||||||
|
ret = wlan_hdd_validate_context(hdd_ctx);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_MAX, data, data_len, policy)) {
|
||||||
|
hdd_err(FL("Invalid ATTR"));
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tb[QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE]) {
|
||||||
|
hdd_err(FL("attr SETBAND_VALUE failed"));
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = hdd_set_band(dev,
|
||||||
|
nla_get_u32(tb[QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE]));
|
||||||
|
|
||||||
|
EXIT();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_hdd_cfg80211_setband() - Wrapper to setband
|
||||||
|
* @wiphy: wiphy structure pointer
|
||||||
|
* @wdev: Wireless device structure pointer
|
||||||
|
* @data: Pointer to the data received
|
||||||
|
* @data_len: Length of @data
|
||||||
|
*
|
||||||
|
* Return: 0 on success; errno on failure
|
||||||
|
*/
|
||||||
|
static int wlan_hdd_cfg80211_setband(struct wiphy *wiphy,
|
||||||
|
struct wireless_dev *wdev,
|
||||||
|
const void *data, int data_len)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
cds_ssr_protect(__func__);
|
||||||
|
ret = __wlan_hdd_cfg80211_setband(wiphy, wdev, data, data_len);
|
||||||
|
cds_ssr_unprotect(__func__);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] = {
|
const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] = {
|
||||||
{
|
{
|
||||||
.info.vendor_id = QCA_NL80211_VENDOR_ID,
|
.info.vendor_id = QCA_NL80211_VENDOR_ID,
|
||||||
@@ -7699,6 +7764,13 @@ const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] = {
|
|||||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||||
.doit = wlan_hdd_cfg80211_get_wakelock_stats
|
.doit = wlan_hdd_cfg80211_get_wakelock_stats
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.info.subcmd = QCA_NL80211_VENDOR_SUBCMD_SETBAND,
|
||||||
|
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||||
|
WIPHY_VENDOR_CMD_NEED_NETDEV |
|
||||||
|
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||||
|
.doit = wlan_hdd_cfg80211_setband
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -254,10 +254,14 @@ typedef enum {
|
|||||||
* @QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION: get wifi config
|
* @QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION: get wifi config
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET: get logging features
|
* @QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET: get logging features
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES: get link properties
|
* @QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES: get link properties
|
||||||
|
* @QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG: set gateway parameters
|
||||||
|
* @QCA_NL80211_VENDOR_SUBCMD_GET_PREFERRED_FREQ_LIST: get preferred channel
|
||||||
|
list
|
||||||
|
* @QCA_NL80211_VENDOR_SUBCMD_SET_PROBABLE_OPER_CHANNEL: channel hint
|
||||||
|
* @QCA_NL80211_VENDOR_SUBCMD_SETBAND: vendor setband command
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN: venodr scan command
|
* @QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN: venodr scan command
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE: vendor scan complete
|
* @QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE: vendor scan complete
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_OTA_TEST: enable OTA test
|
* @QCA_NL80211_VENDOR_SUBCMD_OTA_TEST: enable OTA test
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG: set gateway parameters
|
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE: set tx power by percentage
|
* @QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE: set tx power by percentage
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE_DECR_DB: reduce tx power by DB
|
* @QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE_DECR_DB: reduce tx power by DB
|
||||||
* @QCA_NL80211_VENDOR_SUBCMD_SET_SAP_CONFIG: SAP configuration
|
* @QCA_NL80211_VENDOR_SUBCMD_SET_SAP_CONFIG: SAP configuration
|
||||||
@@ -400,6 +404,9 @@ enum qca_nl80211_vendor_subcmds {
|
|||||||
QCA_NL80211_VENDOR_SUBCMD_GET_PREFERRED_FREQ_LIST = 103,
|
QCA_NL80211_VENDOR_SUBCMD_GET_PREFERRED_FREQ_LIST = 103,
|
||||||
QCA_NL80211_VENDOR_SUBCMD_SET_PROBABLE_OPER_CHANNEL = 104,
|
QCA_NL80211_VENDOR_SUBCMD_SET_PROBABLE_OPER_CHANNEL = 104,
|
||||||
|
|
||||||
|
/* Vendor setband command */
|
||||||
|
QCA_NL80211_VENDOR_SUBCMD_SETBAND = 105,
|
||||||
|
|
||||||
/* Vendor scan commands */
|
/* Vendor scan commands */
|
||||||
QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN = 106,
|
QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN = 106,
|
||||||
QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE = 107,
|
QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE = 107,
|
||||||
@@ -834,6 +841,8 @@ enum qca_wlan_vendor_attr_get_tdls_capabilities {
|
|||||||
* @QCA_WLAN_VENDOR_ATTR_MAC_ADDR: MAC Address attribute which is used by
|
* @QCA_WLAN_VENDOR_ATTR_MAC_ADDR: MAC Address attribute which is used by
|
||||||
* QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES
|
* QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES
|
||||||
* @QCA_WLAN_VENDOR_ATTR_FEATURE_FLAGS: Supported Features
|
* @QCA_WLAN_VENDOR_ATTR_FEATURE_FLAGS: Supported Features
|
||||||
|
*@QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE: setband attribute which is used by
|
||||||
|
* QCA_NL80211_VENDOR_SUBCMD_SETBAND
|
||||||
* @QCA_WLAN_VENDOR_ATTR_AFTER_LAST: After last
|
* @QCA_WLAN_VENDOR_ATTR_AFTER_LAST: After last
|
||||||
* @QCA_WLAN_VENDOR_ATTR_MAX: Max value
|
* @QCA_WLAN_VENDOR_ATTR_MAX: Max value
|
||||||
*/
|
*/
|
||||||
@@ -848,6 +857,8 @@ enum qca_wlan_vendor_attr {
|
|||||||
QCA_WLAN_VENDOR_ATTR_CONCURRENCY_CAPA = 9,
|
QCA_WLAN_VENDOR_ATTR_CONCURRENCY_CAPA = 9,
|
||||||
QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_2_4_BAND = 10,
|
QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_2_4_BAND = 10,
|
||||||
QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_5_0_BAND = 11,
|
QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_5_0_BAND = 11,
|
||||||
|
QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE = 12,
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
QCA_WLAN_VENDOR_ATTR_AFTER_LAST,
|
QCA_WLAN_VENDOR_ATTR_AFTER_LAST,
|
||||||
QCA_WLAN_VENDOR_ATTR_MAX = QCA_WLAN_VENDOR_ATTR_AFTER_LAST - 1
|
QCA_WLAN_VENDOR_ATTR_MAX = QCA_WLAN_VENDOR_ATTR_AFTER_LAST - 1
|
||||||
|
新しいイシューから参照
ユーザーをブロックする