linux/drivers/staging/rtl8723bs/include/rtw_xmit.h

/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
 *
 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
 *
 ******************************************************************************/
#ifndef _RTW_XMIT_H_
#define _RTW_XMIT_H_

#include <linux/completion.h>

#define MAX_XMITBUF_SZ

#define NR_XMITBUFF

#define XMITBUF_ALIGN_SZ

/*  xmit extension buff defination */
#define MAX_XMIT_EXTBUF_SZ
#define NR_XMIT_EXTBUFF

#define MAX_CMDBUF_SZ

#define MAX_NUMBLKS

#define XMIT_VO_QUEUE
#define XMIT_VI_QUEUE
#define XMIT_BE_QUEUE
#define XMIT_BK_QUEUE

#define VO_QUEUE_INX
#define VI_QUEUE_INX
#define BE_QUEUE_INX
#define BK_QUEUE_INX
#define BCN_QUEUE_INX
#define MGT_QUEUE_INX
#define HIGH_QUEUE_INX

#define HW_QUEUE_ENTRY

#define WEP_IV(pattrib_iv, dot11txpn, keyidx)


#define TKIP_IV(pattrib_iv, dot11txpn, keyidx)

#define AES_IV(pattrib_iv, dot11txpn, keyidx)


#define HWXMIT_ENTRY

/*  For Buffer Descriptor ring architecture */
#define TXDESC_SIZE

#define TXDESC_OFFSET

#define TXDESC_40_BYTES

struct tx_desc {};

txdesc;

struct	hw_xmit	{};

/* reduce size */
struct pkt_attrib {};

#define WLANHDR_OFFSET

#define NULL_FRAMETAG
#define DATA_FRAMETAG
#define MGNT_FRAMETAG

enum {};

struct  submit_ctx {};

enum {};


void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms);
int rtw_sctx_wait(struct submit_ctx *sctx);
void rtw_sctx_done_err(struct submit_ctx **sctx, int status);
void rtw_sctx_done(struct submit_ctx **sctx);

struct xmit_buf {};


struct xmit_frame {};

struct tx_servq {};


struct sta_xmit_priv {};


struct	hw_txqueue	{};

enum cmdbuf_type {};

struct	xmit_priv {};

extern struct xmit_frame *__rtw_alloc_cmdxmitframe(struct xmit_priv *pxmitpriv,
		enum cmdbuf_type buf_type);
#define rtw_alloc_cmdxmitframe(p)
#define rtw_alloc_bcnxmitframe(p)

extern struct xmit_buf *rtw_alloc_xmitbuf_ext(struct xmit_priv *pxmitpriv);
extern s32 rtw_free_xmitbuf_ext(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);

extern struct xmit_buf *rtw_alloc_xmitbuf(struct xmit_priv *pxmitpriv);
extern s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);

void rtw_count_tx_stats(struct adapter *padapter, struct xmit_frame *pxmitframe, int sz);
extern void rtw_update_protection(struct adapter *padapter, u8 *ie, uint ie_len);
extern s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattrib);
extern s32 rtw_put_snap(u8 *data, u16 h_proto);

extern struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv);
struct xmit_frame *rtw_alloc_xmitframe_ext(struct xmit_priv *pxmitpriv);
struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv);
extern s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe);
extern void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, struct __queue *pframequeue);
struct tx_servq *rtw_get_sta_pending(struct adapter *padapter, struct sta_info *psta, signed int up, u8 *ac);
extern s32 rtw_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe);

extern s32 rtw_xmit_classifier(struct adapter *padapter, struct xmit_frame *pxmitframe);
extern u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib);
#define rtw_wlan_pkt_size(f)
extern s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
extern s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
s32 _rtw_init_hw_txqueue(struct hw_txqueue *phw_txqueue, u8 ac_tag);
void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv);


s32 rtw_txframes_pending(struct adapter *padapter);
void rtw_init_hwxmits(struct hw_xmit *phwxmit, signed int entry);


s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter);
void _rtw_free_xmit_priv(struct xmit_priv *pxmitpriv);


s32 rtw_alloc_hwxmits(struct adapter *padapter);
void rtw_free_hwxmits(struct adapter *padapter);


s32 rtw_xmit(struct adapter *padapter, struct sk_buff **pkt);
bool xmitframe_hiq_filter(struct xmit_frame *xmitframe);

signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_frame *pxmitframe);
void stop_sta_xmit(struct adapter *padapter, struct sta_info *psta);
void wakeup_sta_to_xmit(struct adapter *padapter, struct sta_info *psta);
void xmit_delivery_enabled_frames(struct adapter *padapter, struct sta_info *psta);

u8 query_ra_short_GI(struct sta_info *psta);

u8 qos_acm(u8 acm_mask, u8 priority);

void enqueue_pending_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
void enqueue_pending_xmitbuf_to_head(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
struct xmit_buf *dequeue_pending_xmitbuf(struct xmit_priv *pxmitpriv);
struct xmit_buf *dequeue_pending_xmitbuf_under_survey(struct xmit_priv *pxmitpriv);
signed int	check_pending_xmitbuf(struct xmit_priv *pxmitpriv);
int	rtw_xmit_thread(void *context);

u32 rtw_get_ff_hwaddr(struct xmit_frame	*pxmitframe);

int rtw_ack_tx_wait(struct xmit_priv *pxmitpriv, u32 timeout_ms);
void rtw_ack_tx_done(struct xmit_priv *pxmitpriv, int status);

/* include after declaring struct xmit_buf, in order to avoid warning */
#include <xmit_osdep.h>

#endif	/* _RTL871X_XMIT_H_ */