|
@@ -291,6 +291,23 @@ static int wl12xx_get_new_session_id(struct wl1271 *wl,
|
|
|
return wlvif->session_counter;
|
|
|
}
|
|
|
|
|
|
+static u8 wlcore_get_native_channel_type(u8 nl_channel_type)
|
|
|
+{
|
|
|
+ switch (nl_channel_type) {
|
|
|
+ case NL80211_CHAN_NO_HT:
|
|
|
+ return WLCORE_CHAN_NO_HT;
|
|
|
+ case NL80211_CHAN_HT20:
|
|
|
+ return WLCORE_CHAN_HT20;
|
|
|
+ case NL80211_CHAN_HT40MINUS:
|
|
|
+ return WLCORE_CHAN_HT40MINUS;
|
|
|
+ case NL80211_CHAN_HT40PLUS:
|
|
|
+ return WLCORE_CHAN_HT40PLUS;
|
|
|
+ default:
|
|
|
+ WARN_ON(1);
|
|
|
+ return WLCORE_CHAN_NO_HT;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static int wl12xx_cmd_role_start_dev(struct wl1271 *wl,
|
|
|
struct wl12xx_vif *wlvif)
|
|
|
{
|
|
@@ -407,6 +424,7 @@ int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
|
|
|
memcpy(cmd->sta.ssid, wlvif->ssid, wlvif->ssid_len);
|
|
|
memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN);
|
|
|
cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);
|
|
|
+ cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);
|
|
|
|
|
|
if (wlvif->sta.hlid == WL12XX_INVALID_LINK_ID) {
|
|
|
ret = wl12xx_allocate_link(wl, wlvif, &wlvif->sta.hlid);
|
|
@@ -519,6 +537,7 @@ int wl12xx_cmd_role_start_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif)
|
|
|
/* FIXME: Change when adding DFS */
|
|
|
cmd->ap.reset_tsf = 1; /* By default reset AP TSF */
|
|
|
cmd->channel = wlvif->channel;
|
|
|
+ cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);
|
|
|
|
|
|
if (!bss_conf->hidden_ssid) {
|
|
|
/* take the SSID from the beacon for backward compatibility */
|