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