qcacld-3.0: Use object manager to fetch vdev info
Currently host driver uses wma->interfaces to fetch vdev info. This change is to use object manager instead of wma interface to check vdev info. Change-Id: I356e002ba6b43382e96c8e2da6d433df68de603b CRs-Fixed: 3525139
This commit is contained in:

committed by
Rahul Choudhary

parent
5f79c535ac
commit
ffc2dc0ba8
@@ -1474,9 +1474,11 @@ int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len)
|
||||
struct csa_offload_params *csa_offload_event;
|
||||
struct ieee80211_extendedchannelswitch_ie *xcsa_ie;
|
||||
struct ieee80211_ie_wide_bw_switch *wb_ie;
|
||||
struct wma_txrx_node *intr = wma->interfaces;
|
||||
struct wlan_objmgr_peer *peer;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
QDF_STATUS status;
|
||||
uint8_t tlv_len;
|
||||
struct wlan_channel *chan;
|
||||
|
||||
param_buf = (WMI_CSA_HANDLING_EVENTID_param_tlvs *) event;
|
||||
|
||||
@@ -1488,20 +1490,31 @@ int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len)
|
||||
csa_event = param_buf->fixed_param;
|
||||
WMI_MAC_ADDR_TO_CHAR_ARRAY(&csa_event->i_addr2, &bssid[0]);
|
||||
|
||||
if (wma_find_vdev_id_by_bssid(wma, bssid, &vdev_id)) {
|
||||
wma_err("Invalid bssid received");
|
||||
peer = wlan_objmgr_get_peer_by_mac(wma->psoc,
|
||||
bssid, WLAN_LEGACY_WMA_ID);
|
||||
if (!peer) {
|
||||
wma_err("Invalid peer");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
csa_offload_event = qdf_mem_malloc(sizeof(*csa_offload_event));
|
||||
if (!csa_offload_event)
|
||||
vdev_id = wlan_vdev_get_id(wlan_peer_get_vdev(peer));
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_WMA_ID);
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(wma->psoc,
|
||||
vdev_id,
|
||||
WLAN_LEGACY_WMA_ID);
|
||||
if (!vdev)
|
||||
return -EINVAL;
|
||||
|
||||
if (intr[vdev_id].vdev &&
|
||||
wlan_cm_is_vdev_roaming(intr[vdev_id].vdev)) {
|
||||
csa_offload_event = qdf_mem_malloc(sizeof(*csa_offload_event));
|
||||
if (!csa_offload_event) {
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (wlan_cm_is_vdev_roaming(vdev)) {
|
||||
wma_err("Roaming in progress for vdev %d, ignore csa event",
|
||||
vdev_id);
|
||||
qdf_mem_free(csa_offload_event);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1538,6 +1551,7 @@ int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len)
|
||||
} else {
|
||||
wma_err("CSA Event error: No CSA IE present");
|
||||
qdf_mem_free(csa_offload_event);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1601,7 +1615,15 @@ got_chan:
|
||||
csa_offload_event->new_ch_freq_seg2,
|
||||
csa_offload_event->new_op_class);
|
||||
|
||||
cur_chan = cds_freq_to_chan(intr[vdev_id].ch_freq);
|
||||
chan = wlan_vdev_get_active_channel(vdev);
|
||||
if (!chan) {
|
||||
wmi_err("failed to get active channel");
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
|
||||
qdf_mem_free(csa_offload_event);
|
||||
return false;
|
||||
}
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
|
||||
cur_chan = cds_freq_to_chan(chan->ch_freq);
|
||||
/*
|
||||
* basic sanity check: requested channel should not be 0
|
||||
* and equal to home channel
|
||||
|
Reference in New Issue
Block a user