qcacmn: cdp: Convergence of cdp_misc_ops
Currently the cdp apis are given pdev/vdev/peer handle as its arguments, which is directly accessed in those APIs. This can cause a race-condition in access of the respective handles, if it has been deleted in parallel. Hence as a part of cdp convergence, pass only the pdev/vdev id or peer mac address, which will be used to get the respective handles, and hence avoiding the unwanted access of the handles, if it has been deleted. Converged misc_ops - tx_non_std - get_opmode - get_tx_ack_stats - set_ibss_vdev_heart_beat_timer - hl_tdls_flag_reset - set_wisa_mode - txrx_post_data_stall_event - update_mac_id - pkt_log_init - pkt_log_con_service - get_num_rx_contexts - set_wmm_param - flush_rx_frames - bad_peer_txctl_set_setting - bad_peer_txctl_update_threshold - txrx_data_stall_cb_register - txrx_data_stall_cb_deregister - vdev_set_driver_del_ack_enable - get_intra_bss_fwd_pkts_count - mark_first_wakeup_packet - register_pktdump_cb - unregister_pktdump_cb - pdev_reset_driver_del_ack - runtime_suspend - runtime_resume CRs-Fixed: 2539811 Change-Id: I3080df033d6411d7078a322224b914bda2fddc0e
This commit is contained in:
@@ -3645,24 +3645,21 @@ more_data:
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_TDLS
|
||||
/**
|
||||
* dp_tx_non_std() - Allow the control-path SW to send data frames
|
||||
*
|
||||
* @data_vdev - which vdev should transmit the tx data frames
|
||||
* @tx_spec - what non-standard handling to apply to the tx data frames
|
||||
* @msdu_list - NULL-terminated list of tx MSDUs
|
||||
*
|
||||
* Return: NULL on success,
|
||||
* nbuf when it fails to send
|
||||
*/
|
||||
qdf_nbuf_t dp_tx_non_std(struct cdp_vdev *vdev_handle,
|
||||
enum ol_tx_spec tx_spec, qdf_nbuf_t msdu_list)
|
||||
qdf_nbuf_t dp_tx_non_std(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
enum ol_tx_spec tx_spec, qdf_nbuf_t msdu_list)
|
||||
{
|
||||
struct dp_vdev *vdev = (struct dp_vdev *) vdev_handle;
|
||||
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
||||
struct dp_vdev *vdev = dp_get_vdev_from_soc_vdev_id_wifi3(soc, vdev_id);
|
||||
|
||||
if (!vdev) {
|
||||
dp_err("vdev handle for id %d is NULL", vdev_id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (tx_spec & OL_TX_SPEC_NO_FREE)
|
||||
vdev->is_tdls_frame = true;
|
||||
return dp_tx_send(vdev_handle, msdu_list);
|
||||
|
||||
return dp_tx_send(dp_vdev_to_cdp_vdev(vdev), msdu_list);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user