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