diff --git a/hal/wifi3.0/li/hal_li_generic_api.c b/hal/wifi3.0/li/hal_li_generic_api.c index da2159cb71..a4c5e9c67a 100644 --- a/hal/wifi3.0/li/hal_li_generic_api.c +++ b/hal/wifi3.0/li/hal_li_generic_api.c @@ -228,24 +228,6 @@ static uint32_t hal_rx_msdu_start_msdu_len_get_li(uint8_t *buf) return msdu_len; } -/** - * hal_rx_get_frame_ctrl_field(): Function to retrieve frame control field - * - * @nbuf: Network buffer - * Returns: rx more fragment bit - * - */ -static uint16_t hal_rx_get_frame_ctrl_field_li(uint8_t *buf) -{ - struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); - struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); - uint16_t frame_ctrl = 0; - - frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); - - return frame_ctrl; -} - /** * hal_rx_get_proto_params_li() - Get l4 proto values from TLV * @buf: rx tlv address @@ -1204,8 +1186,6 @@ void hal_hw_txrx_default_ops_attach_li(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_tlv_msdu_done_get = hal_rx_attn_msdu_done_get_li; hal_soc->ops->hal_rx_tlv_msdu_len_get = hal_rx_msdu_start_msdu_len_get_li; - hal_soc->ops->hal_rx_get_frame_ctrl_field = - hal_rx_get_frame_ctrl_field_li; hal_soc->ops->hal_rx_get_proto_params = hal_rx_get_proto_params_li; hal_soc->ops->hal_rx_get_l3_l4_offsets = hal_rx_get_l3_l4_offsets_li; diff --git a/hal/wifi3.0/li/hal_li_generic_api.h b/hal/wifi3.0/li/hal_li_generic_api.h index acd2acf5f6..710aebf208 100644 --- a/hal/wifi3.0/li/hal_li_generic_api.h +++ b/hal/wifi3.0/li/hal_li_generic_api.h @@ -2635,4 +2635,22 @@ hal_rx_fst_get_fse_size_li(void) return 0; } #endif /* WLAN_SUPPORT_RX_FISA */ + +/** + * hal_rx_get_frame_ctrl_field(): Function to retrieve frame control field + * + * @nbuf: Network buffer + * Returns: rx more fragment bit + * + */ +static uint16_t hal_rx_get_frame_ctrl_field_li(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); + struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); + uint16_t frame_ctrl = 0; + + frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); + + return frame_ctrl; +} #endif /* _HAL_LI_GENERIC_API_H_ */ diff --git a/hal/wifi3.0/li/hal_li_reo.c b/hal/wifi3.0/li/hal_li_reo.c index eceee34d71..fcbef2323b 100644 --- a/hal/wifi3.0/li/hal_li_reo.c +++ b/hal/wifi3.0/li/hal_li_reo.c @@ -1345,6 +1345,8 @@ uint8_t hal_get_tlv_hdr_size_li(void) uint64_t hal_rx_get_qdesc_addr_li(uint8_t *dst_ring_desc, uint8_t *buf) { - return *(uint64_t *)dst_ring_desc + + uint8_t *dst_qdesc_addr = dst_ring_desc + REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET; + + return *(uint64_t *)dst_qdesc_addr; } diff --git a/hal/wifi3.0/qca5018/hal_5018.c b/hal/wifi3.0/qca5018/hal_5018.c index ec36e788c1..73f5a1f29a 100644 --- a/hal/wifi3.0/qca5018/hal_5018.c +++ b/hal/wifi3.0/qca5018/hal_5018.c @@ -915,6 +915,24 @@ static uint8_t hal_rx_get_mpdu_frame_control_valid_5018(uint8_t *buf) return HAL_RX_MPDU_GET_FRAME_CONTROL_VALID(rx_mpdu_info); } +/** + * hal_rx_get_mpdu_frame_control_field_5018(): Function to + * retrieve frame control field + * + * @nbuf: Network buffer + * Returns: value of frame control field + */ +static uint16_t hal_rx_get_mpdu_frame_control_field_5018(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); + struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); + uint16_t frame_ctrl = 0; + + frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); + + return frame_ctrl; +} + /* * hal_rx_mpdu_get_addr1_5018(): API to check get address1 of the mpdu * @@ -1786,6 +1804,8 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_5018; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_5018; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_mpdu_frame_control_field_5018; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_5018; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_5018; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_5018; diff --git a/hal/wifi3.0/qca6290/hal_6290.c b/hal/wifi3.0/qca6290/hal_6290.c index 532da0a926..ec454e1361 100644 --- a/hal/wifi3.0/qca6290/hal_6290.c +++ b/hal/wifi3.0/qca6290/hal_6290.c @@ -1167,6 +1167,8 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_6290; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_6290; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_frame_ctrl_field_li; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_6290; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_6290; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_6290; diff --git a/hal/wifi3.0/qca6390/hal_6390.c b/hal/wifi3.0/qca6390/hal_6390.c index 796fba6c68..258aa58346 100644 --- a/hal/wifi3.0/qca6390/hal_6390.c +++ b/hal/wifi3.0/qca6390/hal_6390.c @@ -1234,6 +1234,8 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_6390; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_6390; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_frame_ctrl_field_li; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_6390; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_6390; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_6390; diff --git a/hal/wifi3.0/qca6490/hal_6490.c b/hal/wifi3.0/qca6490/hal_6490.c index b21c0e3d4b..e5f8a15e6b 100644 --- a/hal/wifi3.0/qca6490/hal_6490.c +++ b/hal/wifi3.0/qca6490/hal_6490.c @@ -1853,6 +1853,8 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_6490; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_6490; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_frame_ctrl_field_li; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_6490; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_6490; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_6490; diff --git a/hal/wifi3.0/qca6750/hal_6750.c b/hal/wifi3.0/qca6750/hal_6750.c index ceb8cf5c81..bd79390d63 100644 --- a/hal/wifi3.0/qca6750/hal_6750.c +++ b/hal/wifi3.0/qca6750/hal_6750.c @@ -1989,6 +1989,8 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_6750; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_6750; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_frame_ctrl_field_li; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_6750; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_6750; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_6750; diff --git a/hal/wifi3.0/qca8074v1/hal_8074v1.c b/hal/wifi3.0/qca8074v1/hal_8074v1.c index d6627f0733..98c3b07a47 100644 --- a/hal/wifi3.0/qca8074v1/hal_8074v1.c +++ b/hal/wifi3.0/qca8074v1/hal_8074v1.c @@ -414,6 +414,25 @@ static uint8_t hal_rx_get_mpdu_frame_control_valid_8074v1(uint8_t *buf) return HAL_RX_MPDU_GET_FRAME_CONTROL_VALID(rx_mpdu_info); } +/** + * hal_rx_get_mpdu_frame_control_field_8074v1(): Function to + * retrieve frame control field + * + * @nbuf: Network buffer + * Returns: value of frame control field + * + */ +static uint16_t hal_rx_get_mpdu_frame_control_field_8074v1(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); + struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); + uint16_t frame_ctrl = 0; + + frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); + + return frame_ctrl; +} + /* * hal_rx_mpdu_get_addr1_8074v1(): API to check get address1 of the mpdu * @@ -1331,6 +1350,8 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_8074v1; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_8074v1; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_mpdu_frame_control_field_8074v1; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_8074v1; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_8074v1; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_8074v1; diff --git a/hal/wifi3.0/qca8074v2/hal_8074v2.c b/hal/wifi3.0/qca8074v2/hal_8074v2.c index fe14eaf976..9d7c7d31dc 100644 --- a/hal/wifi3.0/qca8074v2/hal_8074v2.c +++ b/hal/wifi3.0/qca8074v2/hal_8074v2.c @@ -400,6 +400,25 @@ static uint8_t hal_rx_get_mpdu_frame_control_valid_8074v2(uint8_t *buf) return HAL_RX_MPDU_GET_FRAME_CONTROL_VALID(rx_mpdu_info); } +/** + * hal_rx_get_mpdu_frame_control_field_8074v2(): Function to + * retrieve frame control field + * + * @nbuf: Network buffer + * Returns: value of frame control field + * + */ +static uint16_t hal_rx_get_mpdu_frame_control_field_8074v2(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); + struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); + uint16_t frame_ctrl = 0; + + frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); + + return frame_ctrl; +} + /* * hal_rx_mpdu_get_addr1_8074v2(): API to check get address1 of the mpdu * @@ -1328,6 +1347,8 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_8074v2; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_8074v2; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_mpdu_frame_control_field_8074v2; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_8074v2; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_8074v2; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_8074v2; diff --git a/hal/wifi3.0/qcn6122/hal_qcn6122.c b/hal/wifi3.0/qcn6122/hal_qcn6122.c index 697258abfe..16bb7ff7a0 100644 --- a/hal/wifi3.0/qcn6122/hal_qcn6122.c +++ b/hal/wifi3.0/qcn6122/hal_qcn6122.c @@ -877,6 +877,25 @@ static uint8_t hal_rx_get_mpdu_frame_control_valid_6122(uint8_t *buf) return HAL_RX_MPDU_GET_FRAME_CONTROL_VALID(rx_mpdu_info); } +/** + * hal_rx_get_mpdu_frame_control_field_6122(): Function to + * retrieve frame control field + * + * @nbuf: Network buffer + * Returns: value of frame control field + * + */ +static uint16_t hal_rx_get_mpdu_frame_control_field_6122(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); + struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); + uint16_t frame_ctrl = 0; + + frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); + + return frame_ctrl; +} + /* * hal_rx_mpdu_get_addr1_6122(): API to check get address1 of the mpdu * @@ -1837,6 +1856,8 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_6122; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_6122; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_mpdu_frame_control_field_6122; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_6122; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_6122; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_6122; diff --git a/hal/wifi3.0/qcn9000/hal_9000.c b/hal/wifi3.0/qcn9000/hal_9000.c index 02d35c1d6a..b4d5799dd7 100644 --- a/hal/wifi3.0/qcn9000/hal_9000.c +++ b/hal/wifi3.0/qcn9000/hal_9000.c @@ -922,6 +922,25 @@ static uint8_t hal_rx_get_mpdu_frame_control_valid_9000(uint8_t *buf) return HAL_RX_MPDU_GET_FRAME_CONTROL_VALID(rx_mpdu_info); } +/** + * hal_rx_get_mpdu_frame_control_field_9000(): Function + * to retrieve frame control field + * + * @nbuf: Network buffer + * Returns: value of frame control field + * + */ +static uint16_t hal_rx_get_mpdu_frame_control_field_9000(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = hal_rx_get_pkt_tlvs(buf); + struct rx_mpdu_info *rx_mpdu_info = hal_rx_get_mpdu_info(pkt_tlvs); + uint16_t frame_ctrl = 0; + + frame_ctrl = HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(rx_mpdu_info); + + return frame_ctrl; +} + /* * hal_rx_mpdu_get_addr1_9000(): API to check get address1 of the mpdu * @@ -1881,6 +1900,8 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_mpdu_get_fr_ds = hal_rx_mpdu_get_fr_ds_9000; hal_soc->ops->hal_rx_get_mpdu_frame_control_valid = hal_rx_get_mpdu_frame_control_valid_9000; + hal_soc->ops->hal_rx_get_frame_ctrl_field = + hal_rx_get_mpdu_frame_control_field_9000; hal_soc->ops->hal_rx_mpdu_get_addr1 = hal_rx_mpdu_get_addr1_9000; hal_soc->ops->hal_rx_mpdu_get_addr2 = hal_rx_mpdu_get_addr2_9000; hal_soc->ops->hal_rx_mpdu_get_addr3 = hal_rx_mpdu_get_addr3_9000;