qcacmn: Add DP callbacks for flow_pool create and delete

Current lithim_dp flow pool created in wma_vdev_start, wma_vdev_start
is called for same vdev multiple times for vdev. This leads to creation
of multiple flow pools for each vdev. Instead create from policy_manager
when session become active.

Register flow pool create/delete callbacks with policy manager.
So that lithium_dp vdev flow pools are created/deleted when vdev
become active/not-active.

Change-Id: Iaf6aaece47c79c7e6f7745feaee35a6bc5cd1297
CRs-Fixed: 2231601
This commit is contained in:
Manjunathappa Prakash 2018-05-08 19:55:25 -07:00 • committed by nshrivas
commit cdf1813b35
3 changed files with 13 additions and 0 deletions

View file

@ -858,11 +858,15 @@ struct policy_mgr_cdp_cbacks {
* @hdd_disable_rx_ol_in_concurrency: Callback to disable LRO/GRO offloads
* @hdd_set_rx_mode_rps_cb: Callback to set RPS
* @hdd_ipa_set_mcc_mode_cb: Callback to set mcc mode for ipa module
* @hdd_v2_flow_pool_map: Callback to create vdev flow pool
* @hdd_v2_flow_pool_unmap: Callback to delete vdev flow pool
*/
struct policy_mgr_dp_cbacks {
void (*hdd_disable_rx_ol_in_concurrency)(bool);
void (*hdd_set_rx_mode_rps_cb)(bool);
void (*hdd_ipa_set_mcc_mode_cb)(bool);
void (*hdd_v2_flow_pool_map)(int);
void (*hdd_v2_flow_pool_unmap)(int);
};
/**

View file

@ -1122,6 +1122,8 @@ void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
break;
}
if (pm_ctx->dp_cbacks.hdd_v2_flow_pool_map)
pm_ctx->dp_cbacks.hdd_v2_flow_pool_map(session_id);
policy_mgr_debug("No.# of active sessions for mode %d = %d",
mode, pm_ctx->no_of_active_sessions[mode]);
@ -1212,6 +1214,9 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
break;
}
if (pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap)
pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap(session_id);
policy_mgr_debug("No.# of active sessions for mode %d = %d",
mode, pm_ctx->no_of_active_sessions[mode]);

View file

@ -642,6 +642,10 @@ QDF_STATUS policy_mgr_register_dp_cb(struct wlan_objmgr_psoc *psoc,
dp_cbacks->hdd_set_rx_mode_rps_cb;
pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb =
dp_cbacks->hdd_ipa_set_mcc_mode_cb;
pm_ctx->dp_cbacks.hdd_v2_flow_pool_map =
dp_cbacks->hdd_v2_flow_pool_map;
pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap =
dp_cbacks->hdd_v2_flow_pool_unmap;
return QDF_STATUS_SUCCESS;
}