@@ -685,6 +685,7 @@ struct cfg80211_acl_data {
* @beacon: beacon data
* @beacon_interval: beacon interval
* @dtim_period: DTIM period
+ * @beacon_txrate: beacon tx rate
* @ssid: SSID to be used in the BSS (note: may be %NULL if not provided from
* user space)
* @ssid_len: length of @ssid
@@ -706,7 +707,7 @@ struct cfg80211_ap_settings {
struct cfg80211_beacon_data beacon;
- int beacon_interval, dtim_period;
+ int beacon_interval, dtim_period, beacon_txrate;
const u8 *ssid;
size_t ssid_len;
enum nl80211_hidden_ssid hidden_ssid;
@@ -1867,6 +1867,9 @@ enum nl80211_commands {
* @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is
* used to pull the stored data for mesh peer in power save state.
*
+ * @NL80211_ATTR_BEACON_TXRATE: User configurable beacon data rate (u32). This is
+ * used to set beacon tx rate.
+ *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2261,6 +2264,8 @@ enum nl80211_attrs {
NL80211_ATTR_MESH_PEER_AID,
+ NL80211_ATTR_BEACON_TXRATE,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
@@ -409,6 +409,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
.len = VHT_MUMIMO_GROUPS_DATA_LEN
},
[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR] = { .len = ETH_ALEN },
+ [NL80211_ATTR_BEACON_TXRATE] = { .type = NLA_U32 },
};
/* policy for the key attributes */
@@ -3568,6 +3569,10 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
params.smps_mode = NL80211_SMPS_OFF;
}
+ if (info->attrs[NL80211_ATTR_BEACON_TXRATE])
+ params.beacon_txrate =
+ nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TXRATE]);
+
if (info->attrs[NL80211_ATTR_ACL_POLICY]) {
params.acl = parse_acl_data(&rdev->wiphy, info);
if (IS_ERR(params.acl))
This will allow user to configure beacon tx rate from userspace. This adds new nl80211 attribute as NL80211_ATTR_BEACON_RATE. Signed-off-by: Purushottam Kushwaha <pkushwah@qti.qualcomm.com> --- include/net/cfg80211.h | 3 ++- include/uapi/linux/nl80211.h | 5 +++++ net/wireless/nl80211.c | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-)