0001
0002
0003
0004
0005 #ifndef ATH11K_RX_DESC_H
0006 #define ATH11K_RX_DESC_H
0007
0008 enum rx_desc_rxpcu_filter {
0009 RX_DESC_RXPCU_FILTER_PASS,
0010 RX_DESC_RXPCU_FILTER_MONITOR_CLIENT,
0011 RX_DESC_RXPCU_FILTER_MONITOR_OTHER,
0012 };
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #define RX_DESC_INFO0_RXPCU_MPDU_FITLER GENMASK(1, 0)
0029 #define RX_DESC_INFO0_SW_FRAME_GRP_ID GENMASK(8, 2)
0030
0031 enum rx_desc_sw_frame_grp_id {
0032 RX_DESC_SW_FRAME_GRP_ID_NDP_FRAME,
0033 RX_DESC_SW_FRAME_GRP_ID_MCAST_DATA,
0034 RX_DESC_SW_FRAME_GRP_ID_UCAST_DATA,
0035 RX_DESC_SW_FRAME_GRP_ID_NULL_DATA,
0036 RX_DESC_SW_FRAME_GRP_ID_MGMT_0000,
0037 RX_DESC_SW_FRAME_GRP_ID_MGMT_0001,
0038 RX_DESC_SW_FRAME_GRP_ID_MGMT_0010,
0039 RX_DESC_SW_FRAME_GRP_ID_MGMT_0011,
0040 RX_DESC_SW_FRAME_GRP_ID_MGMT_0100,
0041 RX_DESC_SW_FRAME_GRP_ID_MGMT_0101,
0042 RX_DESC_SW_FRAME_GRP_ID_MGMT_0110,
0043 RX_DESC_SW_FRAME_GRP_ID_MGMT_0111,
0044 RX_DESC_SW_FRAME_GRP_ID_MGMT_1000,
0045 RX_DESC_SW_FRAME_GRP_ID_MGMT_1001,
0046 RX_DESC_SW_FRAME_GRP_ID_MGMT_1010,
0047 RX_DESC_SW_FRAME_GRP_ID_MGMT_1011,
0048 RX_DESC_SW_FRAME_GRP_ID_MGMT_1100,
0049 RX_DESC_SW_FRAME_GRP_ID_MGMT_1101,
0050 RX_DESC_SW_FRAME_GRP_ID_MGMT_1110,
0051 RX_DESC_SW_FRAME_GRP_ID_MGMT_1111,
0052 RX_DESC_SW_FRAME_GRP_ID_CTRL_0000,
0053 RX_DESC_SW_FRAME_GRP_ID_CTRL_0001,
0054 RX_DESC_SW_FRAME_GRP_ID_CTRL_0010,
0055 RX_DESC_SW_FRAME_GRP_ID_CTRL_0011,
0056 RX_DESC_SW_FRAME_GRP_ID_CTRL_0100,
0057 RX_DESC_SW_FRAME_GRP_ID_CTRL_0101,
0058 RX_DESC_SW_FRAME_GRP_ID_CTRL_0110,
0059 RX_DESC_SW_FRAME_GRP_ID_CTRL_0111,
0060 RX_DESC_SW_FRAME_GRP_ID_CTRL_1000,
0061 RX_DESC_SW_FRAME_GRP_ID_CTRL_1001,
0062 RX_DESC_SW_FRAME_GRP_ID_CTRL_1010,
0063 RX_DESC_SW_FRAME_GRP_ID_CTRL_1011,
0064 RX_DESC_SW_FRAME_GRP_ID_CTRL_1100,
0065 RX_DESC_SW_FRAME_GRP_ID_CTRL_1101,
0066 RX_DESC_SW_FRAME_GRP_ID_CTRL_1110,
0067 RX_DESC_SW_FRAME_GRP_ID_CTRL_1111,
0068 RX_DESC_SW_FRAME_GRP_ID_UNSUPPORTED,
0069 RX_DESC_SW_FRAME_GRP_ID_PHY_ERR,
0070 };
0071
0072 enum rx_desc_decap_type {
0073 RX_DESC_DECAP_TYPE_RAW,
0074 RX_DESC_DECAP_TYPE_NATIVE_WIFI,
0075 RX_DESC_DECAP_TYPE_ETHERNET2_DIX,
0076 RX_DESC_DECAP_TYPE_8023,
0077 };
0078
0079 enum rx_desc_decrypt_status_code {
0080 RX_DESC_DECRYPT_STATUS_CODE_OK,
0081 RX_DESC_DECRYPT_STATUS_CODE_UNPROTECTED_FRAME,
0082 RX_DESC_DECRYPT_STATUS_CODE_DATA_ERR,
0083 RX_DESC_DECRYPT_STATUS_CODE_KEY_INVALID,
0084 RX_DESC_DECRYPT_STATUS_CODE_PEER_ENTRY_INVALID,
0085 RX_DESC_DECRYPT_STATUS_CODE_OTHER,
0086 };
0087
0088 #define RX_ATTENTION_INFO1_FIRST_MPDU BIT(0)
0089 #define RX_ATTENTION_INFO1_RSVD_1A BIT(1)
0090 #define RX_ATTENTION_INFO1_MCAST_BCAST BIT(2)
0091 #define RX_ATTENTION_INFO1_AST_IDX_NOT_FOUND BIT(3)
0092 #define RX_ATTENTION_INFO1_AST_IDX_TIMEDOUT BIT(4)
0093 #define RX_ATTENTION_INFO1_POWER_MGMT BIT(5)
0094 #define RX_ATTENTION_INFO1_NON_QOS BIT(6)
0095 #define RX_ATTENTION_INFO1_NULL_DATA BIT(7)
0096 #define RX_ATTENTION_INFO1_MGMT_TYPE BIT(8)
0097 #define RX_ATTENTION_INFO1_CTRL_TYPE BIT(9)
0098 #define RX_ATTENTION_INFO1_MORE_DATA BIT(10)
0099 #define RX_ATTENTION_INFO1_EOSP BIT(11)
0100 #define RX_ATTENTION_INFO1_A_MSDU_ERROR BIT(12)
0101 #define RX_ATTENTION_INFO1_FRAGMENT BIT(13)
0102 #define RX_ATTENTION_INFO1_ORDER BIT(14)
0103 #define RX_ATTENTION_INFO1_CCE_MATCH BIT(15)
0104 #define RX_ATTENTION_INFO1_OVERFLOW_ERR BIT(16)
0105 #define RX_ATTENTION_INFO1_MSDU_LEN_ERR BIT(17)
0106 #define RX_ATTENTION_INFO1_TCP_UDP_CKSUM_FAIL BIT(18)
0107 #define RX_ATTENTION_INFO1_IP_CKSUM_FAIL BIT(19)
0108 #define RX_ATTENTION_INFO1_SA_IDX_INVALID BIT(20)
0109 #define RX_ATTENTION_INFO1_DA_IDX_INVALID BIT(21)
0110 #define RX_ATTENTION_INFO1_RSVD_1B BIT(22)
0111 #define RX_ATTENTION_INFO1_RX_IN_TX_DECRYPT_BYP BIT(23)
0112 #define RX_ATTENTION_INFO1_ENCRYPT_REQUIRED BIT(24)
0113 #define RX_ATTENTION_INFO1_DIRECTED BIT(25)
0114 #define RX_ATTENTION_INFO1_BUFFER_FRAGMENT BIT(26)
0115 #define RX_ATTENTION_INFO1_MPDU_LEN_ERR BIT(27)
0116 #define RX_ATTENTION_INFO1_TKIP_MIC_ERR BIT(28)
0117 #define RX_ATTENTION_INFO1_DECRYPT_ERR BIT(29)
0118 #define RX_ATTENTION_INFO1_UNDECRYPT_FRAME_ERR BIT(30)
0119 #define RX_ATTENTION_INFO1_FCS_ERR BIT(31)
0120
0121 #define RX_ATTENTION_INFO2_FLOW_IDX_TIMEOUT BIT(0)
0122 #define RX_ATTENTION_INFO2_FLOW_IDX_INVALID BIT(1)
0123 #define RX_ATTENTION_INFO2_WIFI_PARSER_ERR BIT(2)
0124 #define RX_ATTENTION_INFO2_AMSDU_PARSER_ERR BIT(3)
0125 #define RX_ATTENTION_INFO2_SA_IDX_TIMEOUT BIT(4)
0126 #define RX_ATTENTION_INFO2_DA_IDX_TIMEOUT BIT(5)
0127 #define RX_ATTENTION_INFO2_MSDU_LIMIT_ERR BIT(6)
0128 #define RX_ATTENTION_INFO2_DA_IS_VALID BIT(7)
0129 #define RX_ATTENTION_INFO2_DA_IS_MCBC BIT(8)
0130 #define RX_ATTENTION_INFO2_SA_IS_VALID BIT(9)
0131 #define RX_ATTENTION_INFO2_DCRYPT_STATUS_CODE GENMASK(12, 10)
0132 #define RX_ATTENTION_INFO2_RX_BITMAP_NOT_UPDED BIT(13)
0133 #define RX_ATTENTION_INFO2_MSDU_DONE BIT(31)
0134
0135 struct rx_attention {
0136 __le16 info0;
0137 __le16 phy_ppdu_id;
0138 __le32 info1;
0139 __le32 info2;
0140 } __packed;
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339 #define RX_MPDU_START_INFO0_NDP_FRAME BIT(9)
0340 #define RX_MPDU_START_INFO0_PHY_ERR BIT(10)
0341 #define RX_MPDU_START_INFO0_PHY_ERR_MPDU_HDR BIT(11)
0342 #define RX_MPDU_START_INFO0_PROTO_VER_ERR BIT(12)
0343 #define RX_MPDU_START_INFO0_AST_LOOKUP_VALID BIT(13)
0344
0345 #define RX_MPDU_START_INFO1_MPDU_FCTRL_VALID BIT(0)
0346 #define RX_MPDU_START_INFO1_MPDU_DUR_VALID BIT(1)
0347 #define RX_MPDU_START_INFO1_MAC_ADDR1_VALID BIT(2)
0348 #define RX_MPDU_START_INFO1_MAC_ADDR2_VALID BIT(3)
0349 #define RX_MPDU_START_INFO1_MAC_ADDR3_VALID BIT(4)
0350 #define RX_MPDU_START_INFO1_MAC_ADDR4_VALID BIT(5)
0351 #define RX_MPDU_START_INFO1_MPDU_SEQ_CTRL_VALID BIT(6)
0352 #define RX_MPDU_START_INFO1_MPDU_QOS_CTRL_VALID BIT(7)
0353 #define RX_MPDU_START_INFO1_MPDU_HT_CTRL_VALID BIT(8)
0354 #define RX_MPDU_START_INFO1_ENCRYPT_INFO_VALID BIT(9)
0355 #define RX_MPDU_START_INFO1_MPDU_FRAG_NUMBER GENMASK(13, 10)
0356 #define RX_MPDU_START_INFO1_MORE_FRAG_FLAG BIT(14)
0357 #define RX_MPDU_START_INFO1_FROM_DS BIT(16)
0358 #define RX_MPDU_START_INFO1_TO_DS BIT(17)
0359 #define RX_MPDU_START_INFO1_ENCRYPTED BIT(18)
0360 #define RX_MPDU_START_INFO1_MPDU_RETRY BIT(19)
0361 #define RX_MPDU_START_INFO1_MPDU_SEQ_NUM GENMASK(31, 20)
0362
0363 #define RX_MPDU_START_INFO2_EPD_EN BIT(0)
0364 #define RX_MPDU_START_INFO2_ALL_FRAME_ENCPD BIT(1)
0365 #define RX_MPDU_START_INFO2_ENC_TYPE GENMASK(5, 2)
0366 #define RX_MPDU_START_INFO2_VAR_WEP_KEY_WIDTH GENMASK(7, 6)
0367 #define RX_MPDU_START_INFO2_MESH_STA BIT(8)
0368 #define RX_MPDU_START_INFO2_BSSID_HIT BIT(9)
0369 #define RX_MPDU_START_INFO2_BSSID_NUM GENMASK(13, 10)
0370 #define RX_MPDU_START_INFO2_TID GENMASK(17, 14)
0371 #define RX_MPDU_START_INFO2_TID_WCN6855 GENMASK(18, 15)
0372
0373 #define RX_MPDU_START_INFO3_REO_DEST_IND GENMASK(4, 0)
0374 #define RX_MPDU_START_INFO3_FLOW_ID_TOEPLITZ BIT(7)
0375 #define RX_MPDU_START_INFO3_PKT_SEL_FP_UCAST_DATA BIT(8)
0376 #define RX_MPDU_START_INFO3_PKT_SEL_FP_MCAST_DATA BIT(9)
0377 #define RX_MPDU_START_INFO3_PKT_SEL_FP_CTRL_BAR BIT(10)
0378 #define RX_MPDU_START_INFO3_RXDMA0_SRC_RING_SEL GENMASK(12, 11)
0379 #define RX_MPDU_START_INFO3_RXDMA0_DST_RING_SEL GENMASK(14, 13)
0380
0381 #define RX_MPDU_START_INFO4_REO_QUEUE_DESC_HI GENMASK(7, 0)
0382 #define RX_MPDU_START_INFO4_RECV_QUEUE_NUM GENMASK(23, 8)
0383 #define RX_MPDU_START_INFO4_PRE_DELIM_ERR_WARN BIT(24)
0384 #define RX_MPDU_START_INFO4_FIRST_DELIM_ERR BIT(25)
0385
0386 #define RX_MPDU_START_INFO5_KEY_ID GENMASK(7, 0)
0387 #define RX_MPDU_START_INFO5_NEW_PEER_ENTRY BIT(8)
0388 #define RX_MPDU_START_INFO5_DECRYPT_NEEDED BIT(9)
0389 #define RX_MPDU_START_INFO5_DECAP_TYPE GENMASK(11, 10)
0390 #define RX_MPDU_START_INFO5_VLAN_TAG_C_PADDING BIT(12)
0391 #define RX_MPDU_START_INFO5_VLAN_TAG_S_PADDING BIT(13)
0392 #define RX_MPDU_START_INFO5_STRIP_VLAN_TAG_C BIT(14)
0393 #define RX_MPDU_START_INFO5_STRIP_VLAN_TAG_S BIT(15)
0394 #define RX_MPDU_START_INFO5_PRE_DELIM_COUNT GENMASK(27, 16)
0395 #define RX_MPDU_START_INFO5_AMPDU_FLAG BIT(28)
0396 #define RX_MPDU_START_INFO5_BAR_FRAME BIT(29)
0397
0398 #define RX_MPDU_START_INFO6_MPDU_LEN GENMASK(13, 0)
0399 #define RX_MPDU_START_INFO6_FIRST_MPDU BIT(14)
0400 #define RX_MPDU_START_INFO6_MCAST_BCAST BIT(15)
0401 #define RX_MPDU_START_INFO6_AST_IDX_NOT_FOUND BIT(16)
0402 #define RX_MPDU_START_INFO6_AST_IDX_TIMEOUT BIT(17)
0403 #define RX_MPDU_START_INFO6_POWER_MGMT BIT(18)
0404 #define RX_MPDU_START_INFO6_NON_QOS BIT(19)
0405 #define RX_MPDU_START_INFO6_NULL_DATA BIT(20)
0406 #define RX_MPDU_START_INFO6_MGMT_TYPE BIT(21)
0407 #define RX_MPDU_START_INFO6_CTRL_TYPE BIT(22)
0408 #define RX_MPDU_START_INFO6_MORE_DATA BIT(23)
0409 #define RX_MPDU_START_INFO6_EOSP BIT(24)
0410 #define RX_MPDU_START_INFO6_FRAGMENT BIT(25)
0411 #define RX_MPDU_START_INFO6_ORDER BIT(26)
0412 #define RX_MPDU_START_INFO6_UAPSD_TRIGGER BIT(27)
0413 #define RX_MPDU_START_INFO6_ENCRYPT_REQUIRED BIT(28)
0414 #define RX_MPDU_START_INFO6_DIRECTED BIT(29)
0415
0416 #define RX_MPDU_START_RAW_MPDU BIT(0)
0417
0418 struct rx_mpdu_start_ipq8074 {
0419 __le16 info0;
0420 __le16 phy_ppdu_id;
0421 __le16 ast_index;
0422 __le16 sw_peer_id;
0423 __le32 info1;
0424 __le32 info2;
0425 __le32 pn[4];
0426 __le32 peer_meta_data;
0427 __le32 info3;
0428 __le32 reo_queue_desc_lo;
0429 __le32 info4;
0430 __le32 info5;
0431 __le32 info6;
0432 __le16 frame_ctrl;
0433 __le16 duration;
0434 u8 addr1[ETH_ALEN];
0435 u8 addr2[ETH_ALEN];
0436 u8 addr3[ETH_ALEN];
0437 __le16 seq_ctrl;
0438 u8 addr4[ETH_ALEN];
0439 __le16 qos_ctrl;
0440 __le32 ht_ctrl;
0441 __le32 raw;
0442 } __packed;
0443
0444 #define RX_MPDU_START_INFO7_REO_DEST_IND GENMASK(4, 0)
0445 #define RX_MPDU_START_INFO7_LMAC_PEER_ID_MSB GENMASK(6, 5)
0446 #define RX_MPDU_START_INFO7_FLOW_ID_TOEPLITZ BIT(7)
0447 #define RX_MPDU_START_INFO7_PKT_SEL_FP_UCAST_DATA BIT(8)
0448 #define RX_MPDU_START_INFO7_PKT_SEL_FP_MCAST_DATA BIT(9)
0449 #define RX_MPDU_START_INFO7_PKT_SEL_FP_CTRL_BAR BIT(10)
0450 #define RX_MPDU_START_INFO7_RXDMA0_SRC_RING_SEL GENMASK(12, 11)
0451 #define RX_MPDU_START_INFO7_RXDMA0_DST_RING_SEL GENMASK(14, 13)
0452
0453 #define RX_MPDU_START_INFO8_REO_QUEUE_DESC_HI GENMASK(7, 0)
0454 #define RX_MPDU_START_INFO8_RECV_QUEUE_NUM GENMASK(23, 8)
0455 #define RX_MPDU_START_INFO8_PRE_DELIM_ERR_WARN BIT(24)
0456 #define RX_MPDU_START_INFO8_FIRST_DELIM_ERR BIT(25)
0457
0458 #define RX_MPDU_START_INFO9_EPD_EN BIT(0)
0459 #define RX_MPDU_START_INFO9_ALL_FRAME_ENCPD BIT(1)
0460 #define RX_MPDU_START_INFO9_ENC_TYPE GENMASK(5, 2)
0461 #define RX_MPDU_START_INFO9_VAR_WEP_KEY_WIDTH GENMASK(7, 6)
0462 #define RX_MPDU_START_INFO9_MESH_STA GENMASK(9, 8)
0463 #define RX_MPDU_START_INFO9_BSSID_HIT BIT(10)
0464 #define RX_MPDU_START_INFO9_BSSID_NUM GENMASK(14, 11)
0465 #define RX_MPDU_START_INFO9_TID GENMASK(18, 15)
0466
0467 #define RX_MPDU_START_INFO10_RXPCU_MPDU_FLTR GENMASK(1, 0)
0468 #define RX_MPDU_START_INFO10_SW_FRAME_GRP_ID GENMASK(8, 2)
0469 #define RX_MPDU_START_INFO10_NDP_FRAME BIT(9)
0470 #define RX_MPDU_START_INFO10_PHY_ERR BIT(10)
0471 #define RX_MPDU_START_INFO10_PHY_ERR_MPDU_HDR BIT(11)
0472 #define RX_MPDU_START_INFO10_PROTO_VER_ERR BIT(12)
0473 #define RX_MPDU_START_INFO10_AST_LOOKUP_VALID BIT(13)
0474
0475 #define RX_MPDU_START_INFO11_MPDU_FCTRL_VALID BIT(0)
0476 #define RX_MPDU_START_INFO11_MPDU_DUR_VALID BIT(1)
0477 #define RX_MPDU_START_INFO11_MAC_ADDR1_VALID BIT(2)
0478 #define RX_MPDU_START_INFO11_MAC_ADDR2_VALID BIT(3)
0479 #define RX_MPDU_START_INFO11_MAC_ADDR3_VALID BIT(4)
0480 #define RX_MPDU_START_INFO11_MAC_ADDR4_VALID BIT(5)
0481 #define RX_MPDU_START_INFO11_MPDU_SEQ_CTRL_VALID BIT(6)
0482 #define RX_MPDU_START_INFO11_MPDU_QOS_CTRL_VALID BIT(7)
0483 #define RX_MPDU_START_INFO11_MPDU_HT_CTRL_VALID BIT(8)
0484 #define RX_MPDU_START_INFO11_ENCRYPT_INFO_VALID BIT(9)
0485 #define RX_MPDU_START_INFO11_MPDU_FRAG_NUMBER GENMASK(13, 10)
0486 #define RX_MPDU_START_INFO11_MORE_FRAG_FLAG BIT(14)
0487 #define RX_MPDU_START_INFO11_FROM_DS BIT(16)
0488 #define RX_MPDU_START_INFO11_TO_DS BIT(17)
0489 #define RX_MPDU_START_INFO11_ENCRYPTED BIT(18)
0490 #define RX_MPDU_START_INFO11_MPDU_RETRY BIT(19)
0491 #define RX_MPDU_START_INFO11_MPDU_SEQ_NUM GENMASK(31, 20)
0492
0493 #define RX_MPDU_START_INFO12_KEY_ID GENMASK(7, 0)
0494 #define RX_MPDU_START_INFO12_NEW_PEER_ENTRY BIT(8)
0495 #define RX_MPDU_START_INFO12_DECRYPT_NEEDED BIT(9)
0496 #define RX_MPDU_START_INFO12_DECAP_TYPE GENMASK(11, 10)
0497 #define RX_MPDU_START_INFO12_VLAN_TAG_C_PADDING BIT(12)
0498 #define RX_MPDU_START_INFO12_VLAN_TAG_S_PADDING BIT(13)
0499 #define RX_MPDU_START_INFO12_STRIP_VLAN_TAG_C BIT(14)
0500 #define RX_MPDU_START_INFO12_STRIP_VLAN_TAG_S BIT(15)
0501 #define RX_MPDU_START_INFO12_PRE_DELIM_COUNT GENMASK(27, 16)
0502 #define RX_MPDU_START_INFO12_AMPDU_FLAG BIT(28)
0503 #define RX_MPDU_START_INFO12_BAR_FRAME BIT(29)
0504 #define RX_MPDU_START_INFO12_RAW_MPDU BIT(30)
0505
0506 #define RX_MPDU_START_INFO13_MPDU_LEN GENMASK(13, 0)
0507 #define RX_MPDU_START_INFO13_FIRST_MPDU BIT(14)
0508 #define RX_MPDU_START_INFO13_MCAST_BCAST BIT(15)
0509 #define RX_MPDU_START_INFO13_AST_IDX_NOT_FOUND BIT(16)
0510 #define RX_MPDU_START_INFO13_AST_IDX_TIMEOUT BIT(17)
0511 #define RX_MPDU_START_INFO13_POWER_MGMT BIT(18)
0512 #define RX_MPDU_START_INFO13_NON_QOS BIT(19)
0513 #define RX_MPDU_START_INFO13_NULL_DATA BIT(20)
0514 #define RX_MPDU_START_INFO13_MGMT_TYPE BIT(21)
0515 #define RX_MPDU_START_INFO13_CTRL_TYPE BIT(22)
0516 #define RX_MPDU_START_INFO13_MORE_DATA BIT(23)
0517 #define RX_MPDU_START_INFO13_EOSP BIT(24)
0518 #define RX_MPDU_START_INFO13_FRAGMENT BIT(25)
0519 #define RX_MPDU_START_INFO13_ORDER BIT(26)
0520 #define RX_MPDU_START_INFO13_UAPSD_TRIGGER BIT(27)
0521 #define RX_MPDU_START_INFO13_ENCRYPT_REQUIRED BIT(28)
0522 #define RX_MPDU_START_INFO13_DIRECTED BIT(29)
0523 #define RX_MPDU_START_INFO13_AMSDU_PRESENT BIT(30)
0524
0525 struct rx_mpdu_start_qcn9074 {
0526 __le32 info7;
0527 __le32 reo_queue_desc_lo;
0528 __le32 info8;
0529 __le32 pn[4];
0530 __le32 info9;
0531 __le32 peer_meta_data;
0532 __le16 info10;
0533 __le16 phy_ppdu_id;
0534 __le16 ast_index;
0535 __le16 sw_peer_id;
0536 __le32 info11;
0537 __le32 info12;
0538 __le32 info13;
0539 __le16 frame_ctrl;
0540 __le16 duration;
0541 u8 addr1[ETH_ALEN];
0542 u8 addr2[ETH_ALEN];
0543 u8 addr3[ETH_ALEN];
0544 __le16 seq_ctrl;
0545 u8 addr4[ETH_ALEN];
0546 __le16 qos_ctrl;
0547 __le32 ht_ctrl;
0548 } __packed;
0549
0550 struct rx_mpdu_start_wcn6855 {
0551 __le32 info3;
0552 __le32 reo_queue_desc_lo;
0553 __le32 info4;
0554 __le32 pn[4];
0555 __le32 info2;
0556 __le32 peer_meta_data;
0557 __le16 info0;
0558 __le16 phy_ppdu_id;
0559 __le16 ast_index;
0560 __le16 sw_peer_id;
0561 __le32 info1;
0562 __le32 info5;
0563 __le32 info6;
0564 __le16 frame_ctrl;
0565 __le16 duration;
0566 u8 addr1[ETH_ALEN];
0567 u8 addr2[ETH_ALEN];
0568 u8 addr3[ETH_ALEN];
0569 __le16 seq_ctrl;
0570 u8 addr4[ETH_ALEN];
0571 __le16 qos_ctrl;
0572 __le32 ht_ctrl;
0573 } __packed;
0574
0575
0576
0577
0578
0579
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589
0590
0591
0592
0593
0594
0595
0596
0597
0598
0599
0600
0601
0602
0603
0604
0605
0606
0607
0608
0609
0610
0611
0612
0613
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651
0652
0653
0654
0655
0656
0657
0658
0659
0660
0661
0662
0663
0664
0665
0666
0667
0668
0669
0670
0671
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689
0690
0691
0692
0693
0694
0695
0696
0697
0698
0699
0700
0701
0702
0703
0704
0705
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737
0738
0739
0740
0741 enum rx_msdu_start_pkt_type {
0742 RX_MSDU_START_PKT_TYPE_11A,
0743 RX_MSDU_START_PKT_TYPE_11B,
0744 RX_MSDU_START_PKT_TYPE_11N,
0745 RX_MSDU_START_PKT_TYPE_11AC,
0746 RX_MSDU_START_PKT_TYPE_11AX,
0747 };
0748
0749 enum rx_msdu_start_sgi {
0750 RX_MSDU_START_SGI_0_8_US,
0751 RX_MSDU_START_SGI_0_4_US,
0752 RX_MSDU_START_SGI_1_6_US,
0753 RX_MSDU_START_SGI_3_2_US,
0754 };
0755
0756 enum rx_msdu_start_recv_bw {
0757 RX_MSDU_START_RECV_BW_20MHZ,
0758 RX_MSDU_START_RECV_BW_40MHZ,
0759 RX_MSDU_START_RECV_BW_80MHZ,
0760 RX_MSDU_START_RECV_BW_160MHZ,
0761 };
0762
0763 enum rx_msdu_start_reception_type {
0764 RX_MSDU_START_RECEPTION_TYPE_SU,
0765 RX_MSDU_START_RECEPTION_TYPE_DL_MU_MIMO,
0766 RX_MSDU_START_RECEPTION_TYPE_DL_MU_OFDMA,
0767 RX_MSDU_START_RECEPTION_TYPE_DL_MU_OFDMA_MIMO,
0768 RX_MSDU_START_RECEPTION_TYPE_UL_MU_MIMO,
0769 RX_MSDU_START_RECEPTION_TYPE_UL_MU_OFDMA,
0770 RX_MSDU_START_RECEPTION_TYPE_UL_MU_OFDMA_MIMO,
0771 };
0772
0773 #define RX_MSDU_START_INFO1_MSDU_LENGTH GENMASK(13, 0)
0774 #define RX_MSDU_START_INFO1_RSVD_1A BIT(14)
0775 #define RX_MSDU_START_INFO1_IPSEC_ESP BIT(15)
0776 #define RX_MSDU_START_INFO1_L3_OFFSET GENMASK(22, 16)
0777 #define RX_MSDU_START_INFO1_IPSEC_AH BIT(23)
0778 #define RX_MSDU_START_INFO1_L4_OFFSET GENMASK(31, 24)
0779
0780 #define RX_MSDU_START_INFO2_MSDU_NUMBER GENMASK(7, 0)
0781 #define RX_MSDU_START_INFO2_DECAP_TYPE GENMASK(9, 8)
0782 #define RX_MSDU_START_INFO2_IPV4 BIT(10)
0783 #define RX_MSDU_START_INFO2_IPV6 BIT(11)
0784 #define RX_MSDU_START_INFO2_TCP BIT(12)
0785 #define RX_MSDU_START_INFO2_UDP BIT(13)
0786 #define RX_MSDU_START_INFO2_IP_FRAG BIT(14)
0787 #define RX_MSDU_START_INFO2_TCP_ONLY_ACK BIT(15)
0788 #define RX_MSDU_START_INFO2_DA_IS_BCAST_MCAST BIT(16)
0789 #define RX_MSDU_START_INFO2_SELECTED_TOEPLITZ_HASH GENMASK(18, 17)
0790 #define RX_MSDU_START_INFO2_IP_FIXED_HDR_VALID BIT(19)
0791 #define RX_MSDU_START_INFO2_IP_EXTN_HDR_VALID BIT(20)
0792 #define RX_MSDU_START_INFO2_IP_TCP_UDP_HDR_VALID BIT(21)
0793 #define RX_MSDU_START_INFO2_MESH_CTRL_PRESENT BIT(22)
0794 #define RX_MSDU_START_INFO2_LDPC BIT(23)
0795 #define RX_MSDU_START_INFO2_IP4_IP6_NXT_HDR GENMASK(31, 24)
0796 #define RX_MSDU_START_INFO2_DECAP_FORMAT GENMASK(9, 8)
0797
0798 #define RX_MSDU_START_INFO3_USER_RSSI GENMASK(7, 0)
0799 #define RX_MSDU_START_INFO3_PKT_TYPE GENMASK(11, 8)
0800 #define RX_MSDU_START_INFO3_STBC BIT(12)
0801 #define RX_MSDU_START_INFO3_SGI GENMASK(14, 13)
0802 #define RX_MSDU_START_INFO3_RATE_MCS GENMASK(18, 15)
0803 #define RX_MSDU_START_INFO3_RECV_BW GENMASK(20, 19)
0804 #define RX_MSDU_START_INFO3_RECEPTION_TYPE GENMASK(23, 21)
0805 #define RX_MSDU_START_INFO3_MIMO_SS_BITMAP GENMASK(31, 24)
0806
0807 struct rx_msdu_start_ipq8074 {
0808 __le16 info0;
0809 __le16 phy_ppdu_id;
0810 __le32 info1;
0811 __le32 info2;
0812 __le32 toeplitz_hash;
0813 __le32 flow_id_toeplitz;
0814 __le32 info3;
0815 __le32 ppdu_start_timestamp;
0816 __le32 phy_meta_data;
0817 } __packed;
0818
0819 struct rx_msdu_start_qcn9074 {
0820 __le16 info0;
0821 __le16 phy_ppdu_id;
0822 __le32 info1;
0823 __le32 info2;
0824 __le32 toeplitz_hash;
0825 __le32 flow_id_toeplitz;
0826 __le32 info3;
0827 __le32 ppdu_start_timestamp;
0828 __le32 phy_meta_data;
0829 __le16 vlan_ctag_c1;
0830 __le16 vlan_stag_c1;
0831 } __packed;
0832
0833 struct rx_msdu_start_wcn6855 {
0834 __le16 info0;
0835 __le16 phy_ppdu_id;
0836 __le32 info1;
0837 __le32 info2;
0838 __le32 toeplitz_hash;
0839 __le32 flow_id_toeplitz;
0840 __le32 info3;
0841 __le32 ppdu_start_timestamp;
0842 __le32 phy_meta_data;
0843 __le16 vlan_ctag_ci;
0844 __le16 vlan_stag_ci;
0845 } __packed;
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917
0918
0919
0920
0921
0922
0923
0924
0925
0926
0927
0928
0929
0930
0931
0932
0933
0934
0935
0936
0937
0938
0939
0940
0941
0942
0943
0944
0945
0946
0947
0948
0949
0950
0951
0952
0953
0954
0955
0956
0957
0958
0959
0960
0961
0962
0963
0964
0965
0966
0967
0968
0969
0970
0971
0972
0973
0974
0975
0976
0977
0978
0979
0980
0981
0982
0983
0984
0985
0986
0987
0988
0989
0990
0991
0992
0993
0994
0995
0996
0997
0998
0999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020 #define RX_MSDU_END_INFO0_RXPCU_MPDU_FITLER GENMASK(1, 0)
1021 #define RX_MSDU_END_INFO0_SW_FRAME_GRP_ID GENMASK(8, 2)
1022
1023 #define RX_MSDU_END_INFO1_KEY_ID GENMASK(7, 0)
1024 #define RX_MSDU_END_INFO1_CCE_SUPER_RULE GENMASK(13, 8)
1025 #define RX_MSDU_END_INFO1_CCND_TRUNCATE BIT(14)
1026 #define RX_MSDU_END_INFO1_CCND_CCE_DIS BIT(15)
1027 #define RX_MSDU_END_INFO1_EXT_WAPI_PN GENMASK(31, 16)
1028
1029 #define RX_MSDU_END_INFO2_REPORTED_MPDU_LEN GENMASK(13, 0)
1030 #define RX_MSDU_END_INFO2_FIRST_MSDU BIT(14)
1031 #define RX_MSDU_END_INFO2_FIRST_MSDU_WCN6855 BIT(28)
1032 #define RX_MSDU_END_INFO2_LAST_MSDU BIT(15)
1033 #define RX_MSDU_END_INFO2_LAST_MSDU_WCN6855 BIT(29)
1034 #define RX_MSDU_END_INFO2_SA_IDX_TIMEOUT BIT(16)
1035 #define RX_MSDU_END_INFO2_DA_IDX_TIMEOUT BIT(17)
1036 #define RX_MSDU_END_INFO2_MSDU_LIMIT_ERR BIT(18)
1037 #define RX_MSDU_END_INFO2_FLOW_IDX_TIMEOUT BIT(19)
1038 #define RX_MSDU_END_INFO2_FLOW_IDX_INVALID BIT(20)
1039 #define RX_MSDU_END_INFO2_WIFI_PARSER_ERR BIT(21)
1040 #define RX_MSDU_END_INFO2_AMSDU_PARSET_ERR BIT(22)
1041 #define RX_MSDU_END_INFO2_SA_IS_VALID BIT(23)
1042 #define RX_MSDU_END_INFO2_DA_IS_VALID BIT(24)
1043 #define RX_MSDU_END_INFO2_DA_IS_MCBC BIT(25)
1044 #define RX_MSDU_END_INFO2_L3_HDR_PADDING GENMASK(27, 26)
1045
1046 #define RX_MSDU_END_INFO3_TCP_FLAG GENMASK(8, 0)
1047 #define RX_MSDU_END_INFO3_LRO_ELIGIBLE BIT(9)
1048
1049 #define RX_MSDU_END_INFO4_DA_OFFSET GENMASK(5, 0)
1050 #define RX_MSDU_END_INFO4_SA_OFFSET GENMASK(11, 6)
1051 #define RX_MSDU_END_INFO4_DA_OFFSET_VALID BIT(12)
1052 #define RX_MSDU_END_INFO4_SA_OFFSET_VALID BIT(13)
1053 #define RX_MSDU_END_INFO4_L3_TYPE GENMASK(31, 16)
1054
1055 #define RX_MSDU_END_INFO5_MSDU_DROP BIT(0)
1056 #define RX_MSDU_END_INFO5_REO_DEST_IND GENMASK(5, 1)
1057 #define RX_MSDU_END_INFO5_FLOW_IDX GENMASK(25, 6)
1058
1059 struct rx_msdu_end_ipq8074 {
1060 __le16 info0;
1061 __le16 phy_ppdu_id;
1062 __le16 ip_hdr_cksum;
1063 __le16 tcp_udp_cksum;
1064 __le32 info1;
1065 __le32 ext_wapi_pn[2];
1066 __le32 info2;
1067 __le32 ipv6_options_crc;
1068 __le32 tcp_seq_num;
1069 __le32 tcp_ack_num;
1070 __le16 info3;
1071 __le16 window_size;
1072 __le32 info4;
1073 __le32 rule_indication[2];
1074 __le16 sa_idx;
1075 __le16 da_idx;
1076 __le32 info5;
1077 __le32 fse_metadata;
1078 __le16 cce_metadata;
1079 __le16 sa_sw_peer_id;
1080 } __packed;
1081
1082 struct rx_msdu_end_wcn6855 {
1083 __le16 info0;
1084 __le16 phy_ppdu_id;
1085 __le16 ip_hdr_cksum;
1086 __le16 reported_mpdu_len;
1087 __le32 info1;
1088 __le32 ext_wapi_pn[2];
1089 __le32 info4;
1090 __le32 ipv6_options_crc;
1091 __le32 tcp_seq_num;
1092 __le32 tcp_ack_num;
1093 __le16 info3;
1094 __le16 window_size;
1095 __le32 info2;
1096 __le16 sa_idx;
1097 __le16 da_idx;
1098 __le32 info5;
1099 __le32 fse_metadata;
1100 __le16 cce_metadata;
1101 __le16 sa_sw_peer_id;
1102 __le32 rule_indication[2];
1103 __le32 info6;
1104 __le32 info7;
1105 } __packed;
1106
1107 #define RX_MSDU_END_MPDU_LENGTH_INFO GENMASK(13, 0)
1108
1109 #define RX_MSDU_END_INFO2_DA_OFFSET GENMASK(5, 0)
1110 #define RX_MSDU_END_INFO2_SA_OFFSET GENMASK(11, 6)
1111 #define RX_MSDU_END_INFO2_DA_OFFSET_VALID BIT(12)
1112 #define RX_MSDU_END_INFO2_SA_OFFSET_VALID BIT(13)
1113 #define RX_MSDU_END_INFO2_L3_TYPE GENMASK(31, 16)
1114
1115 #define RX_MSDU_END_INFO4_SA_IDX_TIMEOUT BIT(0)
1116 #define RX_MSDU_END_INFO4_DA_IDX_TIMEOUT BIT(1)
1117 #define RX_MSDU_END_INFO4_MSDU_LIMIT_ERR BIT(2)
1118 #define RX_MSDU_END_INFO4_FLOW_IDX_TIMEOUT BIT(3)
1119 #define RX_MSDU_END_INFO4_FLOW_IDX_INVALID BIT(4)
1120 #define RX_MSDU_END_INFO4_WIFI_PARSER_ERR BIT(5)
1121 #define RX_MSDU_END_INFO4_AMSDU_PARSER_ERR BIT(6)
1122 #define RX_MSDU_END_INFO4_SA_IS_VALID BIT(7)
1123 #define RX_MSDU_END_INFO4_DA_IS_VALID BIT(8)
1124 #define RX_MSDU_END_INFO4_DA_IS_MCBC BIT(9)
1125 #define RX_MSDU_END_INFO4_L3_HDR_PADDING GENMASK(11, 10)
1126 #define RX_MSDU_END_INFO4_FIRST_MSDU BIT(12)
1127 #define RX_MSDU_END_INFO4_LAST_MSDU BIT(13)
1128
1129 #define RX_MSDU_END_INFO6_AGGR_COUNT GENMASK(7, 0)
1130 #define RX_MSDU_END_INFO6_FLOW_AGGR_CONTN BIT(8)
1131 #define RX_MSDU_END_INFO6_FISA_TIMEOUT BIT(9)
1132
1133 struct rx_msdu_end_qcn9074 {
1134 __le16 info0;
1135 __le16 phy_ppdu_id;
1136 __le16 ip_hdr_cksum;
1137 __le16 mpdu_length_info;
1138 __le32 info1;
1139 __le32 rule_indication[2];
1140 __le32 info2;
1141 __le32 ipv6_options_crc;
1142 __le32 tcp_seq_num;
1143 __le32 tcp_ack_num;
1144 __le16 info3;
1145 __le16 window_size;
1146 __le16 tcp_udp_cksum;
1147 __le16 info4;
1148 __le16 sa_idx;
1149 __le16 da_idx;
1150 __le32 info5;
1151 __le32 fse_metadata;
1152 __le16 cce_metadata;
1153 __le16 sa_sw_peer_id;
1154 __le32 info6;
1155 __le16 cum_l4_cksum;
1156 __le16 cum_ip_length;
1157 } __packed;
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321 enum rx_mpdu_end_rxdma_dest_ring {
1322 RX_MPDU_END_RXDMA_DEST_RING_RELEASE,
1323 RX_MPDU_END_RXDMA_DEST_RING_FW,
1324 RX_MPDU_END_RXDMA_DEST_RING_SW,
1325 RX_MPDU_END_RXDMA_DEST_RING_REO,
1326 };
1327
1328 #define RX_MPDU_END_INFO1_UNSUP_KTYPE_SHORT_FRAME BIT(11)
1329 #define RX_MPDU_END_INFO1_RX_IN_TX_DECRYPT_BYT BIT(12)
1330 #define RX_MPDU_END_INFO1_OVERFLOW_ERR BIT(13)
1331 #define RX_MPDU_END_INFO1_MPDU_LEN_ERR BIT(14)
1332 #define RX_MPDU_END_INFO1_TKIP_MIC_ERR BIT(15)
1333 #define RX_MPDU_END_INFO1_DECRYPT_ERR BIT(16)
1334 #define RX_MPDU_END_INFO1_UNENCRYPTED_FRAME_ERR BIT(17)
1335 #define RX_MPDU_END_INFO1_PN_FIELDS_VALID BIT(18)
1336 #define RX_MPDU_END_INFO1_FCS_ERR BIT(19)
1337 #define RX_MPDU_END_INFO1_MSDU_LEN_ERR BIT(20)
1338 #define RX_MPDU_END_INFO1_RXDMA0_DEST_RING GENMASK(22, 21)
1339 #define RX_MPDU_END_INFO1_RXDMA1_DEST_RING GENMASK(24, 23)
1340 #define RX_MPDU_END_INFO1_DECRYPT_STATUS_CODE GENMASK(27, 25)
1341 #define RX_MPDU_END_INFO1_RX_BITMAP_NOT_UPD BIT(28)
1342
1343 struct rx_mpdu_end {
1344 __le16 info0;
1345 __le16 phy_ppdu_id;
1346 __le32 info1;
1347 } __packed;
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427 #define HAL_RX_DESC_PADDING0_BYTES 4
1428 #define HAL_RX_DESC_PADDING1_BYTES 16
1429
1430 #define HAL_RX_DESC_HDR_STATUS_LEN 120
1431
1432 struct hal_rx_desc_ipq8074 {
1433 __le32 msdu_end_tag;
1434 struct rx_msdu_end_ipq8074 msdu_end;
1435 __le32 rx_attn_tag;
1436 struct rx_attention attention;
1437 __le32 msdu_start_tag;
1438 struct rx_msdu_start_ipq8074 msdu_start;
1439 u8 rx_padding0[HAL_RX_DESC_PADDING0_BYTES];
1440 __le32 mpdu_start_tag;
1441 struct rx_mpdu_start_ipq8074 mpdu_start;
1442 __le32 mpdu_end_tag;
1443 struct rx_mpdu_end mpdu_end;
1444 u8 rx_padding1[HAL_RX_DESC_PADDING1_BYTES];
1445 __le32 hdr_status_tag;
1446 __le32 phy_ppdu_id;
1447 u8 hdr_status[HAL_RX_DESC_HDR_STATUS_LEN];
1448 u8 msdu_payload[];
1449 } __packed;
1450
1451 struct hal_rx_desc_qcn9074 {
1452 __le32 msdu_end_tag;
1453 struct rx_msdu_end_qcn9074 msdu_end;
1454 __le32 rx_attn_tag;
1455 struct rx_attention attention;
1456 __le32 msdu_start_tag;
1457 struct rx_msdu_start_qcn9074 msdu_start;
1458 u8 rx_padding0[HAL_RX_DESC_PADDING0_BYTES];
1459 __le32 mpdu_start_tag;
1460 struct rx_mpdu_start_qcn9074 mpdu_start;
1461 __le32 mpdu_end_tag;
1462 struct rx_mpdu_end mpdu_end;
1463 u8 rx_padding1[HAL_RX_DESC_PADDING1_BYTES];
1464 __le32 hdr_status_tag;
1465 __le32 phy_ppdu_id;
1466 u8 hdr_status[HAL_RX_DESC_HDR_STATUS_LEN];
1467 u8 msdu_payload[];
1468 } __packed;
1469
1470 struct hal_rx_desc_wcn6855 {
1471 __le32 msdu_end_tag;
1472 struct rx_msdu_end_wcn6855 msdu_end;
1473 __le32 rx_attn_tag;
1474 struct rx_attention attention;
1475 __le32 msdu_start_tag;
1476 struct rx_msdu_start_wcn6855 msdu_start;
1477 u8 rx_padding0[HAL_RX_DESC_PADDING0_BYTES];
1478 __le32 mpdu_start_tag;
1479 struct rx_mpdu_start_wcn6855 mpdu_start;
1480 __le32 mpdu_end_tag;
1481 struct rx_mpdu_end mpdu_end;
1482 u8 rx_padding1[HAL_RX_DESC_PADDING1_BYTES];
1483 __le32 hdr_status_tag;
1484 __le32 phy_ppdu_id;
1485 u8 hdr_status[HAL_RX_DESC_HDR_STATUS_LEN];
1486 u8 msdu_payload[];
1487 } __packed;
1488
1489 struct hal_rx_desc {
1490 union {
1491 struct hal_rx_desc_ipq8074 ipq8074;
1492 struct hal_rx_desc_qcn9074 qcn9074;
1493 struct hal_rx_desc_wcn6855 wcn6855;
1494 } u;
1495 } __packed;
1496
1497 #define HAL_RX_RU_ALLOC_TYPE_MAX 6
1498 #define RU_26 1
1499 #define RU_52 2
1500 #define RU_106 4
1501 #define RU_242 9
1502 #define RU_484 18
1503 #define RU_996 37
1504
1505 #endif