iPXE
|
Go to the source code of this file.
Macros | |
#define | BITS_PER_BYTE 8 |
#define | OFDM_PLCP_BITS 22 |
#define | HT_RC_2_STREAMS(_rc) ((((_rc) & 0x78) >> 3) + 1) |
#define | L_STF 8 |
#define | L_LTF 8 |
#define | L_SIG 4 |
#define | HT_SIG 8 |
#define | HT_STF 4 |
#define | HT_LTF(_ns) (4 * (_ns)) |
#define | SYMBOL_TIME(_ns) ((_ns) << 2) /* ns * 4 us */ |
#define | SYMBOL_TIME_HALFGI(_ns) (((_ns) * 18 + 4) / 5) /* ns * 3.6 us */ |
#define | NUM_SYMBOLS_PER_USEC(_usec) (_usec >> 2) |
#define | NUM_SYMBOLS_PER_USEC_HALFGI(_usec) (((_usec*5)-4)/18) |
#define | IS_HT_RATE(_rate) ((_rate) & 0x80) |
Enumerations | |
enum | { MCS_HT20, MCS_HT20_SGI, MCS_HT40, MCS_HT40_SGI } |
Functions | |
static void | ath_tx_send_normal (struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, struct list_head *bf_head) |
static void | ath_tx_complete_buf (struct ath_softc *sc, struct ath_buf *bf, struct ath_txq *txq, struct list_head *bf_q, struct ath_tx_status *ts, int txok, int sendbar) |
static void | ath_tx_txqaddbuf (struct ath_softc *sc, struct ath_txq *txq, struct list_head *head) |
static void | ath_buf_set_rate (struct ath_softc *sc, struct ath_buf *bf, int len) |
static void | ath_tx_queue_tid (struct ath_txq *txq, struct ath_atx_tid *tid) |
static struct ath_buf * | ath_tx_get_buffer (struct ath_softc *sc) |
static void | ath_tx_return_buffer (struct ath_softc *sc, struct ath_buf *bf) |
struct ath_txq * | ath_txq_setup (struct ath_softc *sc, int qtype, int subtype) |
void | ath_draintxq (struct ath_softc *sc, struct ath_txq *txq, int retry_tx __unused) |
int | ath_drain_all_txq (struct ath_softc *sc, int retry_tx) |
void | ath_tx_cleanupq (struct ath_softc *sc, struct ath_txq *txq) |
void | ath_txq_schedule (struct ath_softc *sc __unused, struct ath_txq *txq) |
static enum ath9k_pkt_type | get_hw_packet_type (struct io_buffer *iob) |
static int | setup_tx_flags (struct io_buffer *iob __unused) |
u8 | ath_txchainmask_reduction (struct ath_softc *sc, u8 chainmask, u32 rate) |
static struct ath_buf * | ath_tx_setup_buffer (struct net80211_device *dev, struct ath_txq *txq, struct io_buffer *iob) |
static void | ath_tx_start_dma (struct ath_softc *sc, struct ath_buf *bf, struct ath_tx_control *txctl) |
int | ath_tx_start (struct net80211_device *dev, struct io_buffer *iob, struct ath_tx_control *txctl) |
static void | ath_tx_complete (struct ath_softc *sc, struct io_buffer *iob, int tx_flags __unused, struct ath_tx_status *ts, struct ath_txq *txq) |
static void | ath_tx_processq (struct ath_softc *sc, struct ath_txq *txq) |
static void | ath_tx_complete_poll_work (struct ath_softc *sc) |
void | ath_tx_tasklet (struct ath_softc *sc) |
int | ath_tx_init (struct ath_softc *sc, int nbufs) |
void | ath_tx_cleanup (struct ath_softc *sc) |
#define BITS_PER_BYTE 8 |
Definition at line 25 of file ath9k_xmit.c.
#define OFDM_PLCP_BITS 22 |
Definition at line 26 of file ath9k_xmit.c.
#define HT_RC_2_STREAMS | ( | _rc | ) | ((((_rc) & 0x78) >> 3) + 1) |
Definition at line 27 of file ath9k_xmit.c.
#define L_STF 8 |
Definition at line 28 of file ath9k_xmit.c.
#define L_LTF 8 |
Definition at line 29 of file ath9k_xmit.c.
#define L_SIG 4 |
Definition at line 30 of file ath9k_xmit.c.
#define HT_SIG 8 |
Definition at line 31 of file ath9k_xmit.c.
#define HT_STF 4 |
Definition at line 32 of file ath9k_xmit.c.
#define HT_LTF | ( | _ns | ) | (4 * (_ns)) |
Definition at line 33 of file ath9k_xmit.c.
#define SYMBOL_TIME | ( | _ns | ) | ((_ns) << 2) /* ns * 4 us */ |
Definition at line 34 of file ath9k_xmit.c.
#define SYMBOL_TIME_HALFGI | ( | _ns | ) | (((_ns) * 18 + 4) / 5) /* ns * 3.6 us */ |
Definition at line 35 of file ath9k_xmit.c.
#define NUM_SYMBOLS_PER_USEC | ( | _usec | ) | (_usec >> 2) |
Definition at line 36 of file ath9k_xmit.c.
#define NUM_SYMBOLS_PER_USEC_HALFGI | ( | _usec | ) | (((_usec*5)-4)/18) |
Definition at line 37 of file ath9k_xmit.c.
#define IS_HT_RATE | ( | _rate | ) | ((_rate) & 0x80) |
Definition at line 40 of file ath9k_xmit.c.
anonymous enum |
Enumerator | |
---|---|
MCS_HT20 | |
MCS_HT20_SGI | |
MCS_HT40 | |
MCS_HT40_SGI |
Definition at line 52 of file ath9k_xmit.c.
|
static |
Definition at line 363 of file ath9k_xmit.c.
References ath_buf_set_rate(), ath_tx_txqaddbuf(), ath_buf::bf_lastbf, ath_buf::bf_mpdu, ath_buf::bf_state, ath_buf_state::bf_type, BUF_AMPDU, FCS_LEN, IEEE80211_SEQ_MAX, INCR, iob_len(), ath_buf::list, list_first_entry, and tid.
Referenced by ath_tx_start_dma().
|
static |
Definition at line 623 of file ath9k_xmit.c.
References ATH_TX_BAR, ath_tx_complete(), ATH_TX_ERROR, ATH_TX_XRETRY, ath_buf::bf_buf_addr, bf_isxretried, ath_buf::bf_mpdu, list_splice_tail_init, NULL, ath_softc::tx, and ath_tx::txbuf.
Referenced by ath_draintxq(), and ath_tx_processq().
|
static |
Definition at line 323 of file ath9k_xmit.c.
References ah, ath9k_hw_get_desc_link(), ath9k_hw_puttxbuf(), ath9k_hw_txstart(), ath_txq::axq_depth, ath_txq::axq_link, ath_txq::axq_q, ath_txq::axq_qnum, ath_buf::bf_daddr, ath_buf::bf_desc, ath_buf::bf_lastbf, DBGIO, head, ito64, ath_buf::list, list_empty, list_first_entry, list_splice_tail_init, NULL, and ath_softc::sc_ah.
Referenced by ath_tx_send_normal().
Definition at line 421 of file ath9k_xmit.c.
References __unused, ath9k_hw_common(), ath9k_hw_computetxtime(), ath9k_hw_set11n_ratescenario(), ATH9K_RATESERIES_RTS_CTS, ATH9K_TXDESC_CTSENA, ATH9K_TXDESC_RTSENA, ath_txchainmask_reduction(), ATH_TXMAXTRY, ath_buf::bf_desc, bf_isaggr, ath_buf::bf_lastbf, ath_buf::bf_state, ath_buf_state::bfs_paprd, ath9k_legacy_rate::bitrate, ath_hw::caps, net80211_device::channel, CHANNEL_CCK, CHANNEL_OFDM, net80211_device::channels, ath9k_11n_rate_series::ChSel, common, ath_softc::dev, flags, ath9k_legacy_rate::flags, ath_softc::hw_rix, ath9k_legacy_rate::hw_value, ath9k_legacy_rate::hw_value_short, IEEE80211_TX_RC_USE_SHORT_PREAMBLE, len, memset(), NET80211_BAND_2GHZ, ath9k_11n_rate_series::PktDuration, ath9k_11n_rate_series::Rate, ath9k_11n_rate_series::RateFlags, ath_softc::rates, ath9k_hw_capabilities::rts_aggr_limit, ath_softc::sc_ah, ath_softc::sc_flags, SC_OP_PREAMBLE_SHORT, SC_OP_PROTECT_ENABLE, and ath9k_11n_rate_series::Tries.
Referenced by ath_tx_send_normal().
|
static |
Definition at line 63 of file ath9k_xmit.c.
References ath_txq::axq_acq, ath_atx_ac::list, list_add_tail, ath_atx_ac::sched, tid, ath_atx_ac::tid_q, and ath_atx_ac::txq.
Referenced by ath_txq_schedule().
Definition at line 83 of file ath9k_xmit.c.
References ath_buf::list, list_del, list_empty, list_first_entry, NULL, ath_softc::tx, and ath_tx::txbuf.
Referenced by ath_tx_setup_buffer().
Definition at line 97 of file ath9k_xmit.c.
References ath_buf::list, list_add_tail, ath_softc::tx, and ath_tx::txbuf.
Referenced by ath_draintxq(), and ath_tx_processq().
Definition at line 106 of file ath9k_xmit.c.
References ah, ARRAY_SIZE, ath9k_hw_releasetxqueue(), ath9k_hw_setuptxqueue(), ATH9K_TXQ_USEDEFAULT, ATH_TXFIFO_DEPTH, ATH_TXQ_AC_BE, ATH_TXQ_SETUP, ath_txq::axq_acq, ath_txq::axq_ampdu_depth, ath_txq::axq_depth, ath_txq::axq_link, ath_txq::axq_q, ath_txq::axq_qnum, ath_txq::axq_tx_inprogress, DBG, INIT_LIST_HEAD, ath_txq::mac80211_qnum, memset(), NULL, ath_softc::sc_ah, subtype, ath9k_tx_queue_info::tqi_aifs, ath9k_tx_queue_info::tqi_cwmax, ath9k_tx_queue_info::tqi_cwmin, ath9k_tx_queue_info::tqi_physCompBuf, ath9k_tx_queue_info::tqi_qflags, ath9k_tx_queue_info::tqi_subtype, ath_softc::tx, ath_tx::txq, ath_txq::txq_fifo, ath_txq::txq_fifo_pending, TXQ_FLAG_TXDESCINT_ENABLE, TXQ_FLAG_TXEOLINT_ENABLE, ath_txq::txq_headidx, ath_txq::txq_tailidx, ath_tx::txqsetup, and WME_AC_BE.
Referenced by ath9k_init_queues().
Definition at line 181 of file ath9k_xmit.c.
References __unused, ath_tx_complete_buf(), ath_tx_return_buffer(), ath_txq::axq_depth, ath_txq::axq_link, ath_txq::axq_q, ath_txq::axq_tx_inprogress, ath_buf::bf_lastbf, ath_buf::bf_stale, INIT_LIST_HEAD, ath_buf::list, list_cut_position, list_del, list_empty, list_first_entry, memset(), and NULL.
Referenced by ath_drain_all_txq().
int ath_drain_all_txq | ( | struct ath_softc * | sc, |
int | retry_tx | ||
) |
Definition at line 216 of file ath9k_xmit.c.
References ah, ath9k_hw_abort_tx_dma(), ath9k_hw_numtxpending(), ATH9K_NUM_TX_QUEUES, ath_draintxq(), ATH_TXQ_SETUP, ath_txq::axq_qnum, DBG, ath_softc::sc_ah, ath_softc::sc_flags, SC_OP_INVALID, ath_txq::stopped, ath_softc::tx, and ath_tx::txq.
Referenced by ath9k_stop(), ath_radio_disable(), ath_reset(), and ath_set_channel().
Definition at line 255 of file ath9k_xmit.c.
References ath9k_hw_releasetxqueue(), ath_txq::axq_qnum, ath_softc::sc_ah, ath_softc::tx, and ath_tx::txqsetup.
Referenced by ath9k_deinit_softc(), and ath9k_init_softc().
Definition at line 264 of file ath9k_xmit.c.
References ath_atx_tid::ac, ATH_AGGR_MIN_QDEPTH, ath_tx_queue_tid(), ath_txq::axq_acq, ath_txq::axq_ampdu_depth, ath_atx_ac::list, ath_atx_tid::list, list_add_tail, list_del, list_empty, list_entry, list_first_entry, list_for_each_entry_safe, list_head::prev, ath_atx_ac::sched, tid, and ath_atx_ac::tid_q.
Referenced by ath_tx_processq().
|
static |
Definition at line 381 of file ath9k_xmit.c.
References ATH9K_PKT_TYPE_BEACON, ATH9K_PKT_TYPE_NORMAL, ATH9K_PKT_TYPE_PROBE_RESP, io_buffer::data, fc, hdr, IEEE80211_FC_SUBTYPE, IEEE80211_FC_TYPE, IEEE80211_STYPE_BEACON, IEEE80211_STYPE_PROBE_RESP, IEEE80211_TYPE_MGMT, and if().
Referenced by ath_tx_setup_buffer().
|
static |
Definition at line 400 of file ath9k_xmit.c.
References ATH9K_TXDESC_INTREQ, and flags.
Referenced by ath_tx_setup_buffer().
Definition at line 409 of file ath9k_xmit.c.
References ah, CHANNEL_5GHZ, ath9k_channel::channelFlags, ath_softc::sc_ah, ath_softc::sc_flags, and SC_OP_ENABLE_APM.
Referenced by ath_buf_set_rate().
|
static |
Definition at line 498 of file ath9k_xmit.c.
References ah, net80211_crypto::algorithm, ath9k_hw_filltxdesc(), ath9k_hw_set11n_txdesc(), ath9k_hw_set_desc_link(), ATH9K_KEY_TYPE_AES, ATH9K_KEY_TYPE_CLEAR, ATH9K_KEY_TYPE_TKIP, ATH9K_KEY_TYPE_WEP, ATH9K_TXKEYIX_INVALID, ath_tx_get_buffer(), ATH_TXBUF_RESET, ath_txq::axq_qnum, ath_buf::bf_buf_addr, ath_buf::bf_desc, ath_buf::bf_flags, ath_buf::bf_mpdu, net80211_device::crypto, io_buffer::data, DBG, ath_softc::dev, ds, FCS_LEN, get_hw_packet_type(), iob_len(), MAX_RATE_POWER, NET80211_CRYPT_CCMP, NET80211_CRYPT_NONE, NET80211_CRYPT_TKIP, NET80211_CRYPT_UNKNOWN, NET80211_CRYPT_WEP, NULL, net80211_device::priv, ath_softc::sc_ah, setup_tx_flags(), and virt_to_bus().
Referenced by ath_tx_start().
|
static |
Definition at line 549 of file ath9k_xmit.c.
References ath9k_hw_set_clrdmask(), ath_tx_send_normal(), ath_buf::bf_desc, ath_buf::bf_state, ath_buf_state::bfs_paprd, ath_buf_state::bfs_paprd_timestamp, currticks(), INIT_LIST_HEAD, ath_buf::list, list_add_tail, NULL, ath_tx_control::paprd, ath_softc::sc_ah, TICKS_PER_SEC, tid, and ath_tx_control::txq.
Referenced by ath_tx_start().
int ath_tx_start | ( | struct net80211_device * | dev, |
struct io_buffer * | iob, | ||
struct ath_tx_control * | txctl | ||
) |
Definition at line 569 of file ath9k_xmit.c.
References ATH_MAX_QDEPTH, ath_tx_setup_buffer(), ath_tx_start_dma(), ath_softc::dev, ENOMEM, ath_txq::pending_frames, net80211_device::priv, ath_txq::stopped, ath_softc::tx, ath_tx_control::txq, and ath_tx::txq_map.
Referenced by ath9k_tx().
|
static |
Definition at line 601 of file ath9k_xmit.c.
References __unused, ATH9K_TXERR_MASK, ATH_MAX_QDEPTH, DBGIO, ath_softc::dev, EIO, net80211_tx_complete(), ath_txq::pending_frames, ath_txq::stopped, ath_tx_status::ts_longretry, ath_tx_status::ts_status, ath_softc::tx, and ath_tx::txq_map.
Referenced by ath_tx_complete_buf().
Definition at line 656 of file ath9k_xmit.c.
References ah, ath9k_hw_gettxbuf(), ath9k_hw_txprocdesc(), ATH9K_TXERR_MASK, ATH9K_TXERR_XRETRY, ath_tx_complete_buf(), ath_tx_return_buffer(), ath_txq_schedule(), ath_txq::axq_depth, ath_txq::axq_link, ath_txq::axq_q, ath_txq::axq_qnum, ath_txq::axq_tx_inprogress, ath_buf::bf_desc, ath_buf::bf_lastbf, ath_buf::bf_stale, ath_buf::bf_state, ath_buf_state::bf_type, BUF_XRETRY, DBGIO, ds, EINPROGRESS, INIT_LIST_HEAD, ath_buf::list, list_cut_position, list_del, list_empty, list_entry, list_first_entry, list_is_last, list_is_singular, memset(), list_head::next, NULL, list_head::prev, ath_softc::sc_ah, ath_softc::sc_flags, SC_OP_TXAGGR, status, and ath_tx_status::ts_status.
Referenced by ath_tx_tasklet().
|
static |
Definition at line 741 of file ath9k_xmit.c.
References ATH9K_NUM_TX_QUEUES, ath_reset(), ATH_TX_COMPLETE_POLL_INT, ATH_TXQ_SETUP, ath_txq::axq_depth, ath_txq::axq_tx_inprogress, currticks(), DBG, TICKS_PER_SEC, ath_softc::tx, ath_softc::tx_complete_work_timer, and ath_tx::txq.
Referenced by ath_tx_init().
void ath_tx_tasklet | ( | struct ath_softc * | sc | ) |
Definition at line 771 of file ath9k_xmit.c.
References ath9k_hw_gettxintrtxqs(), ATH9K_NUM_TX_QUEUES, ath_tx_processq(), ATH_TXQ_SETUP, ath_softc::sc_ah, ath_softc::tx, and ath_tx::txq.
Referenced by ath9k_tasklet().
int ath_tx_init | ( | struct ath_softc * | sc, |
int | nbufs | ||
) |
Definition at line 788 of file ath9k_xmit.c.
References ath_descdma_setup(), ath_tx_cleanup(), ath_tx_complete_poll_work(), DBG, error, ath_softc::tx, ath_softc::tx_complete_work, ath_tx::txbuf, and ath_tx::txdma.
Referenced by ath9k_init_device().
void ath_tx_cleanup | ( | struct ath_softc * | sc | ) |
Definition at line 809 of file ath9k_xmit.c.
References ath_descdma_cleanup(), ath_descdma::dd_desc_len, ath_softc::tx, ath_tx::txbuf, and ath_tx::txdma.
Referenced by ath9k_deinit_device(), ath9k_init_device(), and ath_tx_init().