1*5113495bSYour Name 2*5113495bSYour Name /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for any 5*5113495bSYour Name * purpose with or without fee is hereby granted, provided that the above 6*5113495bSYour Name * copyright notice and this permission notice appear in all copies. 7*5113495bSYour Name * 8*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9*5113495bSYour Name * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10*5113495bSYour Name * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11*5113495bSYour Name * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12*5113495bSYour Name * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13*5113495bSYour Name * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14*5113495bSYour Name * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15*5113495bSYour Name */ 16*5113495bSYour Name 17*5113495bSYour Name 18*5113495bSYour Name 19*5113495bSYour Name 20*5113495bSYour Name 21*5113495bSYour Name 22*5113495bSYour Name 23*5113495bSYour Name 24*5113495bSYour Name 25*5113495bSYour Name 26*5113495bSYour Name #ifndef _COEX_RX_STATUS_H_ 27*5113495bSYour Name #define _COEX_RX_STATUS_H_ 28*5113495bSYour Name #if !defined(__ASSEMBLER__) 29*5113495bSYour Name #endif 30*5113495bSYour Name 31*5113495bSYour Name #define NUM_OF_DWORDS_COEX_RX_STATUS 2 32*5113495bSYour Name 33*5113495bSYour Name #define NUM_OF_QWORDS_COEX_RX_STATUS 1 34*5113495bSYour Name 35*5113495bSYour Name 36*5113495bSYour Name struct coex_rx_status { 37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 38*5113495bSYour Name uint32_t rx_mac_frame_status : 2, // [1:0] 39*5113495bSYour Name rx_with_tx_response : 1, // [2:2] 40*5113495bSYour Name rx_rate : 5, // [7:3] 41*5113495bSYour Name rx_bw : 3, // [10:8] 42*5113495bSYour Name single_mpdu : 1, // [11:11] 43*5113495bSYour Name filter_status : 1, // [12:12] 44*5113495bSYour Name ampdu : 1, // [13:13] 45*5113495bSYour Name directed : 1, // [14:14] 46*5113495bSYour Name reserved_0 : 1, // [15:15] 47*5113495bSYour Name rx_nss : 3, // [18:16] 48*5113495bSYour Name rx_rssi : 8, // [26:19] 49*5113495bSYour Name rx_type : 3, // [29:27] 50*5113495bSYour Name retry_bit_setting : 1, // [30:30] 51*5113495bSYour Name more_data_bit_setting : 1; // [31:31] 52*5113495bSYour Name uint32_t remain_rx_packet_time : 16, // [15:0] 53*5113495bSYour Name rx_remaining_fes_time : 16; // [31:16] 54*5113495bSYour Name #else 55*5113495bSYour Name uint32_t more_data_bit_setting : 1, // [31:31] 56*5113495bSYour Name retry_bit_setting : 1, // [30:30] 57*5113495bSYour Name rx_type : 3, // [29:27] 58*5113495bSYour Name rx_rssi : 8, // [26:19] 59*5113495bSYour Name rx_nss : 3, // [18:16] 60*5113495bSYour Name reserved_0 : 1, // [15:15] 61*5113495bSYour Name directed : 1, // [14:14] 62*5113495bSYour Name ampdu : 1, // [13:13] 63*5113495bSYour Name filter_status : 1, // [12:12] 64*5113495bSYour Name single_mpdu : 1, // [11:11] 65*5113495bSYour Name rx_bw : 3, // [10:8] 66*5113495bSYour Name rx_rate : 5, // [7:3] 67*5113495bSYour Name rx_with_tx_response : 1, // [2:2] 68*5113495bSYour Name rx_mac_frame_status : 2; // [1:0] 69*5113495bSYour Name uint32_t rx_remaining_fes_time : 16, // [31:16] 70*5113495bSYour Name remain_rx_packet_time : 16; // [15:0] 71*5113495bSYour Name #endif 72*5113495bSYour Name }; 73*5113495bSYour Name 74*5113495bSYour Name 75*5113495bSYour Name /* Description RX_MAC_FRAME_STATUS 76*5113495bSYour Name 77*5113495bSYour Name RXPCU send this bit as 1 when it receives the begin of a 78*5113495bSYour Name frame from PHY, and it passes the address filter. RXPCUsend 79*5113495bSYour Name this bit as 0 when the frame ends. (on/off bit) 80*5113495bSYour Name <enum 0 ppdu_start> start of PPDU reception. 81*5113495bSYour Name For SU: Generated the first time the MPDU header passes 82*5113495bSYour Name the address filter and is destined to this STA. 83*5113495bSYour Name For MU: Generated the first time the MPDU header from any 84*5113495bSYour Name user passes the address filter and is destined to this 85*5113495bSYour Name STA. 86*5113495bSYour Name <enum 1 first_mpdu_FCS_pass> message only sent in case 87*5113495bSYour Name of A-MPDU reception. 88*5113495bSYour Name For SU: first time the FCS of an MPDU passes (and frame 89*5113495bSYour Name is destined to this device) 90*5113495bSYour Name For MU: first time the FCS of any MPDU passes (and frame 91*5113495bSYour Name is destined to this device) 92*5113495bSYour Name 93*5113495bSYour Name <enum 2 ppdu_end> receive of PPDU frame reception has 94*5113495bSYour Name finished 95*5113495bSYour Name <enum 3 ppdu_end_due_to_phy_nap> receive of PPDU frame reception 96*5113495bSYour Name has finished as it has been aborted due to PHY NAP generation 97*5113495bSYour Name 98*5113495bSYour Name <legal all> 99*5113495bSYour Name */ 100*5113495bSYour Name 101*5113495bSYour Name #define COEX_RX_STATUS_RX_MAC_FRAME_STATUS_OFFSET 0x0000000000000000 102*5113495bSYour Name #define COEX_RX_STATUS_RX_MAC_FRAME_STATUS_LSB 0 103*5113495bSYour Name #define COEX_RX_STATUS_RX_MAC_FRAME_STATUS_MSB 1 104*5113495bSYour Name #define COEX_RX_STATUS_RX_MAC_FRAME_STATUS_MASK 0x0000000000000003 105*5113495bSYour Name 106*5113495bSYour Name 107*5113495bSYour Name /* Description RX_WITH_TX_RESPONSE 108*5113495bSYour Name 109*5113495bSYour Name Field only valid when rx_mac_frame_status is first_mpdu_FCS_pass 110*5113495bSYour Name or ppdu_end. 111*5113495bSYour Name 112*5113495bSYour Name For SU: RXPCU set this bit to indicate it is expecting the 113*5113495bSYour Name TX to send a response after the receive. 114*5113495bSYour Name For MU: RXPCU set this bit to indicate it is expecting that 115*5113495bSYour Name at least for one of the users a response after the reception 116*5113495bSYour Name needs to be generated. 117*5113495bSYour Name 118*5113495bSYour Name <legal all> 119*5113495bSYour Name */ 120*5113495bSYour Name 121*5113495bSYour Name #define COEX_RX_STATUS_RX_WITH_TX_RESPONSE_OFFSET 0x0000000000000000 122*5113495bSYour Name #define COEX_RX_STATUS_RX_WITH_TX_RESPONSE_LSB 2 123*5113495bSYour Name #define COEX_RX_STATUS_RX_WITH_TX_RESPONSE_MSB 2 124*5113495bSYour Name #define COEX_RX_STATUS_RX_WITH_TX_RESPONSE_MASK 0x0000000000000004 125*5113495bSYour Name 126*5113495bSYour Name 127*5113495bSYour Name /* Description RX_RATE 128*5113495bSYour Name 129*5113495bSYour Name For SU: RXPCU send the current receive rate at the beginning 130*5113495bSYour Name of receive when rate is available from PHY. 131*5113495bSYour Name For MU: RXPCU to use the current receive rate from the first 132*5113495bSYour Name USER that triggers this TLV to be generated. 133*5113495bSYour Name 134*5113495bSYour Name Field is always valid 135*5113495bSYour Name 136*5113495bSYour Name <legal all> 137*5113495bSYour Name */ 138*5113495bSYour Name 139*5113495bSYour Name #define COEX_RX_STATUS_RX_RATE_OFFSET 0x0000000000000000 140*5113495bSYour Name #define COEX_RX_STATUS_RX_RATE_LSB 3 141*5113495bSYour Name #define COEX_RX_STATUS_RX_RATE_MSB 7 142*5113495bSYour Name #define COEX_RX_STATUS_RX_RATE_MASK 0x00000000000000f8 143*5113495bSYour Name 144*5113495bSYour Name 145*5113495bSYour Name /* Description RX_BW 146*5113495bSYour Name 147*5113495bSYour Name Actual RX bandwidth. Not SU or MU dependent. 148*5113495bSYour Name RXPCU send the current receive rate at the beginning of 149*5113495bSYour Name receive. This information is from PHY. 150*5113495bSYour Name Field is always valid 151*5113495bSYour Name 152*5113495bSYour Name <enum 0 20_mhz>20 Mhz BW 153*5113495bSYour Name <enum 1 40_mhz>40 Mhz BW 154*5113495bSYour Name <enum 2 80_mhz>80 Mhz BW 155*5113495bSYour Name <enum 3 160_mhz>160 Mhz BW 156*5113495bSYour Name <enum 4 320_mhz>320 Mhz BW 157*5113495bSYour Name <enum 5 240_mhz>240 Mhz BW 158*5113495bSYour Name */ 159*5113495bSYour Name 160*5113495bSYour Name #define COEX_RX_STATUS_RX_BW_OFFSET 0x0000000000000000 161*5113495bSYour Name #define COEX_RX_STATUS_RX_BW_LSB 8 162*5113495bSYour Name #define COEX_RX_STATUS_RX_BW_MSB 10 163*5113495bSYour Name #define COEX_RX_STATUS_RX_BW_MASK 0x0000000000000700 164*5113495bSYour Name 165*5113495bSYour Name 166*5113495bSYour Name /* Description SINGLE_MPDU 167*5113495bSYour Name 168*5113495bSYour Name For SU: Once set the Received frame is a single MPDU. This 169*5113495bSYour Name can be a non-AMPDU reception or A-MPDU reception but with 170*5113495bSYour Name an EOF bit set (VHT single AMPDU). 171*5113495bSYour Name For MU: RXPCU to base this on the first USER that triggers 172*5113495bSYour Name this TLV to be generated. 173*5113495bSYour Name <legal all> 174*5113495bSYour Name */ 175*5113495bSYour Name 176*5113495bSYour Name #define COEX_RX_STATUS_SINGLE_MPDU_OFFSET 0x0000000000000000 177*5113495bSYour Name #define COEX_RX_STATUS_SINGLE_MPDU_LSB 11 178*5113495bSYour Name #define COEX_RX_STATUS_SINGLE_MPDU_MSB 11 179*5113495bSYour Name #define COEX_RX_STATUS_SINGLE_MPDU_MASK 0x0000000000000800 180*5113495bSYour Name 181*5113495bSYour Name 182*5113495bSYour Name /* Description FILTER_STATUS 183*5113495bSYour Name 184*5113495bSYour Name 1: LMAC is interested in receiving the full packet and forward 185*5113495bSYour Name it to downstream modules. 0: LMAC is not interested in 186*5113495bSYour Name receiving the packet. 187*5113495bSYour Name 188*5113495bSYour Name In HastingsPrime based on the register bit 'COEX_RX_STATUS_NOFILTERIN,' 189*5113495bSYour Name Rx PCU will send this TLV for filtered-out packets as well, 190*5113495bSYour Name with appropriate info in the fields filter_status, AMPDU 191*5113495bSYour Name and Directed. Otherwise, and in other chips, this TLV is 192*5113495bSYour Name sent only for packets filtered in, with these fields set 193*5113495bSYour Name to zero. 194*5113495bSYour Name <legal all> 195*5113495bSYour Name */ 196*5113495bSYour Name 197*5113495bSYour Name #define COEX_RX_STATUS_FILTER_STATUS_OFFSET 0x0000000000000000 198*5113495bSYour Name #define COEX_RX_STATUS_FILTER_STATUS_LSB 12 199*5113495bSYour Name #define COEX_RX_STATUS_FILTER_STATUS_MSB 12 200*5113495bSYour Name #define COEX_RX_STATUS_FILTER_STATUS_MASK 0x0000000000001000 201*5113495bSYour Name 202*5113495bSYour Name 203*5113495bSYour Name /* Description AMPDU 204*5113495bSYour Name 205*5113495bSYour Name 1: Indicates received frame is an AMPDU0: indicates received 206*5113495bSYour Name frames in not an AMPDU 207*5113495bSYour Name 208*5113495bSYour Name In HastingsPrime based on the register bit 'COEX_RX_STATUS_NOFILTERIN,' 209*5113495bSYour Name Rx PCU will send this TLV for filtered-out packets as well, 210*5113495bSYour Name with appropriate info in the fields filter_status, AMPDU 211*5113495bSYour Name and Directed. Otherwise, and in other chips, this TLV is 212*5113495bSYour Name sent only for packets filtered in, with these fields set 213*5113495bSYour Name to zero. 214*5113495bSYour Name <legal all> 215*5113495bSYour Name */ 216*5113495bSYour Name 217*5113495bSYour Name #define COEX_RX_STATUS_AMPDU_OFFSET 0x0000000000000000 218*5113495bSYour Name #define COEX_RX_STATUS_AMPDU_LSB 13 219*5113495bSYour Name #define COEX_RX_STATUS_AMPDU_MSB 13 220*5113495bSYour Name #define COEX_RX_STATUS_AMPDU_MASK 0x0000000000002000 221*5113495bSYour Name 222*5113495bSYour Name 223*5113495bSYour Name /* Description DIRECTED 224*5113495bSYour Name 225*5113495bSYour Name 1: indicates AD1 matches our Receiver address0: indicates 226*5113495bSYour Name AD1 does not match our Receiver address 227*5113495bSYour Name 228*5113495bSYour Name In HastingsPrime based on the register bit 'COEX_RX_STATUS_NOFILTERIN,' 229*5113495bSYour Name Rx PCU will send this TLV for filtered-out packets as well, 230*5113495bSYour Name with appropriate info in the fields filter_status, AMPDU 231*5113495bSYour Name and Directed. Otherwise, and in other chips, this TLV is 232*5113495bSYour Name sent only for packets filtered in, with these fields set 233*5113495bSYour Name to zero. 234*5113495bSYour Name <legal all> 235*5113495bSYour Name */ 236*5113495bSYour Name 237*5113495bSYour Name #define COEX_RX_STATUS_DIRECTED_OFFSET 0x0000000000000000 238*5113495bSYour Name #define COEX_RX_STATUS_DIRECTED_LSB 14 239*5113495bSYour Name #define COEX_RX_STATUS_DIRECTED_MSB 14 240*5113495bSYour Name #define COEX_RX_STATUS_DIRECTED_MASK 0x0000000000004000 241*5113495bSYour Name 242*5113495bSYour Name 243*5113495bSYour Name /* Description RESERVED_0 244*5113495bSYour Name 245*5113495bSYour Name <legal 0> 246*5113495bSYour Name */ 247*5113495bSYour Name 248*5113495bSYour Name #define COEX_RX_STATUS_RESERVED_0_OFFSET 0x0000000000000000 249*5113495bSYour Name #define COEX_RX_STATUS_RESERVED_0_LSB 15 250*5113495bSYour Name #define COEX_RX_STATUS_RESERVED_0_MSB 15 251*5113495bSYour Name #define COEX_RX_STATUS_RESERVED_0_MASK 0x0000000000008000 252*5113495bSYour Name 253*5113495bSYour Name 254*5113495bSYour Name /* Description RX_NSS 255*5113495bSYour Name 256*5113495bSYour Name For SU: Number of spatial streams in the reception. Field 257*5113495bSYour Name is always valid 258*5113495bSYour Name For MU: RXPCU to base this on the first USER that triggers 259*5113495bSYour Name this TLV to be generated. 260*5113495bSYour Name 261*5113495bSYour Name <enum 0 1_spatial_stream>Single spatial stream 262*5113495bSYour Name <enum 1 2_spatial_streams>2 spatial streams 263*5113495bSYour Name <enum 2 3_spatial_streams>3 spatial streams 264*5113495bSYour Name <enum 3 4_spatial_streams>4 spatial streams 265*5113495bSYour Name <enum 4 5_spatial_streams>5 spatial streams 266*5113495bSYour Name <enum 5 6_spatial_streams>6 spatial streams 267*5113495bSYour Name <enum 6 7_spatial_streams>7 spatial streams 268*5113495bSYour Name <enum 7 8_spatial_streams>8 spatial streams 269*5113495bSYour Name */ 270*5113495bSYour Name 271*5113495bSYour Name #define COEX_RX_STATUS_RX_NSS_OFFSET 0x0000000000000000 272*5113495bSYour Name #define COEX_RX_STATUS_RX_NSS_LSB 16 273*5113495bSYour Name #define COEX_RX_STATUS_RX_NSS_MSB 18 274*5113495bSYour Name #define COEX_RX_STATUS_RX_NSS_MASK 0x0000000000070000 275*5113495bSYour Name 276*5113495bSYour Name 277*5113495bSYour Name /* Description RX_RSSI 278*5113495bSYour Name 279*5113495bSYour Name RXPCU send the current receive RSSI (from the PHYRX_RSSI_LEGACY 280*5113495bSYour Name TLV) at the beginning of reception. This is information 281*5113495bSYour Name is from PHY and is not SU or MU dependent. 282*5113495bSYour Name Field is always valid 283*5113495bSYour Name <legal all> 284*5113495bSYour Name */ 285*5113495bSYour Name 286*5113495bSYour Name #define COEX_RX_STATUS_RX_RSSI_OFFSET 0x0000000000000000 287*5113495bSYour Name #define COEX_RX_STATUS_RX_RSSI_LSB 19 288*5113495bSYour Name #define COEX_RX_STATUS_RX_RSSI_MSB 26 289*5113495bSYour Name #define COEX_RX_STATUS_RX_RSSI_MASK 0x0000000007f80000 290*5113495bSYour Name 291*5113495bSYour Name 292*5113495bSYour Name /* Description RX_TYPE 293*5113495bSYour Name 294*5113495bSYour Name For SU: RXPCU send the current receive packet type. Field 295*5113495bSYour Name is always valid.This info is from MAC. 296*5113495bSYour Name For MU: RXPCU to base this on the first USER that triggers 297*5113495bSYour Name this TLV to be generated. 298*5113495bSYour Name 299*5113495bSYour Name <enum 0 data > 300*5113495bSYour Name <enum 1 management> 301*5113495bSYour Name <enum 2 beacon> 302*5113495bSYour Name <enum 3 control> For reception of RTS frame 303*5113495bSYour Name <enum 4 control_response> For reception of CTS, ACK 304*5113495bSYour Name or BA frames 305*5113495bSYour Name <enum 5 others> 306*5113495bSYour Name <legal 0-5> 307*5113495bSYour Name */ 308*5113495bSYour Name 309*5113495bSYour Name #define COEX_RX_STATUS_RX_TYPE_OFFSET 0x0000000000000000 310*5113495bSYour Name #define COEX_RX_STATUS_RX_TYPE_LSB 27 311*5113495bSYour Name #define COEX_RX_STATUS_RX_TYPE_MSB 29 312*5113495bSYour Name #define COEX_RX_STATUS_RX_TYPE_MASK 0x0000000038000000 313*5113495bSYour Name 314*5113495bSYour Name 315*5113495bSYour Name /* Description RETRY_BIT_SETTING 316*5113495bSYour Name 317*5113495bSYour Name For SU: Value of the retry bit in the frame control field 318*5113495bSYour Name of the first MPDU MAC header that passes the RxPCU frame 319*5113495bSYour Name filter 320*5113495bSYour Name For MU: RXPCU to base this on the first USER that triggers 321*5113495bSYour Name this TLV to be generated. 322*5113495bSYour Name 323*5113495bSYour Name <legal all> 324*5113495bSYour Name */ 325*5113495bSYour Name 326*5113495bSYour Name #define COEX_RX_STATUS_RETRY_BIT_SETTING_OFFSET 0x0000000000000000 327*5113495bSYour Name #define COEX_RX_STATUS_RETRY_BIT_SETTING_LSB 30 328*5113495bSYour Name #define COEX_RX_STATUS_RETRY_BIT_SETTING_MSB 30 329*5113495bSYour Name #define COEX_RX_STATUS_RETRY_BIT_SETTING_MASK 0x0000000040000000 330*5113495bSYour Name 331*5113495bSYour Name 332*5113495bSYour Name /* Description MORE_DATA_BIT_SETTING 333*5113495bSYour Name 334*5113495bSYour Name For SU: Value of the more data bit in the frame control 335*5113495bSYour Name field of the first MPDU MAC header that passes the RxPCU 336*5113495bSYour Name frame filter 337*5113495bSYour Name For MU: RXPCU to base this on the first USER that triggers 338*5113495bSYour Name this TLV to be generated. 339*5113495bSYour Name 340*5113495bSYour Name <legal all> 341*5113495bSYour Name */ 342*5113495bSYour Name 343*5113495bSYour Name #define COEX_RX_STATUS_MORE_DATA_BIT_SETTING_OFFSET 0x0000000000000000 344*5113495bSYour Name #define COEX_RX_STATUS_MORE_DATA_BIT_SETTING_LSB 31 345*5113495bSYour Name #define COEX_RX_STATUS_MORE_DATA_BIT_SETTING_MSB 31 346*5113495bSYour Name #define COEX_RX_STATUS_MORE_DATA_BIT_SETTING_MASK 0x0000000080000000 347*5113495bSYour Name 348*5113495bSYour Name 349*5113495bSYour Name /* Description REMAIN_RX_PACKET_TIME 350*5113495bSYour Name 351*5113495bSYour Name HWSCH sends current remaining rx PPDU frame time. This time 352*5113495bSYour Name covers the entire rx_frame. This information is not in 353*5113495bSYour Name the L-SIG and we expect to get it from PHY at the start 354*5113495bSYour Name of the reception. 355*5113495bSYour Name This is not SU or MU dependent. 356*5113495bSYour Name <legal all> 357*5113495bSYour Name */ 358*5113495bSYour Name 359*5113495bSYour Name #define COEX_RX_STATUS_REMAIN_RX_PACKET_TIME_OFFSET 0x0000000000000000 360*5113495bSYour Name #define COEX_RX_STATUS_REMAIN_RX_PACKET_TIME_LSB 32 361*5113495bSYour Name #define COEX_RX_STATUS_REMAIN_RX_PACKET_TIME_MSB 47 362*5113495bSYour Name #define COEX_RX_STATUS_REMAIN_RX_PACKET_TIME_MASK 0x0000ffff00000000 363*5113495bSYour Name 364*5113495bSYour Name 365*5113495bSYour Name /* Description RX_REMAINING_FES_TIME 366*5113495bSYour Name 367*5113495bSYour Name RXPCU sends the remaining time FES time the moment a frame 368*5113495bSYour Name with proper FCS is received. The time indicated is the 369*5113495bSYour Name remaining rx packet time with the duration field value added. 370*5113495bSYour Name As long as no frame with valid FCS is received, this field 371*5113495bSYour Name should be set equal to 'remain_rx_packet_time' 372*5113495bSYour Name This is not SU or MU dependent. 373*5113495bSYour Name <legal all> 374*5113495bSYour Name */ 375*5113495bSYour Name 376*5113495bSYour Name #define COEX_RX_STATUS_RX_REMAINING_FES_TIME_OFFSET 0x0000000000000000 377*5113495bSYour Name #define COEX_RX_STATUS_RX_REMAINING_FES_TIME_LSB 48 378*5113495bSYour Name #define COEX_RX_STATUS_RX_REMAINING_FES_TIME_MSB 63 379*5113495bSYour Name #define COEX_RX_STATUS_RX_REMAINING_FES_TIME_MASK 0xffff000000000000 380*5113495bSYour Name 381*5113495bSYour Name 382*5113495bSYour Name 383*5113495bSYour Name #endif // COEX_RX_STATUS 384