qcacld-3.0: wait tx complete before vdev stop

Before VDEV_STOP is initiated by host, sometimes there are
outstanding mgmt tx pkts left in FW.  need wait all tx
complete,  or peer vdev ref count keep held. In P2P GO/SAP mode,
no wait since wma->interfaces[session_id].delay_before_vdev_stop
is 0, ini relative cfg isn't passed to wma at all.

Change-Id: I1c3d137bb08624e30cc220e0fa0e31e6d6fc8a9d
CRs-Fixed: 2184096
This commit is contained in:
Zhu Jianmin
2018-02-11 16:37:10 +08:00
committed by snandini
orang tua 0a7325aacc
melakukan a2f8e8dbe1
4 mengubah file dengan 9 tambahan dan 10 penghapusan

Melihat File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -110,6 +110,7 @@ enum active_bpf_mode {
* @force_target_assert_enabled: Indicate whether target assert enabled or not
* @bandcapability: Configured band by user
* @rps_enabled: RPS enabled in SAP mode
* @delay_before_vdev_stop: wait time for tx complete before vdev stop
* Structure for holding cds ini parameters.
*/
@@ -171,6 +172,7 @@ struct cds_config_info {
bool force_target_assert_enabled;
uint8_t bandcapability;
bool rps_enabled;
uint8_t delay_before_vdev_stop;
};
#ifdef WLAN_FEATURE_FILS_SK

Melihat File

@@ -8874,6 +8874,8 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
cds_cfg->ito_repeat_count = hdd_ctx->config->ito_repeat_count;
cds_cfg->bandcapability = hdd_ctx->config->nBandCapability;
cds_cfg->delay_before_vdev_stop =
hdd_ctx->config->delay_before_vdev_stop;
hdd_ra_populate_cds_config(cds_cfg, hdd_ctx);
hdd_txrx_populate_cds_config(cds_cfg, hdd_ctx);

Melihat File

@@ -5327,7 +5327,6 @@ fail_del_bss_ho_fail:
(void *)params, 0);
}
#ifdef WLAN_FEATURE_HOST_ROAM
/**
* wma_wait_tx_complete() - Wait till tx packets are drained
* @wma: wma handle
@@ -5365,12 +5364,6 @@ static void wma_wait_tx_complete(tp_wma_handle wma,
max_wait_iterations--;
}
}
#else
static void wma_wait_tx_complete(tp_wma_handle wma,
uint32_t session_id)
{
}
#endif
/**
* wma_delete_bss() - process delete bss request from upper layer
* @wma: wma handle

Melihat File

@@ -2982,9 +2982,11 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc,
goto err_scn_context;
}
for (i = 0; i < wma_handle->max_bssid; ++i)
for (i = 0; i < wma_handle->max_bssid; ++i) {
wma_vdev_init(&wma_handle->interfaces[i]);
wma_handle->interfaces[i].delay_before_vdev_stop =
cds_cfg->delay_before_vdev_stop;
}
/* Register the debug print event handler */
wmi_unified_register_event_handler(wma_handle->wmi_handle,
wmi_debug_print_event_id,