Lines Matching +full:mu +full:- +full:side +full:- +full:b

1 /* SPDX-License-Identifier: ISC */
3 * Copyright (c) 2005-2011 Atheros Communications Inc.
4 * Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
28 /* bits 5-23 currently reserved */
33 enum htt_h2t_msg_type { /* host-to-target */
56 u8 pad[sizeof(u32) - sizeof(struct htt_cmd_hdr)];
73 * but the host shall use the bit-mast + bit-shift defs, to be endian-
175 * htt_data_tx_desc - used for data tx path
178 * ext_tid: for qos-data frames (0-15), see %HTT_DATA_TX_EXT_TID_
240 #define HTT_RX_RING_FILL_LEVEL (((HTT_RX_RING_SIZE) / 2) - 1)
241 #define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1)
246 __le16 rx_ring_len; /* in 4-byte words */
247 __le16 rx_ring_bufsize; /* rx skb size - in bytes */
251 /* the following offsets are in 4-byte units */
267 __le16 rx_ring_len; /* in 4-byte words */
268 __le16 rx_ring_bufsize; /* rx skb size - in bytes */
272 /* the following offsets are in 4-byte units */
301 * htt_stats_req - request target to send specified statistics
305 * so make sure its little-endian.
307 * so make sure its little-endian.
310 * @cookie_lsb: used for confirmation message from target->host
331 * htt_oob_sync_req - request out-of-band sync
334 * HTT host-to-target messages until some other target agent locally
339 * This allows other host-target components to synchronize their operation
346 * The HTT target FW will suspend its host->target message processing as long
347 * as 0 < (in-band sync counter - out-of-band sync counter) & 0xff < 128.
373 u8 pad[sizeof(u32) - sizeof(struct htt_cmd_hdr)];
390 /*=== target -> host messages ===============================================*/
537 * htt_resp_hdr - header for target-to-host messages
549 /* htt_ver_resp - response sent for htt_ver_req */
690 /* Non-data in promiscuous mode */
766 ptr += sizeof(rx_ind->hdr) in htt_rx_ind_get_mpdu_ranges()
767 + sizeof(rx_ind->ppdu) in htt_rx_ind_get_mpdu_ranges()
768 + sizeof(rx_ind->prefix) in htt_rx_ind_get_mpdu_ranges()
769 + roundup(__le16_to_cpu(rx_ind->prefix.fw_rx_desc_bytes), 4); in htt_rx_ind_get_mpdu_ranges()
778 ptr += sizeof(rx_ind->hdr) in htt_rx_ind_get_mpdu_ranges_hl()
779 + sizeof(rx_ind->ppdu) in htt_rx_ind_get_mpdu_ranges_hl()
780 + sizeof(rx_ind->prefix) in htt_rx_ind_get_mpdu_ranges_hl()
781 + sizeof(rx_ind->fw_desc); in htt_rx_ind_get_mpdu_ranges_hl()
791 * htt_rx_flush - discard or reorder given range of mpdus
794 * [seq_num_start, seq_num_end-1] are valid.
916 * @brief target -> host TX completion indication message definition
923 * |-------------------------------------------------------------|
925 * |-------------------------------------------------------------|
927 * |-------------------------------------------------------------|
929 * |-------------------------------------------------------------|
931 * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
933 * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
935 * |-------------------------------------------------------------|
937 * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
938 * -msg_type
941 * -status
945 * -tid
950 * -tid_invalid
954 * -num
958 * -A0 = append
963 * -A1 = append1
968 * -TP = MSDU tx power presence
972 * The order of the per-MSDU tx power reports matches the order
975 * -A2 = append2
978 * TX_COMP_IND message. The order of the per-MSDU ACK RSSI report
1023 u32 num_enqued; /* 1 for non-AMPDU */
1130 * target -> host test message definition
1134 * The message consists of a 4-octet header, followed by a variable
1135 * number of 32-bit integer values, followed by a variable number
1136 * of 8-bit character values.
1139 * |-----------------------------------------------------------|
1141 * |-----------------------------------------------------------|
1143 * |-----------------------------------------------------------|
1145 * |-----------------------------------------------------------|
1147 * |-----------------------------------------------------------|
1149 * |-----------------------------------------------------------|
1151 * |-----------------------------------------------------------|
1152 * - MSG_TYPE
1156 * - NUM_INTS
1158 * Purpose: indicate how many 32-bit integers follow the message header
1159 * - NUM_CHARS
1161 * Purpose: indicate how many 8-bit characters follow the series of integers
1169 * b) num_chars * sizeof(u8) aligned to 4bytes
1176 return (__le32 *)rx_test->payload; in htt_rx_test_get_ints()
1181 return rx_test->payload + (rx_test->num_ints * sizeof(__le32)); in htt_rx_test_get_chars()
1185 * target -> host packet log message
1189 * The message consists of a 4-octet header,followed by a variable number
1190 * of 32-bit character values.
1193 * |-----------------------------------------------------------|
1195 * |-----------------------------------------------------------|
1197 * |-----------------------------------------------------------|
1198 * - MSG_TYPE
1212 /* MPDUs received in-order */
1227 /* MPDUs dropped due to monitor mode non-data packet */
1320 /* Cnts any change in ring routing mid-ppdu */
1326 /* Extra frags on rings 0-3 */
1349 /* Number of mpdu errors - FCS, MIC, ENC etc. */
1375 * htt_dbg_stats_status -
1376 * present - The requested stats have been delivered in full.
1381 * partial - The requested stats have been delivered in part.
1385 * error - The requested stats could not be delivered, for example due
1388 * invalid - The requested stat type is either not recognized, or the
1390 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1391 * series_done - This special value indicates that no further stats info
1404 * target -> host statistics upload
1408 * The message contains a cookie echoed from the HTT host->target stats
1410 * for, and a series of tag-length-value stats information elements.
1411 * The tag-length header for each stats info element also includes a
1420 * |------------------------------------------------------------|
1422 * |------------------------------------------------------------|
1424 * |------------------------------------------------------------|
1426 * |------------------------------------------------------------|
1428 * |------------------------------------------------------------|
1430 * | type-specific stats info |
1432 * |------------------------------------------------------------|
1434 * |------------------------------------------------------------|
1436 * | type-specific stats info |
1438 * |------------------------------------------------------------|
1440 * |------------------------------------------------------------|
1442 * - MSG_TYPE
1446 * - COOKIE_LSBS
1448 * Purpose: Provide a mechanism to match a target->host stats confirmation
1449 * message with its preceding host->target stats request message.
1450 * Value: LSBs of the opaque cookie specified by the host-side requestor
1451 * - COOKIE_MSBS
1453 * Purpose: Provide a mechanism to match a target->host stats confirmation
1454 * message with its preceding host->target stats request message.
1455 * Value: MSBs of the opaque cookie specified by the host-side requestor
1457 * Stats Information Element tag-length header fields:
1458 * - STAT_TYPE
1463 * - STATUS
1468 * - LENGTH
1472 * that follows the element tag-length header.
1475 * subsequent stats entry header will begin on a 4-byte aligned
1509 return (void *)item + sizeof(*item) + roundup(item->length, 4); in htt_stats_conf_next_item()
1513 * host -> target FRAG DESCRIPTOR/MSDU_EXT DESC bank
1529 * |------------------------------------------------------------|
1531 * |------------------------------------------------------------|
1533 * |------------------------------------------------------------|
1535 * |------------------------------------------------------------|
1537 * |------------------------------------------------------------|
1539 * |------------------------------------------------------------|
1541 * |------------------------------------------------------------|
1543 * |------------------------------------------------------------|
1545 * - MSG_TYPE
1548 * - BANKx_BASE_ADDRESS
1552 * - BANKx_MIN_ID
1556 * - BANKx_MAX_ID
1590 * htt_q_state_conf - part of htt_frag_desc_bank_cfg for host q state config
1595 * however firmware (at least 10.4.3-00191) ignores this host
1634 * htt_q_state - shared between host and firmware via DMA
1638 * performance. This is most notably used for MU-MIMO aggregation when multiple
1639 * MU clients are connected.
1684 return (void *)&ind->records[le16_to_cpu(ind->num_records)]; in ath10k_htt_get_tx_fetch_ind_resp_ids()
1782 /* WEP: 24-bit PN */
1785 /* TKIP or CCMP: 48-bit PN */
1788 /* WAPI: 128-bit PN */
1840 /*** host side structures follow ***/
1896 * Ring of network buffer objects - This ring is
1911 * pointing to specific (re-ordered) buffers.
1920 * Ring of buffer addresses -
1939 /* size - 1 */
1949 * alloc_idx - where HTT SW has deposited empty buffers
1965 * refill_retry_timer - timer triggered when the ring is
1984 /* FIFO for storing tx done status {ack, no-ack, discard} and msdu id */
1987 /* set if host-fw communication goes haywire
2058 if (!htt->tx_ops->htt_send_rx_ring_cfg) in ath10k_htt_send_rx_ring_cfg()
2059 return -EOPNOTSUPP; in ath10k_htt_send_rx_ring_cfg()
2061 return htt->tx_ops->htt_send_rx_ring_cfg(htt); in ath10k_htt_send_rx_ring_cfg()
2066 if (!htt->tx_ops->htt_send_frag_desc_bank_cfg) in ath10k_htt_send_frag_desc_bank_cfg()
2067 return -EOPNOTSUPP; in ath10k_htt_send_frag_desc_bank_cfg()
2069 return htt->tx_ops->htt_send_frag_desc_bank_cfg(htt); in ath10k_htt_send_frag_desc_bank_cfg()
2074 if (!htt->tx_ops->htt_alloc_frag_desc) in ath10k_htt_alloc_frag_desc()
2075 return -EOPNOTSUPP; in ath10k_htt_alloc_frag_desc()
2077 return htt->tx_ops->htt_alloc_frag_desc(htt); in ath10k_htt_alloc_frag_desc()
2082 if (htt->tx_ops->htt_free_frag_desc) in ath10k_htt_free_frag_desc()
2083 htt->tx_ops->htt_free_frag_desc(htt); in ath10k_htt_free_frag_desc()
2090 return htt->tx_ops->htt_tx(htt, txmode, msdu); in ath10k_htt_tx()
2095 if (htt->tx_ops->htt_flush_tx) in ath10k_htt_flush_tx()
2096 htt->tx_ops->htt_flush_tx(htt); in ath10k_htt_flush_tx()
2101 if (!htt->tx_ops->htt_alloc_txbuff) in ath10k_htt_alloc_txbuff()
2102 return -EOPNOTSUPP; in ath10k_htt_alloc_txbuff()
2104 return htt->tx_ops->htt_alloc_txbuff(htt); in ath10k_htt_alloc_txbuff()
2109 if (htt->tx_ops->htt_free_txbuff) in ath10k_htt_free_txbuff()
2110 htt->tx_ops->htt_free_txbuff(htt); in ath10k_htt_free_txbuff()
2118 if (!htt->tx_ops->htt_h2t_aggr_cfg_msg) in ath10k_htt_h2t_aggr_cfg_msg()
2119 return -EOPNOTSUPP; in ath10k_htt_h2t_aggr_cfg_msg()
2121 return htt->tx_ops->htt_h2t_aggr_cfg_msg(htt, in ath10k_htt_h2t_aggr_cfg_msg()
2140 if (!htt->rx_ops->htt_get_rx_ring_size) in ath10k_htt_get_rx_ring_size()
2143 return htt->rx_ops->htt_get_rx_ring_size(htt); in ath10k_htt_get_rx_ring_size()
2149 if (htt->rx_ops->htt_config_paddrs_ring) in ath10k_htt_config_paddrs_ring()
2150 htt->rx_ops->htt_config_paddrs_ring(htt, vaddr); in ath10k_htt_config_paddrs_ring()
2157 if (htt->rx_ops->htt_set_paddrs_ring) in ath10k_htt_set_paddrs_ring()
2158 htt->rx_ops->htt_set_paddrs_ring(htt, paddr, idx); in ath10k_htt_set_paddrs_ring()
2163 if (!htt->rx_ops->htt_get_vaddr_ring) in ath10k_htt_get_vaddr_ring()
2166 return htt->rx_ops->htt_get_vaddr_ring(htt); in ath10k_htt_get_vaddr_ring()
2171 if (htt->rx_ops->htt_reset_paddrs_ring) in ath10k_htt_reset_paddrs_ring()
2172 htt->rx_ops->htt_reset_paddrs_ring(htt, idx); in ath10k_htt_reset_paddrs_ring()
2179 if (!htt->rx_ops->htt_rx_proc_rx_frag_ind) in ath10k_htt_rx_proc_rx_frag_ind()
2182 return htt->rx_ops->htt_rx_proc_rx_frag_ind(htt, rx, skb); in ath10k_htt_rx_proc_rx_frag_ind()
2246 #define HTT_RX_MSDU_SIZE (HTT_RX_BUF_SIZE - (int)sizeof(struct htt_rx_desc))
2259 #define HTT_MAX_CACHE_LINE_SIZE_MASK ((1 << HTT_LOG2_MAX_CACHE_LINE_SIZE) - 1)