qcacmn: Datapath RX-Monitor API changes

Add changes in datapath rx monitor mode APIs
to handle modification in HAL APIs for WCN7850.

Change-Id: Iec7fbf9389033dfa86e71b1081e6a64607125ecc
CRs-Fixed: 2888556
Este commit está contenido en:
Rakesh Pillai
2021-02-16 23:43:16 -08:00
padre a42ab6f94e
commit ca2db4bfa8
Se han modificado 4 ficheros con 108 adiciones y 82 borrados

Ver fichero

@@ -3236,7 +3236,7 @@ void dp_link_desc_ring_replenish(struct dp_soc *soc, uint32_t mac_id)
offset = count % pages->num_element_per_page;
cookie = LINK_DESC_COOKIE(count, page_idx);
hal_set_link_desc_addr(desc, cookie,
hal_set_link_desc_addr(soc->hal_soc, desc, cookie,
dma_pages[page_idx].page_p_addr
+ (offset * link_desc_size));
count++;
@@ -3263,7 +3263,8 @@ void dp_link_desc_ring_replenish(struct dp_soc *soc, uint32_t mac_id)
page_idx = count / num_descs_per_page;
offset = count % num_descs_per_page;
cookie = LINK_DESC_COOKIE(count, page_idx);
hal_set_link_desc_addr((void *)scatter_buf_ptr,
hal_set_link_desc_addr(soc->hal_soc,
(void *)scatter_buf_ptr,
cookie,
dma_pages[page_idx].page_p_addr +
(offset * link_desc_size));

Ver fichero

@@ -333,17 +333,20 @@ dp_rx_mon_link_desc_return(struct dp_pdev *dp_pdev,
* multiple nbufs. This function
* is to return data length in
* fragmented buffer
*
* @soc: Datapath soc handle
* @total_len: pointer to remaining data length.
* @frag_len: pointer to data length in this fragment.
* @l2_hdr_pad: l2 header padding
*/
static inline void dp_mon_adjust_frag_len(uint32_t *total_len,
static inline void dp_mon_adjust_frag_len(struct dp_soc *soc,
uint32_t *total_len,
uint32_t *frag_len,
uint16_t l2_hdr_pad)
{
if (*total_len >= (RX_MONITOR_BUFFER_SIZE - RX_PKT_TLVS_LEN)) {
*frag_len = RX_MONITOR_BUFFER_SIZE - RX_PKT_TLVS_LEN -
uint32_t rx_pkt_tlv_len = soc->rx_pkt_tlv_size;
if (*total_len >= (RX_MONITOR_BUFFER_SIZE - rx_pkt_tlv_len)) {
*frag_len = RX_MONITOR_BUFFER_SIZE - rx_pkt_tlv_len -
l2_hdr_pad;
*total_len -= *frag_len;
} else {
@@ -551,7 +554,7 @@ dp_rx_mon_parse_desc_buffer(struct dp_soc *dp_soc,
{
struct hal_rx_mon_dest_buf_info frame_info;
uint16_t tot_payload_len =
RX_MONITOR_BUFFER_SIZE - RX_PKT_TLVS_LEN;
RX_MONITOR_BUFFER_SIZE - soc->rx_pkt_tlv_size;
if (msdu_info->msdu_flags & HAL_MSDU_F_MSDU_CONTINUATION) {
/* First buffer of MSDU */
@@ -561,7 +564,8 @@ dp_rx_mon_parse_desc_buffer(struct dp_soc *dp_soc,
*is_frag_p = true;
if (HAL_HW_RX_DECAP_FORMAT_RAW ==
HAL_RX_DESC_GET_DECAP_FORMAT(rx_desc_tlv)) {
hal_rx_tlv_decap_format_get(dp_soc->hal_soc,
rx_desc_tlv)) {
*l2_hdr_offset_p =
DP_RX_MON_RAW_L2_HDR_PAD_BYTE;
frame_info.is_decap_raw = 1;
@@ -627,7 +631,8 @@ dp_rx_mon_parse_desc_buffer(struct dp_soc *dp_soc,
/* MSDU with single buffer */
*frag_len_p = msdu_info->msdu_len;
if (HAL_HW_RX_DECAP_FORMAT_RAW ==
HAL_RX_DESC_GET_DECAP_FORMAT(rx_desc_tlv)) {
hal_rx_tlv_decap_format_get(dp_soc->hal_soc,
rx_desc_tlv)) {
*l2_hdr_offset_p =
DP_RX_MON_RAW_L2_HDR_PAD_BYTE;
frame_info.is_decap_raw = 1;
@@ -658,7 +663,7 @@ static inline void dp_rx_mon_buffer_set_pktlen(qdf_nbuf_t msdu, uint32_t size)
/**
* dp_rx_mon_add_msdu_to_list()- Add msdu to list and update head_msdu
* It will add reaped buffer frag to nr frag of parent msdu.
*
* @soc: DP soc handle
* @head_msdu: NULL if first time called else &msdu
* @msdu: Msdu where frag address needs to be added via nr_frag
* @last: Used to traverse in list if this feature is disabled.
@@ -667,9 +672,9 @@ static inline void dp_rx_mon_buffer_set_pktlen(qdf_nbuf_t msdu, uint32_t size)
* @l2_hdr_offset: l2 hdr padding
*/
static inline
QDF_STATUS dp_rx_mon_add_msdu_to_list(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
qdf_nbuf_t *last, qdf_frag_t rx_desc_tlv,
uint32_t frag_len,
QDF_STATUS dp_rx_mon_add_msdu_to_list(struct dp_soc *soc, qdf_nbuf_t *head_msdu,
qdf_nbuf_t msdu, qdf_nbuf_t *last,
qdf_frag_t rx_desc_tlv, uint32_t frag_len,
uint32_t l2_hdr_offset)
{
uint32_t num_frags;
@@ -699,7 +704,7 @@ QDF_STATUS dp_rx_mon_add_msdu_to_list(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
num_frags = qdf_nbuf_get_nr_frags(msdu_curr);
if (num_frags < QDF_NBUF_MAX_FRAGS) {
qdf_nbuf_add_rx_frag(rx_desc_tlv, msdu_curr,
SIZE_OF_MONITOR_TLV,
soc->rx_mon_pkt_tlv_size,
frag_len + l2_hdr_offset,
RX_MONITOR_BUFFER_SIZE,
false);
@@ -714,7 +719,7 @@ QDF_STATUS dp_rx_mon_add_msdu_to_list(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
!= QDF_STATUS_SUCCESS)
return QDF_STATUS_E_FAILURE;
qdf_nbuf_add_rx_frag(rx_desc_tlv, msdu_curr, SIZE_OF_MONITOR_TLV,
qdf_nbuf_add_rx_frag(rx_desc_tlv, msdu_curr, soc->rx_mon_pkt_tlv_size,
frag_len + l2_hdr_offset, RX_MONITOR_BUFFER_SIZE,
false);
@@ -754,11 +759,13 @@ void dp_rx_mon_init_tail_msdu(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
*
* If feature is disabled, then removal happens in restitch logic.
*
* @soc: Datapath soc handle
* @head_msdu: Head msdu
* @tail_msdu: Tail msdu
*/
static inline
void dp_rx_mon_remove_raw_frame_fcs_len(qdf_nbuf_t *head_msdu,
void dp_rx_mon_remove_raw_frame_fcs_len(struct dp_soc *soc,
qdf_nbuf_t *head_msdu,
qdf_nbuf_t *tail_msdu)
{
qdf_frag_t addr;
@@ -772,9 +779,8 @@ void dp_rx_mon_remove_raw_frame_fcs_len(qdf_nbuf_t *head_msdu,
/* Strip FCS_LEN for Raw frame */
addr = qdf_nbuf_get_frag_addr(*head_msdu, 0);
addr -= SIZE_OF_MONITOR_TLV;
if (HAL_RX_DESC_GET_DECAP_FORMAT(addr) ==
HAL_HW_RX_DECAP_FORMAT_RAW) {
addr -= soc->rx_mon_pkt_tlv_size;
if (hal_rx_tlv_decap_format_get(addr) == HAL_HW_RX_DECAP_FORMAT_RAW) {
qdf_nbuf_trim_add_frag_size(*tail_msdu,
qdf_nbuf_get_nr_frags(*tail_msdu) - 1,
-HAL_RX_FCS_LEN, 0);
@@ -886,11 +892,12 @@ dp_rx_mon_parse_desc_buffer(struct dp_soc *dp_soc,
*total_frag_len_p = msdu_info->msdu_len;
*is_frag_p = true;
}
dp_mon_adjust_frag_len(total_frag_len_p, frag_len_p,
dp_mon_adjust_frag_len(dp_soc, total_frag_len_p, frag_len_p,
*l2_hdr_offset_p);
} else {
if (*is_frag_p) {
dp_mon_adjust_frag_len(total_frag_len_p, frag_len_p,
dp_mon_adjust_frag_len(dp_soc, total_frag_len_p,
frag_len_p,
*l2_hdr_offset_p);
} else {
*frag_len_p = msdu_info->msdu_len;
@@ -905,9 +912,9 @@ static inline void dp_rx_mon_buffer_set_pktlen(qdf_nbuf_t msdu, uint32_t size)
}
static inline
QDF_STATUS dp_rx_mon_add_msdu_to_list(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
qdf_nbuf_t *last, qdf_frag_t rx_desc_tlv,
uint32_t frag_len,
QDF_STATUS dp_rx_mon_add_msdu_to_list(struct dp_soc *soc, qdf_nbuf_t *head_msdu,
qdf_nbuf_t msdu, qdf_nbuf_t *last,
qdf_frag_t rx_desc_tlv, uint32_t frag_len,
uint32_t l2_hdr_offset)
{
if (head_msdu && !*head_msdu) {
@@ -931,7 +938,8 @@ void dp_rx_mon_init_tail_msdu(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
}
static inline
void dp_rx_mon_remove_raw_frame_fcs_len(qdf_nbuf_t *head_msdu,
void dp_rx_mon_remove_raw_frame_fcs_len(struct dp_soc *soc,
qdf_nbuf_t *head_msdu,
qdf_nbuf_t *tail_msdu)
{
}

Ver fichero

@@ -198,7 +198,8 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
last = NULL;
hal_rx_reo_ent_buf_paddr_get(rxdma_dst_ring_desc, &buf_info, &msdu_cnt);
hal_rx_reo_ent_buf_paddr_get(soc->hal_soc, rxdma_dst_ring_desc,
&buf_info, &msdu_cnt);
rs = &dp_pdev->rx_mon_recv_status;
rs->cdp_rs_rxdma_err = false;
@@ -383,7 +384,7 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
total_frag_len, frag_len,
msdu_list.msdu_info[i].msdu_flags);
rx_pkt_offset = SIZE_OF_MONITOR_TLV;
rx_pkt_offset = soc->rx_mon_pkt_tlv_size;
rx_buf_size = rx_pkt_offset + l2_hdr_offset
+ frag_len;
@@ -414,9 +415,9 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
msdu_list.msdu_info[i].msdu_len,
frag_len);
if (dp_rx_mon_add_msdu_to_list(head_msdu, msdu, &last,
rx_desc_tlv, frag_len,
l2_hdr_offset)
if (dp_rx_mon_add_msdu_to_list(soc, head_msdu, msdu,
&last, rx_desc_tlv,
frag_len, l2_hdr_offset)
!= QDF_STATUS_SUCCESS) {
dp_rx_mon_add_msdu_to_list_failure_handler(rx_desc_tlv,
dp_pdev, &last, head_msdu,
@@ -436,10 +437,12 @@ next_msdu:
* Store the current link buffer into to the local
* structure to be used for release purpose.
*/
hal_rxdma_buff_addr_info_set(rx_link_buf_info, buf_info.paddr,
hal_rxdma_buff_addr_info_set(soc->hal_soc, rx_link_buf_info,
buf_info.paddr,
buf_info.sw_cookie, buf_info.rbm);
hal_rx_mon_next_link_desc_get(rx_msdu_link_desc, &buf_info);
hal_rx_mon_next_link_desc_get(soc->hal_soc, rx_msdu_link_desc,
&buf_info);
if (dp_rx_monitor_link_desc_return(dp_pdev,
(hal_buff_addrinfo_t)
rx_link_buf_info,
@@ -450,7 +453,7 @@ next_msdu:
} while (buf_info.paddr && msdu_cnt);
dp_rx_mon_init_tail_msdu(head_msdu, msdu, last, tail_msdu);
dp_rx_mon_remove_raw_frame_fcs_len(head_msdu, tail_msdu);
dp_rx_mon_remove_raw_frame_fcs_len(soc, head_msdu, tail_msdu);
return rx_bufs_used;
}
@@ -462,7 +465,7 @@ void dp_rx_msdus_set_payload(struct dp_soc *soc, qdf_nbuf_t msdu)
uint32_t rx_pkt_offset, l2_hdr_offset;
data = qdf_nbuf_data(msdu);
rx_pkt_offset = SIZE_OF_MONITOR_TLV;
rx_pkt_offset = soc->rx_mon_pkt_tlv_size;
l2_hdr_offset = hal_rx_msdu_end_l3_hdr_padding_get(soc->hal_soc, data);
qdf_nbuf_pull_head(msdu, rx_pkt_offset + l2_hdr_offset);
}
@@ -544,6 +547,7 @@ qdf_nbuf_t dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
struct hal_rx_mon_dest_buf_info buf_info;
uint32_t pad_byte_pholder = 0;
qdf_nbuf_t msdu_curr;
uint16_t rx_mon_tlv_size = soc->rx_mon_pkt_tlv_size;
if (qdf_unlikely(!dp_pdev)) {
dp_rx_mon_dest_debug("%pK: pdev is null for mac_id = %d", soc, mac_id);
@@ -554,9 +558,9 @@ qdf_nbuf_t dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
if (!head_msdu || !tail_msdu)
goto mpdu_stitch_fail;
rx_desc = qdf_nbuf_get_frag_addr(head_msdu, 0) - SIZE_OF_MONITOR_TLV;
rx_desc = qdf_nbuf_get_frag_addr(head_msdu, 0) - rx_mon_tlv_size;
if (HAL_RX_DESC_GET_MPDU_LENGTH_ERR(rx_desc)) {
if (hal_rx_tlv_mpdu_len_err_get(soc->hal_soc, rx_desc)) {
/* It looks like there is some issue on MPDU len err */
/* Need further investigate if drop the packet */
DP_STATS_INC(dp_pdev, dropped.mon_rx_drop, 1);
@@ -565,14 +569,13 @@ qdf_nbuf_t dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
/* Look for FCS error */
num_frags = qdf_nbuf_get_nr_frags(tail_msdu);
rx_desc =
qdf_nbuf_get_frag_addr(tail_msdu,
num_frags - 1) - SIZE_OF_MONITOR_TLV;
rx_status->cdp_rs_fcs_err = HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc);
dp_pdev->ppdu_info.rx_status.rs_fcs_err =
HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc);
rx_desc = qdf_nbuf_get_frag_addr(tail_msdu, num_frags - 1) -
rx_mon_tlv_size;
rx_status->cdp_rs_fcs_err = hal_rx_tlv_mpdu_fcs_err_get(soc->hal_soc,
rx_desc);
dp_pdev->ppdu_info.rx_status.rs_fcs_err = rx_status->cdp_rs_fcs_err;
rx_desc = qdf_nbuf_get_frag_addr(head_msdu, 0) - SIZE_OF_MONITOR_TLV;
rx_desc = qdf_nbuf_get_frag_addr(head_msdu, 0) - rx_mon_tlv_size;
hal_rx_mon_dest_get_buffer_info_from_tlv(rx_desc, &buf_info);
/* Easy case - The MSDU status indicates that this is a non-decapped
@@ -590,7 +593,7 @@ qdf_nbuf_t dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
* on the decap type and the corresponding number of raw bytes to copy
* status header
*/
hdr_desc = HAL_RX_DESC_GET_80211_HDR(rx_desc);
hdr_desc = hal_rx_desc_get_80211_hdr(soc->hal_soc, rx_desc);
dp_rx_mon_dest_debug("%pK: decap format not raw", soc);
@@ -768,7 +771,7 @@ qdf_nbuf_t dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
*/
frag_addr =
qdf_nbuf_get_frag_addr(msdu_curr, frags_iter);
rx_desc = frag_addr - SIZE_OF_MONITOR_TLV;
rx_desc = frag_addr - rx_mon_tlv_size;
/*
* Update protocol and flow tag for MSDU
@@ -822,7 +825,8 @@ qdf_nbuf_t dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
if (buf_info.first_buffer) {
/* Src addr from where llc header needs to be copied */
rx_src_desc =
HAL_RX_DESC_GET_80211_HDR(rx_desc);
hal_rx_desc_get_80211_hdr(soc->hal_soc,
rx_desc);
/* Size of buffer with llc header */
frag_size = frag_size -
@@ -944,7 +948,7 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc,
rx_desc = qdf_nbuf_data(msdu_orig);
if (HAL_RX_DESC_GET_MPDU_LENGTH_ERR(rx_desc)) {
if (hal_rx_tlv_mpdu_len_err_get(soc->hal_soc, rx_desc)) {
/* It looks like there is some issue on MPDU len err */
/* Need further investigate if drop the packet */
DP_STATS_INC(dp_pdev, dropped.mon_rx_drop, 1);
@@ -953,16 +957,16 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc,
rx_desc = qdf_nbuf_data(last_msdu);
rx_status->cdp_rs_fcs_err = HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc);
dp_pdev->ppdu_info.rx_status.rs_fcs_err =
HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc);
rx_status->cdp_rs_fcs_err = hal_rx_tlv_mpdu_fcs_err_get(soc->hal_soc,
rx_desc);
dp_pdev->ppdu_info.rx_status.rs_fcs_err = rx_status->cdp_rs_fcs_err;
/* Fill out the rx_status from the PPDU start and end fields */
/* HAL_RX_GET_PPDU_STATUS(soc, mac_id, rx_status); */
rx_desc = qdf_nbuf_data(head_msdu);
decap_format = HAL_RX_DESC_GET_DECAP_FORMAT(rx_desc);
decap_format = hal_rx_tlv_decap_format_get(soc->hal_soc, rx_desc);
/* Easy case - The MSDU status indicates that this is a non-decapped
* packet in RAW mode.
@@ -1030,7 +1034,7 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc,
*/
rx_desc = qdf_nbuf_data(head_msdu);
hdr_desc = HAL_RX_DESC_GET_80211_HDR(rx_desc);
hdr_desc = hal_rx_desc_get_80211_hdr(soc->hal_soc, rx_desc);
dp_rx_mon_dest_debug("%pK: decap format not raw", soc);
@@ -1123,7 +1127,8 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc,
} else {
/* Reload the hdr ptr only on non-first MSDUs */
rx_desc = qdf_nbuf_data(msdu_orig);
hdr_desc = HAL_RX_DESC_GET_80211_HDR(rx_desc);
hdr_desc = hal_rx_desc_get_80211_hdr(soc->hal_soc,
rx_desc);
}
/* Copy this buffers MSDU related status into the prev buffer */
@@ -1426,7 +1431,7 @@ static QDF_STATUS dp_rx_mon_process_dest_pktlog(struct dp_soc *soc,
uint32_t mac_id,
qdf_nbuf_t mpdu)
{
uint32_t event, msdu_timestamp;
uint32_t event, msdu_timestamp = 0;
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
void *data;
struct ieee80211_frame *wh;
@@ -1840,7 +1845,7 @@ dp_rx_pdev_mon_buf_desc_pool_init(struct dp_pdev *pdev, uint32_t mac_id)
rx_desc_pool_size = wlan_cfg_get_dp_soc_rx_sw_desc_weight(soc_cfg_ctx) *
num_entries;
rx_desc_pool->owner = HAL_RX_BUF_RBM_SW3_BM;
rx_desc_pool->owner = HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id);
rx_desc_pool->buf_size = RX_MONITOR_BUFFER_SIZE;
rx_desc_pool->buf_alignment = RX_MONITOR_BUFFER_ALIGNMENT;
/* Enable frag processing if feature is enabled */
@@ -2124,7 +2129,7 @@ dp_mon_dest_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id)
uint32_t rx_bufs_used = 0;
void *rx_msdu_link_desc;
uint32_t msdu_count = 0;
uint16 num_msdus;
uint16_t num_msdus;
struct hal_buf_info buf_info;
struct hal_rx_msdu_list msdu_list;
qdf_nbuf_t nbuf;
@@ -2157,7 +2162,7 @@ dp_mon_dest_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id)
hal_srng_dst_peek(hal_soc, mon_dst_srng)) &&
reap_cnt < MON_DROP_REAP_LIMIT) {
hal_rx_reo_ent_buf_paddr_get(rxdma_dst_ring_desc,
hal_rx_reo_ent_buf_paddr_get(hal_soc, rxdma_dst_ring_desc,
&buf_info, &msdu_count);
do {
@@ -2217,12 +2222,14 @@ dp_mon_dest_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id)
* Store the current link buffer into to the local
* structure to be used for release purpose.
*/
hal_rxdma_buff_addr_info_set(rx_link_buf_info,
hal_rxdma_buff_addr_info_set(soc->hal_soc,
rx_link_buf_info,
buf_info.paddr,
buf_info.sw_cookie,
buf_info.rbm);
hal_rx_mon_next_link_desc_get(rx_msdu_link_desc,
hal_rx_mon_next_link_desc_get(soc->hal_soc,
rx_msdu_link_desc,
&buf_info);
if (dp_rx_monitor_link_desc_return(pdev,
(hal_buff_addrinfo_t)

Ver fichero

@@ -76,7 +76,7 @@ dp_rx_mon_handle_status_buf_done(struct dp_pdev *pdev,
struct dp_soc *soc = pdev->soc;
hal_soc_handle_t hal_soc;
void *ring_entry;
uint32_t rx_buf_cookie;
struct hal_buf_info hbi;
qdf_nbuf_t status_nbuf;
struct dp_rx_desc *rx_desc;
void *rx_tlv;
@@ -91,8 +91,10 @@ dp_rx_mon_handle_status_buf_done(struct dp_pdev *pdev,
soc, mon_status_srng);
return DP_MON_STATUS_NO_DMA;
}
rx_buf_cookie = HAL_RX_BUF_COOKIE_GET(ring_entry);
rx_desc = dp_rx_cookie_2_va_mon_status(soc, rx_buf_cookie);
hal_rx_buf_cookie_rbm_get(soc->hal_soc, (uint32_t *)ring_entry,
&hbi);
rx_desc = dp_rx_cookie_2_va_mon_status(soc, hbi.sw_cookie);
qdf_assert_always(rx_desc);
@@ -1954,7 +1956,7 @@ dp_rx_mon_status_srng_process(struct dp_soc *soc, struct dp_intr *int_ctx,
while (qdf_likely((rxdma_mon_status_ring_entry =
hal_srng_src_peek_n_get_next(hal_soc, mon_status_srng))
&& quota--)) {
uint32_t rx_buf_cookie;
struct hal_buf_info hbi;
qdf_nbuf_t status_nbuf;
struct dp_rx_desc *rx_desc;
uint8_t *status_buf;
@@ -1971,11 +1973,11 @@ dp_rx_mon_status_srng_process(struct dp_soc *soc, struct dp_intr *int_ctx,
if (qdf_likely(buf_addr)) {
rx_buf_cookie =
HAL_RX_BUF_COOKIE_GET(
rxdma_mon_status_ring_entry);
hal_rx_buf_cookie_rbm_get(soc->hal_soc,
(uint32_t *)rxdma_mon_status_ring_entry,
&hbi);
rx_desc = dp_rx_cookie_2_va_mon_status(soc,
rx_buf_cookie);
hbi.sw_cookie);
qdf_assert_always(rx_desc);
@@ -2085,8 +2087,9 @@ buf_replenish:
&tail, mac_id, rx_desc_pool);
hal_rxdma_buff_addr_info_set(
rxdma_mon_status_ring_entry,
0, 0, HAL_RX_BUF_RBM_SW3_BM);
hal_soc, rxdma_mon_status_ring_entry,
0, 0,
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
work_done++;
break;
}
@@ -2097,8 +2100,10 @@ buf_replenish:
rx_desc->in_use = 1;
rx_desc->unmapped = 0;
hal_rxdma_buff_addr_info_set(rxdma_mon_status_ring_entry,
paddr, rx_desc->cookie, HAL_RX_BUF_RBM_SW3_BM);
hal_rxdma_buff_addr_info_set(hal_soc,
rxdma_mon_status_ring_entry,
paddr, rx_desc->cookie,
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
hal_srng_src_get_next(hal_soc, mon_status_srng);
work_done++;
@@ -2168,7 +2173,7 @@ dp_rx_pdev_mon_status_buffers_alloc(struct dp_pdev *pdev, uint32_t mac_id)
return dp_rx_mon_status_buffers_replenish(soc, mac_id, mon_status_ring,
rx_desc_pool, num_entries,
&desc_list, &tail,
HAL_RX_BUF_RBM_SW3_BM);
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
}
QDF_STATUS
@@ -2215,7 +2220,7 @@ dp_rx_pdev_mon_status_desc_pool_init(struct dp_pdev *pdev, uint32_t mac_id)
dp_debug("Mon RX Desc status Pool[%d] init entries=%u",
pdev_id, num_entries);
rx_desc_pool->owner = HAL_RX_BUF_RBM_SW3_BM;
rx_desc_pool->owner = HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id);
rx_desc_pool->buf_size = RX_MON_STATUS_BUF_SIZE;
rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
/* Disable frag processing flag */
@@ -2414,8 +2419,10 @@ QDF_STATUS dp_rx_mon_status_buffers_replenish(struct dp_soc *dp_soc,
(*desc_list)->rx_desc.unmapped = 0;
count++;
hal_rxdma_buff_addr_info_set(rxdma_ring_entry, paddr,
(*desc_list)->rx_desc.cookie, owner);
hal_rxdma_buff_addr_info_set(dp_soc->hal_soc,
rxdma_ring_entry, paddr,
(*desc_list)->rx_desc.cookie,
owner);
dp_rx_mon_status_debug("%pK: rx_desc=%pK, cookie=%d, nbuf=%pK, paddr=%pK",
dp_soc, &(*desc_list)->rx_desc,
@@ -2482,7 +2489,7 @@ dp_mon_status_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id,
hal_srng_src_peek_n_get_next(hal_soc, mon_status_srng)) &&
reap_cnt < MON_DROP_REAP_LIMIT && quota--) {
uint64_t buf_addr;
uint32_t rx_buf_cookie;
struct hal_buf_info hbi;
struct dp_rx_desc *rx_desc;
qdf_nbuf_t status_nbuf;
uint8_t *status_buf;
@@ -2496,9 +2503,11 @@ dp_mon_status_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id,
((uint64_t)(HAL_RX_BUFFER_ADDR_39_32_GET(ring_desc)) << 32));
if (qdf_likely(buf_addr)) {
rx_buf_cookie = HAL_RX_BUF_COOKIE_GET(ring_desc);
hal_rx_buf_cookie_rbm_get(soc->hal_soc,
(uint32_t *)ring_desc,
&hbi);
rx_desc = dp_rx_cookie_2_va_mon_status(soc,
rx_buf_cookie);
hbi.sw_cookie);
qdf_assert_always(rx_desc);
@@ -2562,8 +2571,8 @@ dp_mon_status_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id,
&tail, mac_id,
rx_desc_pool);
hal_rxdma_buff_addr_info_set(ring_desc, 0, 0,
HAL_RX_BUF_RBM_SW3_BM);
hal_rxdma_buff_addr_info_set(hal_soc, ring_desc, 0, 0,
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
break;
}
@@ -2572,8 +2581,9 @@ dp_mon_status_srng_drop_for_mac(struct dp_pdev *pdev, uint32_t mac_id,
rx_desc->nbuf = status_nbuf;
rx_desc->in_use = 1;
hal_rxdma_buff_addr_info_set(ring_desc, iova, rx_desc->cookie,
HAL_RX_BUF_RBM_SW3_BM);
hal_rxdma_buff_addr_info_set(hal_soc, ring_desc, iova,
rx_desc->cookie,
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
reap_cnt++;
hal_srng_src_get_next(hal_soc, mon_status_srng);