1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2007 - 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 __XMIT_OSDEP_H_ 16*4882a593Smuzhiyun #define __XMIT_OSDEP_H_ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun struct pkt_file { 20*4882a593Smuzhiyun struct sk_buff *pkt; 21*4882a593Smuzhiyun SIZE_T pkt_len; /* the remainder length of the open_file */ 22*4882a593Smuzhiyun _buffer *cur_buffer; 23*4882a593Smuzhiyun u8 *buf_start; 24*4882a593Smuzhiyun u8 *cur_addr; 25*4882a593Smuzhiyun SIZE_T buf_len; 26*4882a593Smuzhiyun }; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define NR_XMITFRAME 1256 29*4882a593Smuzhiyun #define NR_XMITFRAME_EXT 32 30*4882a593Smuzhiyun #define SZ_XMITFRAME_EXT 1536 /*MGNT frame*/ 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #ifdef CONFIG_PCI_HCI 33*4882a593Smuzhiyun #define SZ_ALIGN_XMITFRAME_EXT 4 34*4882a593Smuzhiyun #else 35*4882a593Smuzhiyun #ifdef USB_XMITBUF_ALIGN_SZ 36*4882a593Smuzhiyun #define SZ_ALIGN_XMITFRAME_EXT (USB_XMITBUF_ALIGN_SZ) 37*4882a593Smuzhiyun #else 38*4882a593Smuzhiyun #define SZ_ALIGN_XMITFRAME_EXT 512 39*4882a593Smuzhiyun #endif 40*4882a593Smuzhiyun #endif 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun struct xmit_priv; 44*4882a593Smuzhiyun struct pkt_attrib; 45*4882a593Smuzhiyun struct sta_xmit_priv; 46*4882a593Smuzhiyun struct xmit_frame; 47*4882a593Smuzhiyun struct xmit_buf; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #ifdef PLATFORM_FREEBSD 51*4882a593Smuzhiyun extern int rtw_xmit_entry(struct sk_buff *pkt, _nic_hdl pnetdev); 52*4882a593Smuzhiyun extern void rtw_xmit_entry_wrap(_nic_hdl pifp); 53*4882a593Smuzhiyun #endif /* PLATFORM_FREEBSD */ 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #ifdef PLATFORM_LINUX 56*4882a593Smuzhiyun extern int _rtw_xmit_entry(struct sk_buff *pkt, _nic_hdl pnetdev); 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)) 59*4882a593Smuzhiyun extern netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, _nic_hdl pnetdev); 60*4882a593Smuzhiyun #else 61*4882a593Smuzhiyun extern int rtw_xmit_entry(struct sk_buff *pkt, _nic_hdl pnetdev); 62*4882a593Smuzhiyun #endif 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #ifdef RTW_PHL_TX 65*4882a593Smuzhiyun extern int rtw_os_tx(struct sk_buff *pkt, _nic_hdl pnetdev); 66*4882a593Smuzhiyun #endif 67*4882a593Smuzhiyun #endif /* PLATFORM_LINUX */ 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun void rtw_os_xmit_schedule(_adapter *padapter); 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #if 0 /*CONFIG_CORE_XMITBUF*/ 72*4882a593Smuzhiyun int rtw_os_xmit_resource_alloc(_adapter *padapter, struct xmit_buf *pxmitbuf, u32 alloc_sz, u8 flag); 73*4882a593Smuzhiyun void rtw_os_xmit_resource_free(_adapter *padapter, struct xmit_buf *pxmitbuf, u32 free_sz, u8 flag); 74*4882a593Smuzhiyun #else 75*4882a593Smuzhiyun u8 rtw_os_xmit_resource_alloc(_adapter *padapter, struct xmit_frame *pxframe); 76*4882a593Smuzhiyun void rtw_os_xmit_resource_free(_adapter *padapter, struct xmit_frame *pxframe); 77*4882a593Smuzhiyun #endif 78*4882a593Smuzhiyun extern void rtw_set_tx_chksum_offload(struct sk_buff *pkt, struct pkt_attrib *pattrib); 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun extern uint rtw_remainder_len(struct pkt_file *pfile); 81*4882a593Smuzhiyun extern void _rtw_open_pktfile(struct sk_buff *pkt, struct pkt_file *pfile); 82*4882a593Smuzhiyun extern uint _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen); 83*4882a593Smuzhiyun extern sint rtw_endofpktfile(struct pkt_file *pfile); 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun extern void rtw_os_pkt_complete(_adapter *padapter, struct sk_buff *pkt); 86*4882a593Smuzhiyun extern void rtw_os_xmit_complete(_adapter *padapter, struct xmit_frame *pxframe); 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun void rtw_os_check_wakup_queue(_adapter *padapter, u16 os_qid); 89*4882a593Smuzhiyun bool rtw_os_check_stop_queue(_adapter *padapter, u16 os_qid); 90*4882a593Smuzhiyun void rtw_os_wake_queue_at_free_stainfo(_adapter *padapter, int *qcnt_freed); 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun void dump_os_queue(void *sel, _adapter *padapter); 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun void rtw_coalesce_tx_amsdu(_adapter *padapter, struct xmit_frame *pxframes[], 95*4882a593Smuzhiyun int xf_nr, bool amsdu, u32 *pktlen); 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #endif /* __XMIT_OSDEP_H_ */ 98