diff options
| -rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath6kl/wmi.c | 16 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath6kl/wmi.h | 5 | 
3 files changed, 27 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index 0becddd8b58..ff916ca7a23 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c @@ -2282,6 +2282,7 @@ static int ath6kl_ap_beacon(struct wiphy *wiphy, struct net_device *dev,  	struct ath6kl *ar = ath6kl_priv(dev);  	struct ath6kl_vif *vif = netdev_priv(dev);  	struct ieee80211_mgmt *mgmt; +	bool hidden = false;  	u8 *ies;  	int ies_len;  	struct wmi_connect_cmd p; @@ -2341,7 +2342,11 @@ static int ath6kl_ap_beacon(struct wiphy *wiphy, struct net_device *dev,  	memcpy(vif->ssid, info->ssid, info->ssid_len);  	vif->ssid_len = info->ssid_len;  	if (info->hidden_ssid != NL80211_HIDDEN_SSID_NOT_IN_USE) -		return -EOPNOTSUPP; /* TODO */ +		hidden = true; + +	res = ath6kl_wmi_ap_hidden_ssid(ar->wmi, vif->fw_vif_idx, hidden); +	if (res) +		return res;  	ret = ath6kl_set_auth_type(vif, info->auth_type);  	if (ret) diff --git a/drivers/net/wireless/ath/ath6kl/wmi.c b/drivers/net/wireless/ath/ath6kl/wmi.c index dc6230dea86..0a57dcc6041 100644 --- a/drivers/net/wireless/ath/ath6kl/wmi.c +++ b/drivers/net/wireless/ath/ath6kl/wmi.c @@ -3013,6 +3013,22 @@ int ath6kl_wmi_ap_set_mlme(struct wmi *wmip, u8 if_idx, u8 cmd, const u8 *mac,  				   NO_SYNC_WMIFLAG);  } +int ath6kl_wmi_ap_hidden_ssid(struct wmi *wmi, u8 if_idx, bool enable) +{ +	struct sk_buff *skb; +	struct wmi_ap_hidden_ssid_cmd *cmd; + +	skb = ath6kl_wmi_get_new_buf(sizeof(*cmd)); +	if (!skb) +		return -ENOMEM; + +	cmd = (struct wmi_ap_hidden_ssid_cmd *) skb->data; +	cmd->hidden_ssid = enable ? 1 : 0; + +	return ath6kl_wmi_cmd_send(wmi, if_idx, skb, WMI_AP_HIDDEN_SSID_CMDID, +				   NO_SYNC_WMIFLAG); +} +  /* This command will be used to enable/disable AP uAPSD feature */  int ath6kl_wmi_ap_set_apsd(struct wmi *wmi, u8 if_idx, u8 enable)  { diff --git a/drivers/net/wireless/ath/ath6kl/wmi.h b/drivers/net/wireless/ath/ath6kl/wmi.h index 38907f41122..cea7429a8a0 100644 --- a/drivers/net/wireless/ath/ath6kl/wmi.h +++ b/drivers/net/wireless/ath/ath6kl/wmi.h @@ -2129,6 +2129,10 @@ struct wmi_rx_frame_format_cmd {  	u8 reserved[1];  } __packed; +struct wmi_ap_hidden_ssid_cmd { +	u8 hidden_ssid; +} __packed; +  /* AP mode events */  struct wmi_ap_set_apsd_cmd {  	u8 enable; @@ -2485,6 +2489,7 @@ u8 ath6kl_wmi_get_traffic_class(u8 user_priority);  u8 ath6kl_wmi_determine_user_priority(u8 *pkt, u32 layer2_pri);  /* AP mode */ +int ath6kl_wmi_ap_hidden_ssid(struct wmi *wmi, u8 if_idx, bool enable);  int ath6kl_wmi_ap_profile_commit(struct wmi *wmip, u8 if_idx,  				 struct wmi_connect_cmd *p);  |