Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88883c98 authored by spuligil's avatar spuligil Committed by Madan Koyyalamudi
Browse files

fw-api: CL 14406414 - update fw common interface files

add HTT_T2H_MSG_TYPE_MLO_PEER_MAP msg def

Change-Id: Ie883a64a587086063759645488e593eb35748889
CRs-Fixed: 2262693
parent 542314b9
Loading
Loading
Loading
Loading
+324 −1
Original line number Diff line number Diff line
@@ -212,9 +212,10 @@
 * 3.88 Add HTT_H2T_MSG_TYPE_HOST_PADDR_SIZE def.
 * 3.89 Add MSDU queue enumerations.
 * 3.90 Add HTT_T2H_MSG_TYPE_MLO_TIMESTAMP_OFFSET_IND def.
 * 3.91 Add TT_T2H_MSG_TYPE_MLO_RX_PEER_MAP, _UNMAP defs.
 */
#define HTT_CURRENT_VERSION_MAJOR 3
#define HTT_CURRENT_VERSION_MINOR 90
#define HTT_CURRENT_VERSION_MINOR 91
#define HTT_NUM_TX_FRAG_DESC  1024
@@ -7052,6 +7053,8 @@ enum htt_t2h_msg_type {
    HTT_T2H_MSG_TYPE_CHAN_CALDATA             = 0x26,
    HTT_T2H_MSG_TYPE_FSE_CMEM_BASE_SEND       = 0x27,
    HTT_T2H_MSG_TYPE_MLO_TIMESTAMP_OFFSET_IND = 0x28,
    HTT_T2H_MSG_TYPE_MLO_RX_PEER_MAP          = 0x29,
    HTT_T2H_MSG_TYPE_MLO_RX_PEER_UNMAP        = 0x2a,
    HTT_T2H_MSG_TYPE_TEST,
@@ -9742,6 +9745,326 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
#define HTT_RX_PEER_UNMAP_V2_BYTES 28
/**
 * @brief target -> host rx peer mlo map message definition
 *
 * MSG_TYPE => HTT_T2H_MSG_TYPE_MLO_RX_PEER_MAP
 *
 * @details
 * The following diagram shows the format of the rx mlo peer map message sent
 * from the target to the host.  This layout assumes the target operates
 * as little-endian.
 *
 * MCC:
 * One HTT_MLO_PEER_MAP is sent after PEER_ASSOC received on first LINK for both STA and SAP.
 *
 * WIN:
 * One HTT_MLO_PEER_MAP is sent after peers are created on all the links for both AP and STA.
 * It will be sent on the Assoc Link.
 *
 * This message always contains a MLO peer ID.  The main purpose of the
 * MLO peer ID is to tell the host what peer ID rx packets will be tagged
 * with, so that the host can use that MLO peer ID to determine which peer
 * transmitted the rx frame.
 *
 * |31   |29  27|26   24|23   20|19 17|16|15              8|7               0|
 * |-------------------------------------------------------------------------|
 * |RSVD | PRC  |NUMLINK|           MLO peer ID            |     msg type    |
 * |-------------------------------------------------------------------------|
 * |    MAC addr 3      |  MAC addr 2    |    MAC addr 1   |    MAC addr 0   |
 * |-------------------------------------------------------------------------|
 * |  RSVD_16_31                         |    MAC addr 5   |    MAC addr 4   |
 * |-------------------------------------------------------------------------|
 * |CACHE_SET_NUM|  TIDMASK     |CHIPID|V|    Primary TCL AST IDX  0         |
 * |-------------------------------------------------------------------------|
 * |CACHE_SET_NUM|  TIDMASK     |CHIPID|V|    Primary TCL AST IDX  1         |
 * |-------------------------------------------------------------------------|
 * |CACHE_SET_NUM|  TIDMASK     |CHIPID|V|    Primary TCL AST IDX  2         |
 * |-------------------------------------------------------------------------|
 * |RSVD                                                                     |
 * |-------------------------------------------------------------------------|
 * |RSVD                                                                     |
 * |-------------------------------------------------------------------------|
 * |    htt_tlv_hdr_t                                                        |
 * |-------------------------------------------------------------------------|
 * |RSVD_27_31   |CHIPID|  VDEVID        |   SW peer ID                      |
 * |-------------------------------------------------------------------------|
 * |    htt_tlv_hdr_t                                                        |
 * |-------------------------------------------------------------------------|
 * |RSVD_27_31   |CHIPID|  VDEVID        |   SW peer ID                      |
 * |-------------------------------------------------------------------------|
 * |    htt_tlv_hdr_t                                                        |
 * |-------------------------------------------------------------------------|
 * |RSVD_27_31   |CHIPID|  VDEVID        |   SW peer ID                      |
 * |-------------------------------------------------------------------------|
 *
 * Where:
 *      PRC - Primary REO CHIPID        - 3 Bits Bit24,25,26
 *      NUMLINK - NUM_LOGICAL_LINKS     - 3 Bits Bit27,28,29
 *      V (valid)                       - 1 Bit  Bit17
 *      CHIPID                          - 3 Bits
 *      TIDMASK                         - 8 Bits
 *      CACHE_SET_NUM                   - 8 Bits
 *
 * The following field definitions describe the format of the rx MLO peer map
 * messages sent from the target to the host.
 *   - MSG_TYPE
 *     Bits 7:0
 *     Purpose: identifies this as an rx mlo peer map message
 *     Value: 0x29 (HTT_T2H_MSG_TYPE_MLO_RX_PEER_MAP)
 *
 *   - MLO_PEER_ID
 *     Bits 23:8
 *     Purpose: The MLO peer ID (index).
 *         For MCC, FW will allocate it. For WIN, Host will allocate it.
 *     Value: MLO peer ID
 *
 *   - NUMLINK
 *     Bits: 26:24  (3Bits)
 *     Purpose: Indicate the max number of logical links supported per client.
 *     Value: number of logical links
 *
 *   - PRC
 *     Bits: 29:27  (3Bits)
 *     Purpose: Indicate the Primary REO CHIPID. The ID can be used to indicate
 *         if there is migration of the primary chip.
 *     Value: Primary REO CHIPID
 *
 *   - MAC_ADDR_L32
 *     Bits 31:0
 *     Purpose: Identifies which mlo peer node the mlo peer ID is for.
 *     Value: lower 4 bytes of peer node's MAC address
 *
 *   - MAC_ADDR_U16
 *     Bits 15:0
 *     Purpose: Identifies which peer node the peer ID is for.
 *     Value: upper 2 bytes of peer node's MAC address
 *
 *   - PRIMARY_TCL_AST_IDX
 *     Bits 15:0
 *     Purpose: Primary TCL AST index for this peer.
 *
 *   - V
 *     1 Bit Position 16
 *     Purpose: If the ast idx is valid.
 *
 *   - CHIPID
 *     Bits 19:17
 *     Purpose: Identifies which chip id of PRIMARY_TCL_AST_IDX
 *
 *   - TIDMASK
 *     Bits 27:20
 *     Purpose: LINK to TID mapping for PRIMARY_TCL_AST_IDX
 *
 *   - CACHE_SET_NUM
 *     Bits 31:28
 *     Purpose:  Cache Set Number for PRIMARY_TCL_AST_IDX
 *         Cache set number that should be used to cache the index based
 *         search results, for address and flow search.
 *         This value should be equal to LSB four bits of the hash value
 *         of match data, in case of search index points to an entry which
 *         may be used in content based search also. The value can be
 *         anything when the entry pointed by search index will not be
 *         used for content based search.
 *
 *   - htt_tlv_hdr_t
 *      Purpose: Provide link specific chip,vdev and sw_peer IDs
 *
 *      Bits 11:0
 *      Purpose: tag equal to MLO_PEER_MAP_TLV_STRUCT_SOC_VDEV_PEER_IDS.
 *
 *      Bits 23:12
 *      Purpose: Length, Length of the value that follows the header
 *
 *      Bits 31:28
 *      Purpose: Reserved.
 *
 *
 *   - SW_PEER_ID
 *     Bits 15:0
 *     Purpose: The peer ID (index) that WAL is allocating
 *     Value: (rx) peer ID
 *
 *   - VDEV_ID
 *     Bits 23:16
 *     Purpose: Indicates which virtual device the peer is associated with.
 *     Value: vdev ID (used in the host to look up the vdev object)
 *
 *   - CHIPID
 *     Bits 26:24
 *     Purpose: Indicates which Chip id the peer is associated with.
 *     Value: chip ID (Provided by Host as part of QMI exchange)
 */
typedef enum {
    MLO_PEER_MAP_TLV_STRUCT_SOC_VDEV_PEER_IDS,
} MLO_PEER_MAP_TLV_TAG_ID;
#define HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_M               0x00ffff00
#define HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_S               8
#define HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_M         0x07000000
#define HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_S         24
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_M           0x38000000
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_S           27
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_L32_M              0xffffffff
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_L32_S              0
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_U16_M              0x0000ffff
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_U16_S              0
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_M         0x0000ffff
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_S         0
#define HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_M      0x00010000
#define HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_S      16
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_M         0x000E0000
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_S         17
#define HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_M         0x00F00000
#define HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_S         20
#define HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_M   0xF0000000
#define HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_S   28
#define HTT_RX_MLO_PEER_MAP_TLV_TAG_M                   0x00000fff
#define HTT_RX_MLO_PEER_MAP_TLV_TAG_S                   0
#define HTT_RX_MLO_PEER_MAP_TLV_LENGTH_M                0x00fff000
#define HTT_RX_MLO_PEER_MAP_TLV_LENGTH_S                12
#define HTT_RX_MLO_PEER_MAP_SW_PEER_ID_M                0x0000ffff
#define HTT_RX_MLO_PEER_MAP_SW_PEER_ID_S                0
#define HTT_RX_MLO_PEER_MAP_VDEV_ID_M                   0x00ff0000
#define HTT_RX_MLO_PEER_MAP_VDEV_ID_S                   16
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_M                   0x07000000
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_S                   24
#define HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_SET(word, value)           \
    do {                                                           \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_MLO_PEER_ID, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_M) >> HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_S)
