diff --git a/fw/htt.h b/fw/htt.h index d17e69e633b6..1e858d9815ef 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -5609,6 +5609,32 @@ enum htt_srng_ring_id { * by host. 1 -> subscribed * - b`11 - mo_ndp: Flag to indicate MO NDP status tlv is subscribed * by host. 1 -> subscribed + * - b`12 - fp_phy_err: Flag to indicate FP PHY status tlv is + * subscribed by host. 1 -> subscribed + * - b`13:14 - fp_phy_err_buf_src: This indicates the source ring + * selection for the FP PHY ERR status tlv. + * 0 - wbm2rxdma_buf_source_ring + * 1 - fw2rxdma_buf_source_ring + * 2 - sw2rxdma_buf_source_ring + * 3 - no_buffer_ring + * - b`15:16 - fp_phy_err_buf_dest: This indicates the destination ring + * selection for the FP PHY ERR status tlv. + * 0 - rxdma_release_ring + * 1 - rxdma2fw_ring + * 2 - rxdma2sw_ring + * 3 - rxdma2reo_ring + * dword12 - b'0:31 - phy_err_mask: This field is to select the fp phy errors + * which have to be posted to host from phy. + * Corresponding to errors defined in + * phyrx_abort_request_reason enums 0 to 31. + * Refer to RXPCU register definition header files for the + * phyrx_abort_request_reason enum definition. + * dword13 - b'0:31 - phy_err_mask_cont: This field is to select the fp phy + * errors which have to be posted to host from phy. + * Corresponding to errors defined in + * phyrx_abort_request_reason enums 32 to 63. + * Refer to RXPCU register definition header files for the + * phyrx_abort_request_reason enum definition. */ PREPACK struct htt_rx_ring_selection_cfg_t { A_UINT32 msg_type: 8, @@ -5637,7 +5663,12 @@ PREPACK struct htt_rx_ring_selection_cfg_t { A_UINT32 rx_drop_threshold: 10, fp_ndp: 1, mo_ndp: 1, - rsvd4: 20; + fp_phy_err: 1, + fp_phy_err_buf_src: 2, + fp_phy_err_buf_dest: 2, + rsvd4: 15; + A_UINT32 phy_err_mask; + A_UINT32 phy_err_mask_cont; } POSTPACK; #define HTT_RX_RING_SELECTION_CFG_SZ (sizeof(struct htt_rx_ring_selection_cfg_t)) @@ -5884,6 +5915,61 @@ PREPACK struct htt_rx_ring_selection_cfg_t { ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_MO_NDP_S)); \ } while (0) +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_M 0x00001000 +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_S 12 +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_M) >> \ + HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_S) +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_M 0x00006000 +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_S 13 +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_M) >> \ + HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_S) +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_SRC_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_M 0x00018000 +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_S 15 +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_M) >> \ + HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_S) +#define HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_FP_PHY_ERR_BUF_DEST_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_M 0xffffffff +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_S 0 +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_M) >> \ + HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_S) +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_S)); \ + } while (0) + +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_M 0xffffffff +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_S 0 +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_GET(_var) \ + (((_var) & HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_M) >> \ + HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_S) +#define HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT, _val); \ + ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PHY_ERR_MASK_CONT_S)); \ + } while (0) + /* * Subtype based MGMT frames enable bits.