qcacld-3.0: Start pre cac adapter after opening it

Start the pre cac adapter after opening the it.
Earlier, opening of adapter starts the adapter as
well. With the recent design changes, start
adapter needs to be explicitly issued after
opening the adapter.

Change-Id: I3cfa7f74bb121ab74fa18f2237069f41bf3fe736
CRs-Fixed: 1058745
This commit is contained in:
Manishekar Chandrasekaran 2016-08-24 16:16:16 +05:30 committed by Gerrit - the friendly Code Review server
parent e7b1a65408
commit dfdf2a8bcd
2 changed files with 22 additions and 12 deletions

View File

@ -6635,10 +6635,20 @@ int wlan_hdd_request_pre_cac(uint8_t channel)
wlan_hdd_get_intf_addr(hdd_ctx),
NET_NAME_UNKNOWN, true);
if (!pre_cac_adapter) {
hdd_err("error starting pre cac adapter");
hdd_err("error opening the pre cac adapter");
return -EINVAL;
}
/*
* This interface is internally created by the driver. So, no interface
* up comes for this interface from user space and hence starting
* the adapter internally.
*/
if (hdd_start_adapter(pre_cac_adapter)) {
hdd_err("error starting the pre cac adapter");
goto close_pre_cac_adapter;
}
hdd_debug("preparing for start ap/bss on the pre cac adapter");
wiphy = hdd_ctx->wiphy;
@ -6652,7 +6662,7 @@ int wlan_hdd_request_pre_cac(uint8_t channel)
sizeof(*ap_adapter->sessionCtx.ap.beacon));
if (!pre_cac_adapter->sessionCtx.ap.beacon) {
hdd_err("failed to alloc mem for beacon");
goto close_pre_cac_adapter;
goto stop_close_pre_cac_adapter;
}
qdf_mem_copy(pre_cac_adapter->sessionCtx.ap.beacon,
ap_adapter->sessionCtx.ap.beacon,
@ -6686,7 +6696,7 @@ int wlan_hdd_request_pre_cac(uint8_t channel)
chan = __ieee80211_get_channel(wiphy, freq);
if (!chan) {
hdd_err("channel converion failed");
goto close_pre_cac_adapter;
goto stop_close_pre_cac_adapter;
}
cfg80211_chandef_create(&chandef, chan, channel_type);
@ -6698,7 +6708,7 @@ int wlan_hdd_request_pre_cac(uint8_t channel)
ret = wlan_hdd_set_channel(wiphy, dev, &chandef, channel_type);
if (0 != ret) {
hdd_err("failed to set channel");
goto close_pre_cac_adapter;
goto stop_close_pre_cac_adapter;
}
status = wlan_hdd_cfg80211_start_bss(pre_cac_adapter, NULL,
@ -6706,7 +6716,7 @@ int wlan_hdd_request_pre_cac(uint8_t channel)
eHIDDEN_SSID_NOT_IN_USE, false);
if (QDF_IS_STATUS_ERROR(status)) {
hdd_err("start bss failed");
goto close_pre_cac_adapter;
goto stop_close_pre_cac_adapter;
}
/*
@ -6717,25 +6727,25 @@ int wlan_hdd_request_pre_cac(uint8_t channel)
ret = wlan_hdd_set_pre_cac_status(pre_cac_adapter, true, handle);
if (0 != ret) {
hdd_err("failed to set pre cac status");
goto stop_pre_cac_adapter;
goto stop_close_pre_cac_adapter;
}
ret = wlan_hdd_set_chan_before_pre_cac(ap_adapter,
hdd_ap_ctx->operatingChannel);
if (0 != ret) {
hdd_err("failed to set channel before pre cac");
goto stop_pre_cac_adapter;
goto stop_close_pre_cac_adapter;
}
ap_adapter->pre_cac_chan = pre_cac_chan;
return 0;
stop_pre_cac_adapter:
hdd_stop_adapter(hdd_ctx, pre_cac_adapter, false);
close_pre_cac_adapter:
stop_close_pre_cac_adapter:
hdd_stop_adapter(hdd_ctx, pre_cac_adapter, true);
qdf_mem_free(pre_cac_adapter->sessionCtx.ap.beacon);
pre_cac_adapter->sessionCtx.ap.beacon = NULL;
close_pre_cac_adapter:
hdd_close_adapter(hdd_ctx, pre_cac_adapter, false);
return -EINVAL;
}

View File

@ -898,7 +898,7 @@ void wlan_hdd_sap_pre_cac_failure(void *data)
}
cds_ssr_protect(__func__);
hdd_stop_adapter(hdd_ctx, pHostapdAdapter, false);
hdd_stop_adapter(hdd_ctx, pHostapdAdapter, true);
hdd_close_adapter(hdd_ctx, pHostapdAdapter, false);
cds_ssr_unprotect(__func__);
}
@ -934,7 +934,7 @@ static void wlan_hdd_sap_pre_cac_success(void *data)
}
cds_ssr_protect(__func__);
hdd_stop_adapter(hdd_ctx, pHostapdAdapter, false);
hdd_stop_adapter(hdd_ctx, pHostapdAdapter, true);
hdd_close_adapter(hdd_ctx, pHostapdAdapter, false);
cds_ssr_unprotect(__func__);