#define HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_SET(word, value)           \
    do {                                                                 \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_M) >> HTT_RX_MLO_PEER_MAP_NUM_LOGICAL_LINKS_S)
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_SET(word, value)           \
    do {                                                               \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_GET(word) \
    (((word) & HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_M) >> HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_S)
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_SET(word, value)           \
    do {                                                                   \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_M) >> HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_S)
#define HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_SET(word, value)           \
    do {                                                                      \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_M) >> HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_S)
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_SET(word, value)           \
    do {                                                                   \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_M) >> HTT_RX_MLO_PEER_MAP_CHIP_ID_AST_INDEX_S)
#define HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_SET(word, value)           \
    do {                                                                   \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_M) >> HTT_RX_MLO_PEER_MAP_TIDMASK_AST_INDEX_S)
#define HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_SET(word, value)           \
    do {                                                                         \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_M) >> HTT_RX_MLO_PEER_MAP_CACHE_SET_NUM_AST_INDEX_S)
#define HTT_RX_MLO_PEER_MAP_TLV_TAG_SET(word, value)           \
    do {                                                        \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_TLV_TAG, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_TLV_TAG_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_TLV_TAG_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_TLV_TAG_M) >> HTT_RX_MLO_PEER_MAP_TLV_TAG_S)
#define HTT_RX_MLO_PEER_MAP_TLV_LENGTH_SET(word, value)           \
    do {                                                           \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_TLV_LENGTH, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_TLV_LENGTH_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_TLV_LENGTH_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_TLV_LENGTH_M) >> HTT_RX_MLO_PEER_MAP_TLV_LENGTH_S)
