xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/include/rtw_trx_ops.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef _RTW_TRX_OPS_H_
16*4882a593Smuzhiyun #define _RTW_TRX_OPS_H_
17*4882a593Smuzhiyun #include <drv_types.h>
18*4882a593Smuzhiyun 
rtw_intf_init_xmit_priv(_adapter * adapter)19*4882a593Smuzhiyun static inline s32 rtw_intf_init_xmit_priv(_adapter *adapter)
20*4882a593Smuzhiyun {
21*4882a593Smuzhiyun 	return adapter_to_dvobj(adapter)->intf_ops->init_xmit_priv(adapter);
22*4882a593Smuzhiyun }
23*4882a593Smuzhiyun 
rtw_intf_free_xmit_priv(_adapter * adapter)24*4882a593Smuzhiyun static inline void rtw_intf_free_xmit_priv(_adapter *adapter)
25*4882a593Smuzhiyun {
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun 	adapter_to_dvobj(adapter)->intf_ops->free_xmit_priv(adapter);
28*4882a593Smuzhiyun }
rtw_intf_data_xmit(_adapter * adapter,struct xmit_frame * pxmitframe)29*4882a593Smuzhiyun static inline s32 rtw_intf_data_xmit(_adapter *adapter,
30*4882a593Smuzhiyun 					struct xmit_frame *pxmitframe)
31*4882a593Smuzhiyun {
32*4882a593Smuzhiyun 	return adapter_to_dvobj(adapter)->intf_ops->data_xmit(adapter, pxmitframe);
33*4882a593Smuzhiyun }
34*4882a593Smuzhiyun 
rtw_intf_xmitframe_enqueue(_adapter * adapter,struct xmit_frame * pxmitframe)35*4882a593Smuzhiyun static inline s32 rtw_intf_xmitframe_enqueue(_adapter *adapter,
36*4882a593Smuzhiyun 						struct xmit_frame *pxmitframe)
37*4882a593Smuzhiyun {
38*4882a593Smuzhiyun 	u32 rtn;
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 	/* enqueue is not necessary, casuse phl use sw queue to save xmitframe */
41*4882a593Smuzhiyun 	rtn = core_tx_call_phl(adapter, pxmitframe, NULL);
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun 	if (rtn == FAIL)
44*4882a593Smuzhiyun 		core_tx_free_xmitframe(adapter, pxmitframe);
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun 	return rtn;
47*4882a593Smuzhiyun }
48*4882a593Smuzhiyun 
rtw_intf_start_xmit_frame_thread(_adapter * adapter)49*4882a593Smuzhiyun static inline u8 rtw_intf_start_xmit_frame_thread(_adapter *adapter)
50*4882a593Smuzhiyun {
51*4882a593Smuzhiyun 	u8 rst = _SUCCESS;
52*4882a593Smuzhiyun #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
53*4882a593Smuzhiyun #ifndef CONFIG_SDIO_TX_TASKLET
54*4882a593Smuzhiyun 	if (adapter_to_dvobj(adapter)->intf_ops->start_xmit_frame_thread)
55*4882a593Smuzhiyun 		rst = adapter_to_dvobj(adapter)->intf_ops->start_xmit_frame_thread(adapter);
56*4882a593Smuzhiyun #endif
57*4882a593Smuzhiyun #endif
58*4882a593Smuzhiyun 	return rst;
59*4882a593Smuzhiyun }
rtw_intf_cancel_xmit_frame_thread(_adapter * adapter)60*4882a593Smuzhiyun static inline void rtw_intf_cancel_xmit_frame_thread(_adapter *adapter)
61*4882a593Smuzhiyun {
62*4882a593Smuzhiyun #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
63*4882a593Smuzhiyun #ifndef CONFIG_SDIO_TX_TASKLET
64*4882a593Smuzhiyun 	if (adapter_to_dvobj(adapter)->intf_ops->cancel_xmit_frame_thread)
65*4882a593Smuzhiyun 		adapter_to_dvobj(adapter)->intf_ops->cancel_xmit_frame_thread(adapter);
66*4882a593Smuzhiyun #endif
67*4882a593Smuzhiyun #endif
68*4882a593Smuzhiyun }
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #if 0 /*def CONFIG_XMIT_THREAD_MODE*/
71*4882a593Smuzhiyun static inline s32 rtw_intf_xmit_buf_handler(_adapter *adapter)
72*4882a593Smuzhiyun {
73*4882a593Smuzhiyun 	return adapter_to_dvobj(adapter)->intf_ops->xmit_buf_handler(adapter);
74*4882a593Smuzhiyun }
75*4882a593Smuzhiyun #endif
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /************************ recv *******************/
rtw_intf_init_recv_priv(struct dvobj_priv * dvobj)79*4882a593Smuzhiyun static inline s32 rtw_intf_init_recv_priv(struct dvobj_priv *dvobj)
80*4882a593Smuzhiyun {
81*4882a593Smuzhiyun 	return dvobj->intf_ops->init_recv_priv(dvobj);
82*4882a593Smuzhiyun }
rtw_intf_free_recv_priv(struct dvobj_priv * dvobj)83*4882a593Smuzhiyun static inline void rtw_intf_free_recv_priv(struct dvobj_priv *dvobj)
84*4882a593Smuzhiyun {
85*4882a593Smuzhiyun 	return dvobj->intf_ops->free_recv_priv(dvobj);
86*4882a593Smuzhiyun }
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #ifdef CONFIG_RECV_THREAD_MODE
rtw_intf_recv_hdl(_adapter * adapter)89*4882a593Smuzhiyun static inline s32 rtw_intf_recv_hdl(_adapter *adapter)
90*4882a593Smuzhiyun {
91*4882a593Smuzhiyun 	return adapter_to_dvobj(adapter)->intf_ops->recv_hdl(adapter);
92*4882a593Smuzhiyun }
93*4882a593Smuzhiyun #endif
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun struct lite_data_buf *rtw_alloc_litedatabuf(struct trx_data_buf_q *data_buf_q);
96*4882a593Smuzhiyun s32 rtw_free_litedatabuf(struct trx_data_buf_q *data_buf_q,
97*4882a593Smuzhiyun 		struct lite_data_buf *lite_data_buf);
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #endif /* _RTW_TRX_OPS_H_ */
100