Exemple #1
0
void wmi_htc_tx_complete(void *ctx, HTC_PACKET *htc_pkt)
{
	struct wmi_unified *wmi_handle = (struct wmi_unified *)ctx;
	wmi_buf_t wmi_cmd_buf = GET_HTC_PACKET_NET_BUF_CONTEXT(htc_pkt);
#ifdef WMI_INTERFACE_EVENT_LOGGING
	uint32_t cmd_id;
#endif

	ASSERT(wmi_cmd_buf);
#ifdef WMI_INTERFACE_EVENT_LOGGING
	cmd_id = WMI_GET_FIELD(cdf_nbuf_data(wmi_cmd_buf),
			       WMI_CMD_HDR, COMMANDID);

#ifdef QCA_WIFI_3_0_EMU
	printk("\nSent WMI command:%s command_id:0x%x over dma and recieved tx complete interupt\n",
		 get_wmi_cmd_string(cmd_id), cmd_id);
#endif

	cdf_spin_lock_bh(&wmi_handle->wmi_record_lock);
	/* Record 16 bytes of WMI cmd tx complete data
	   - exclude TLV and WMI headers */
	if (cmd_id == WMI_MGMT_TX_SEND_CMDID) {
		WMI_MGMT_COMMAND_TX_CMP_RECORD(cmd_id,
				((uint32_t *) cdf_nbuf_data(wmi_cmd_buf) + 2));
	} else {
		WMI_COMMAND_TX_CMP_RECORD(cmd_id,
				((uint32_t *) cdf_nbuf_data(wmi_cmd_buf) + 2));
	}

	cdf_spin_unlock_bh(&wmi_handle->wmi_record_lock);
#endif
	cdf_nbuf_free(wmi_cmd_buf);
	cdf_mem_free(htc_pkt);
	cdf_atomic_dec(&wmi_handle->pending_cmds);
}
void wmi_htc_tx_complete(void *ctx, HTC_PACKET *htc_pkt)
{
	struct wmi_unified *wmi_handle = (struct wmi_unified *)ctx;
	wmi_buf_t wmi_cmd_buf = GET_HTC_PACKET_NET_BUF_CONTEXT(htc_pkt);
#ifdef WMI_INTERFACE_EVENT_LOGGING
	u_int32_t cmd_id;
#endif

	ASSERT(wmi_cmd_buf);
#ifdef WMI_INTERFACE_EVENT_LOGGING
	cmd_id = WMI_GET_FIELD(adf_nbuf_data(wmi_cmd_buf),
		WMI_CMD_HDR, COMMANDID);
	adf_os_spin_lock_bh(&wmi_handle->wmi_record_lock);
	/* Record 16 bytes of WMI cmd tx complete data
	   - exclude TLV and WMI headers */
	WMI_COMMAND_TX_CMP_RECORD(cmd_id,
		((u_int32_t *)adf_nbuf_data(wmi_cmd_buf) + 2));
	adf_os_spin_unlock_bh(&wmi_handle->wmi_record_lock);
#endif
	adf_nbuf_free(wmi_cmd_buf);
	adf_os_mem_free(htc_pkt);
	adf_os_atomic_dec(&wmi_handle->pending_cmds);
}