#define HTT_RX_MLO_PEER_MAP_SW_PEER_ID_SET(word, value)           \
    do {                                                           \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_SW_PEER_ID, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_SW_PEER_ID_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_SW_PEER_ID_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_SW_PEER_ID_M) >> HTT_RX_MLO_PEER_MAP_SW_PEER_ID_S)
#define HTT_RX_MLO_PEER_MAP_VDEV_ID_SET(word, value)           \
    do {                                                       \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_VDEV_ID, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_VDEV_ID_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_VDEV_ID_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_VDEV_ID_M) >> HTT_RX_MLO_PEER_MAP_VDEV_ID_S)
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_SET(word, value)           \
    do {                                                       \
        HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_CHIP_ID, value); \
        (word) |= (value)  << HTT_RX_MLO_PEER_MAP_CHIP_ID_S;   \
    } while (0)
#define HTT_RX_MLO_PEER_MAP_CHIP_ID_GET(word) \
    (((word) & HTT_RX_MLO_PEER_MAP_CHIP_ID_M) >> HTT_RX_MLO_PEER_MAP_CHIP_ID_S)
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_OFFSET                  4  /* bytes */
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_0_OFFSET      12  /* bytes */
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_1_OFFSET      16  /* bytes */
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_2_OFFSET      20  /* bytes */
#define HTT_RX_MLO_PEER_MAP_TLV_OFFSET                      32  /* bytes */
#define HTT_RX_MLO_PEER_MAP_FIXED_BYTES 8*4 /* 8 Dwords. Does not include the TLV header and the TLV */
/* MSG_TYPE => HTT_T2H_MSG_TYPE_MLO_RX_PEER_UNMAP
*
* The following diagram shows the format of the rx mlo peer unmap message sent
* from the target to the host.
*
* |31             24|23             16|15              8|7               0|
* |-----------------------------------------------------------------------|
* | RSVD_24_31      |     MLO peer ID                   |     msg type    |
* |-----------------------------------------------------------------------|
*/
#define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_M      HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_M
#define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_S      HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_S
#define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_SET    HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_SET
#define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_GET    HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_GET
/**
 * @brief target -> host message specifying security parameters