ath6kl: implement hidden ssid
The ath6kl FW does not distinguish between different types of hidden SSIDs (empty or null), so treat all cfg80211 requests for hidden ssid the same. Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
Родитель
080eec4fb4
Коммит
67cd22e48d
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче