linux/drivers/net/wireless/ti/wlcore/tx.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * This file is part of wl1271
 *
 * Copyright (C) 1998-2009 Texas Instruments. All rights reserved.
 * Copyright (C) 2009 Nokia Corporation
 *
 * Contact: Luciano Coelho <[email protected]>
 */

#ifndef __TX_H__
#define __TX_H__

#define TX_HW_MGMT_PKT_LIFETIME_TU
#define TX_HW_AP_MODE_PKT_LIFETIME_TU

#define TX_HW_ATTR_SAVE_RETRIES
#define TX_HW_ATTR_HEADER_PAD
#define TX_HW_ATTR_SESSION_COUNTER
#define TX_HW_ATTR_RATE_POLICY
#define TX_HW_ATTR_LAST_WORD_PAD
#define TX_HW_ATTR_TX_CMPLT_REQ
#define TX_HW_ATTR_TX_DUMMY_REQ
#define TX_HW_ATTR_HOST_ENCRYPT
#define TX_HW_ATTR_EAPOL_FRAME

#define TX_HW_ATTR_OFST_SAVE_RETRIES
#define TX_HW_ATTR_OFST_HEADER_PAD
#define TX_HW_ATTR_OFST_SESSION_COUNTER
#define TX_HW_ATTR_OFST_RATE_POLICY
#define TX_HW_ATTR_OFST_LAST_WORD_PAD
#define TX_HW_ATTR_OFST_TX_CMPLT_REQ

#define TX_HW_RESULT_QUEUE_LEN
#define TX_HW_RESULT_QUEUE_LEN_MASK

#define WL1271_TX_ALIGN_TO
#define WL1271_EXTRA_SPACE_TKIP
#define WL1271_EXTRA_SPACE_AES
#define WL1271_EXTRA_SPACE_MAX

/* Used for management frames and dummy packets */
#define WL1271_TID_MGMT

/* stop a ROC for pending authentication reply after this time (ms) */
#define WLCORE_PEND_AUTH_ROC_TIMEOUT

struct wl127x_tx_mem {} __packed;

struct wl128x_tx_mem {} __packed;

struct wl18xx_tx_mem {} __packed;

/*
 * On wl128x based devices, when TX packets are aggregated, each packet
 * size must be aligned to the SDIO block size. The maximum block size
 * is bounded by the type of the padded bytes field that is sent to the
 * FW. Currently the type is u8, so the maximum block size is 256 bytes.
 */
#define WL12XX_BUS_BLOCK_SIZE

struct wl1271_tx_hw_descr {} __packed;

enum wl1271_tx_hw_res_status {};

struct wl1271_tx_hw_res_descr {} __packed;

struct wl1271_tx_hw_res_if {} __packed;

enum wlcore_queue_stop_reason {};

static inline int wl1271_tx_get_queue(int queue)
{}

static inline
int wlcore_tx_get_mac80211_queue(struct wl12xx_vif *wlvif, int queue)
{}

static inline int wl1271_tx_total_queue_count(struct wl1271 *wl)
{}

void wl1271_tx_work(struct work_struct *work);
int wlcore_tx_work_locked(struct wl1271 *wl);
int wlcore_tx_complete(struct wl1271 *wl);
void wl12xx_tx_reset_wlvif(struct wl1271 *wl, struct wl12xx_vif *wlvif);
void wl12xx_tx_reset(struct wl1271 *wl);
void wl1271_tx_flush(struct wl1271 *wl);
u8 wlcore_rate_to_idx(struct wl1271 *wl, u8 rate, enum nl80211_band band);
u32 wl1271_tx_enabled_rates_get(struct wl1271 *wl, u32 rate_set,
				enum nl80211_band rate_band);
u32 wl1271_tx_min_rate_get(struct wl1271 *wl, u32 rate_set);
u8 wl12xx_tx_get_hlid(struct wl1271 *wl, struct wl12xx_vif *wlvif,
		      struct sk_buff *skb, struct ieee80211_sta *sta);
void wl1271_tx_reset_link_queues(struct wl1271 *wl, u8 hlid);
void wl1271_handle_tx_low_watermark(struct wl1271 *wl);
bool wl12xx_is_dummy_packet(struct wl1271 *wl, struct sk_buff *skb);
void wl12xx_rearm_rx_streaming(struct wl1271 *wl, unsigned long *active_hlids);
unsigned int wlcore_calc_packet_alignment(struct wl1271 *wl,
					  unsigned int packet_length);
void wl1271_free_tx_id(struct wl1271 *wl, int id);
void wlcore_stop_queue_locked(struct wl1271 *wl, struct wl12xx_vif *wlvif,
			      u8 queue, enum wlcore_queue_stop_reason reason);
void wlcore_stop_queue(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 queue,
		       enum wlcore_queue_stop_reason reason);
void wlcore_wake_queue(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 queue,
		       enum wlcore_queue_stop_reason reason);
void wlcore_stop_queues(struct wl1271 *wl,
			enum wlcore_queue_stop_reason reason);
void wlcore_wake_queues(struct wl1271 *wl,
			enum wlcore_queue_stop_reason reason);
bool wlcore_is_queue_stopped_by_reason(struct wl1271 *wl,
				       struct wl12xx_vif *wlvif, u8 queue,
				       enum wlcore_queue_stop_reason reason);
bool
wlcore_is_queue_stopped_by_reason_locked(struct wl1271 *wl,
					 struct wl12xx_vif *wlvif,
					 u8 queue,
					 enum wlcore_queue_stop_reason reason);
bool wlcore_is_queue_stopped_locked(struct wl1271 *wl, struct wl12xx_vif *wlvif,
				    u8 queue);

/* from main.c */
void wl1271_free_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 hlid);
void wl12xx_rearm_tx_watchdog_locked(struct wl1271 *wl);

#endif