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
This commit is contained in:
@@ -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;
|
offset = count % pages->num_element_per_page;
|
||||||
cookie = LINK_DESC_COOKIE(count, page_idx);
|
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
|
dma_pages[page_idx].page_p_addr
|
||||||
+ (offset * link_desc_size));
|
+ (offset * link_desc_size));
|
||||||
count++;
|
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;
|
page_idx = count / num_descs_per_page;
|
||||||
offset = count % num_descs_per_page;
|
offset = count % num_descs_per_page;
|
||||||
cookie = LINK_DESC_COOKIE(count, page_idx);
|
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,
|
cookie,
|
||||||
dma_pages[page_idx].page_p_addr +
|
dma_pages[page_idx].page_p_addr +
|
||||||
(offset * link_desc_size));
|
(offset * link_desc_size));
|
||||||
|
@@ -333,17 +333,20 @@ dp_rx_mon_link_desc_return(struct dp_pdev *dp_pdev,
|
|||||||
* multiple nbufs. This function
|
* multiple nbufs. This function
|
||||||
* is to return data length in
|
* is to return data length in
|
||||||
* fragmented buffer
|
* fragmented buffer
|
||||||
*
|
* @soc: Datapath soc handle
|
||||||
* @total_len: pointer to remaining data length.
|
* @total_len: pointer to remaining data length.
|
||||||
* @frag_len: pointer to data length in this fragment.
|
* @frag_len: pointer to data length in this fragment.
|
||||||
* @l2_hdr_pad: l2 header padding
|
* @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,
|
uint32_t *frag_len,
|
||||||
uint16_t l2_hdr_pad)
|
uint16_t l2_hdr_pad)
|
||||||
{
|
{
|
||||||
if (*total_len >= (RX_MONITOR_BUFFER_SIZE - RX_PKT_TLVS_LEN)) {
|
uint32_t rx_pkt_tlv_len = soc->rx_pkt_tlv_size;
|
||||||
*frag_len = RX_MONITOR_BUFFER_SIZE - RX_PKT_TLVS_LEN -
|
|
||||||
|
if (*total_len >= (RX_MONITOR_BUFFER_SIZE - rx_pkt_tlv_len)) {
|
||||||
|
*frag_len = RX_MONITOR_BUFFER_SIZE - rx_pkt_tlv_len -
|
||||||
l2_hdr_pad;
|
l2_hdr_pad;
|
||||||
*total_len -= *frag_len;
|
*total_len -= *frag_len;
|
||||||
} else {
|
} 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;
|
struct hal_rx_mon_dest_buf_info frame_info;
|
||||||
uint16_t tot_payload_len =
|
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) {
|
if (msdu_info->msdu_flags & HAL_MSDU_F_MSDU_CONTINUATION) {
|
||||||
/* First buffer of MSDU */
|
/* First buffer of MSDU */
|
||||||
@@ -561,7 +564,8 @@ dp_rx_mon_parse_desc_buffer(struct dp_soc *dp_soc,
|
|||||||
|
|
||||||
*is_frag_p = true;
|
*is_frag_p = true;
|
||||||
if (HAL_HW_RX_DECAP_FORMAT_RAW ==
|
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 =
|
*l2_hdr_offset_p =
|
||||||
DP_RX_MON_RAW_L2_HDR_PAD_BYTE;
|
DP_RX_MON_RAW_L2_HDR_PAD_BYTE;
|
||||||
frame_info.is_decap_raw = 1;
|
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 */
|
/* MSDU with single buffer */
|
||||||
*frag_len_p = msdu_info->msdu_len;
|
*frag_len_p = msdu_info->msdu_len;
|
||||||
if (HAL_HW_RX_DECAP_FORMAT_RAW ==
|
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 =
|
*l2_hdr_offset_p =
|
||||||
DP_RX_MON_RAW_L2_HDR_PAD_BYTE;
|
DP_RX_MON_RAW_L2_HDR_PAD_BYTE;
|
||||||
frame_info.is_decap_raw = 1;
|
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
|
* 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.
|
* 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
|
* @head_msdu: NULL if first time called else &msdu
|
||||||
* @msdu: Msdu where frag address needs to be added via nr_frag
|
* @msdu: Msdu where frag address needs to be added via nr_frag
|
||||||
* @last: Used to traverse in list if this feature is disabled.
|
* @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
|
* @l2_hdr_offset: l2 hdr padding
|
||||||
*/
|
*/
|
||||||
static inline
|
static inline
|
||||||
QDF_STATUS dp_rx_mon_add_msdu_to_list(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
|
QDF_STATUS dp_rx_mon_add_msdu_to_list(struct dp_soc *soc, qdf_nbuf_t *head_msdu,
|
||||||
qdf_nbuf_t *last, qdf_frag_t rx_desc_tlv,
|
qdf_nbuf_t msdu, qdf_nbuf_t *last,
|
||||||
uint32_t frag_len,
|
qdf_frag_t rx_desc_tlv, uint32_t frag_len,
|
||||||
uint32_t l2_hdr_offset)
|
uint32_t l2_hdr_offset)
|
||||||
{
|
{
|
||||||
uint32_t num_frags;
|
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);
|
num_frags = qdf_nbuf_get_nr_frags(msdu_curr);
|
||||||
if (num_frags < QDF_NBUF_MAX_FRAGS) {
|
if (num_frags < QDF_NBUF_MAX_FRAGS) {
|
||||||
qdf_nbuf_add_rx_frag(rx_desc_tlv, msdu_curr,
|
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,
|
frag_len + l2_hdr_offset,
|
||||||
RX_MONITOR_BUFFER_SIZE,
|
RX_MONITOR_BUFFER_SIZE,
|
||||||
false);
|
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)
|
!= QDF_STATUS_SUCCESS)
|
||||||
return QDF_STATUS_E_FAILURE;
|
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,
|
frag_len + l2_hdr_offset, RX_MONITOR_BUFFER_SIZE,
|
||||||
false);
|
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.
|
* If feature is disabled, then removal happens in restitch logic.
|
||||||
*
|
*
|
||||||
|
* @soc: Datapath soc handle
|
||||||
* @head_msdu: Head msdu
|
* @head_msdu: Head msdu
|
||||||
* @tail_msdu: Tail msdu
|
* @tail_msdu: Tail msdu
|
||||||
*/
|
*/
|
||||||
static inline
|
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_nbuf_t *tail_msdu)
|
||||||
{
|
{
|
||||||
qdf_frag_t addr;
|
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 */
|
/* Strip FCS_LEN for Raw frame */
|
||||||
addr = qdf_nbuf_get_frag_addr(*head_msdu, 0);
|
addr = qdf_nbuf_get_frag_addr(*head_msdu, 0);
|
||||||
addr -= SIZE_OF_MONITOR_TLV;
|
addr -= soc->rx_mon_pkt_tlv_size;
|
||||||
if (HAL_RX_DESC_GET_DECAP_FORMAT(addr) ==
|
if (hal_rx_tlv_decap_format_get(addr) == HAL_HW_RX_DECAP_FORMAT_RAW) {
|
||||||
HAL_HW_RX_DECAP_FORMAT_RAW) {
|
|
||||||
qdf_nbuf_trim_add_frag_size(*tail_msdu,
|
qdf_nbuf_trim_add_frag_size(*tail_msdu,
|
||||||
qdf_nbuf_get_nr_frags(*tail_msdu) - 1,
|
qdf_nbuf_get_nr_frags(*tail_msdu) - 1,
|
||||||
-HAL_RX_FCS_LEN, 0);
|
-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;
|
*total_frag_len_p = msdu_info->msdu_len;
|
||||||
*is_frag_p = true;
|
*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);
|
*l2_hdr_offset_p);
|
||||||
} else {
|
} else {
|
||||||
if (*is_frag_p) {
|
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);
|
*l2_hdr_offset_p);
|
||||||
} else {
|
} else {
|
||||||
*frag_len_p = msdu_info->msdu_len;
|
*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
|
static inline
|
||||||
QDF_STATUS dp_rx_mon_add_msdu_to_list(qdf_nbuf_t *head_msdu, qdf_nbuf_t msdu,
|
QDF_STATUS dp_rx_mon_add_msdu_to_list(struct dp_soc *soc, qdf_nbuf_t *head_msdu,
|
||||||
qdf_nbuf_t *last, qdf_frag_t rx_desc_tlv,
|
qdf_nbuf_t msdu, qdf_nbuf_t *last,
|
||||||
uint32_t frag_len,
|
qdf_frag_t rx_desc_tlv, uint32_t frag_len,
|
||||||
uint32_t l2_hdr_offset)
|
uint32_t l2_hdr_offset)
|
||||||
{
|
{
|
||||||
if (head_msdu && !*head_msdu) {
|
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
|
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_nbuf_t *tail_msdu)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@@ -198,7 +198,8 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
|||||||
|
|
||||||
last = NULL;
|
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 = &dp_pdev->rx_mon_recv_status;
|
||||||
rs->cdp_rs_rxdma_err = false;
|
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,
|
total_frag_len, frag_len,
|
||||||
msdu_list.msdu_info[i].msdu_flags);
|
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
|
rx_buf_size = rx_pkt_offset + l2_hdr_offset
|
||||||
+ frag_len;
|
+ 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,
|
msdu_list.msdu_info[i].msdu_len,
|
||||||
frag_len);
|
frag_len);
|
||||||
|
|
||||||
if (dp_rx_mon_add_msdu_to_list(head_msdu, msdu, &last,
|
if (dp_rx_mon_add_msdu_to_list(soc, head_msdu, msdu,
|
||||||
rx_desc_tlv, frag_len,
|
&last, rx_desc_tlv,
|
||||||
l2_hdr_offset)
|
frag_len, l2_hdr_offset)
|
||||||
!= QDF_STATUS_SUCCESS) {
|
!= QDF_STATUS_SUCCESS) {
|
||||||
dp_rx_mon_add_msdu_to_list_failure_handler(rx_desc_tlv,
|
dp_rx_mon_add_msdu_to_list_failure_handler(rx_desc_tlv,
|
||||||
dp_pdev, &last, head_msdu,
|
dp_pdev, &last, head_msdu,
|
||||||
@@ -436,10 +437,12 @@ next_msdu:
|
|||||||
* Store the current link buffer into to the local
|
* Store the current link buffer into to the local
|
||||||
* structure to be used for release purpose.
|
* 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);
|
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,
|
if (dp_rx_monitor_link_desc_return(dp_pdev,
|
||||||
(hal_buff_addrinfo_t)
|
(hal_buff_addrinfo_t)
|
||||||
rx_link_buf_info,
|
rx_link_buf_info,
|
||||||
@@ -450,7 +453,7 @@ next_msdu:
|
|||||||
} while (buf_info.paddr && msdu_cnt);
|
} while (buf_info.paddr && msdu_cnt);
|
||||||
|
|
||||||
dp_rx_mon_init_tail_msdu(head_msdu, msdu, last, tail_msdu);
|
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;
|
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;
|
uint32_t rx_pkt_offset, l2_hdr_offset;
|
||||||
|
|
||||||
data = qdf_nbuf_data(msdu);
|
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);
|
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);
|
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;
|
struct hal_rx_mon_dest_buf_info buf_info;
|
||||||
uint32_t pad_byte_pholder = 0;
|
uint32_t pad_byte_pholder = 0;
|
||||||
qdf_nbuf_t msdu_curr;
|
qdf_nbuf_t msdu_curr;
|
||||||
|
uint16_t rx_mon_tlv_size = soc->rx_mon_pkt_tlv_size;
|
||||||
|
|
||||||
if (qdf_unlikely(!dp_pdev)) {
|
if (qdf_unlikely(!dp_pdev)) {
|
||||||
dp_rx_mon_dest_debug("%pK: pdev is null for mac_id = %d", soc, mac_id);
|
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)
|
if (!head_msdu || !tail_msdu)
|
||||||
goto mpdu_stitch_fail;
|
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 */
|
/* It looks like there is some issue on MPDU len err */
|
||||||
/* Need further investigate if drop the packet */
|
/* Need further investigate if drop the packet */
|
||||||
DP_STATS_INC(dp_pdev, dropped.mon_rx_drop, 1);
|
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 */
|
/* Look for FCS error */
|
||||||
num_frags = qdf_nbuf_get_nr_frags(tail_msdu);
|
num_frags = qdf_nbuf_get_nr_frags(tail_msdu);
|
||||||
rx_desc =
|
rx_desc = qdf_nbuf_get_frag_addr(tail_msdu, num_frags - 1) -
|
||||||
qdf_nbuf_get_frag_addr(tail_msdu,
|
rx_mon_tlv_size;
|
||||||
num_frags - 1) - SIZE_OF_MONITOR_TLV;
|
rx_status->cdp_rs_fcs_err = hal_rx_tlv_mpdu_fcs_err_get(soc->hal_soc,
|
||||||
rx_status->cdp_rs_fcs_err = HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc);
|
rx_desc);
|
||||||
dp_pdev->ppdu_info.rx_status.rs_fcs_err =
|
dp_pdev->ppdu_info.rx_status.rs_fcs_err = rx_status->cdp_rs_fcs_err;
|
||||||
HAL_RX_DESC_GET_MPDU_FCS_ERR(rx_desc);
|
|
||||||
|
|
||||||
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);
|
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
|
/* 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
|
* on the decap type and the corresponding number of raw bytes to copy
|
||||||
* status header
|
* 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);
|
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 =
|
frag_addr =
|
||||||
qdf_nbuf_get_frag_addr(msdu_curr, frags_iter);
|
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
|
* 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) {
|
if (buf_info.first_buffer) {
|
||||||
/* Src addr from where llc header needs to be copied */
|
/* Src addr from where llc header needs to be copied */
|
||||||
rx_src_desc =
|
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 */
|
/* Size of buffer with llc header */
|
||||||
frag_size = frag_size -
|
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);
|
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 */
|
/* It looks like there is some issue on MPDU len err */
|
||||||
/* Need further investigate if drop the packet */
|
/* Need further investigate if drop the packet */
|
||||||
DP_STATS_INC(dp_pdev, dropped.mon_rx_drop, 1);
|
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_desc = qdf_nbuf_data(last_msdu);
|
||||||
|
|
||||||
rx_status->cdp_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,
|
||||||
dp_pdev->ppdu_info.rx_status.rs_fcs_err =
|
rx_desc);
|
||||||
HAL_RX_DESC_GET_MPDU_FCS_ERR(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 */
|
/* Fill out the rx_status from the PPDU start and end fields */
|
||||||
/* HAL_RX_GET_PPDU_STATUS(soc, mac_id, rx_status); */
|
/* HAL_RX_GET_PPDU_STATUS(soc, mac_id, rx_status); */
|
||||||
|
|
||||||
rx_desc = qdf_nbuf_data(head_msdu);
|
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
|
/* Easy case - The MSDU status indicates that this is a non-decapped
|
||||||
* packet in RAW mode.
|
* 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);
|
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);
|
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 {
|
} else {
|
||||||
/* Reload the hdr ptr only on non-first MSDUs */
|
/* Reload the hdr ptr only on non-first MSDUs */
|
||||||
rx_desc = qdf_nbuf_data(msdu_orig);
|
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 */
|
/* 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,
|
uint32_t mac_id,
|
||||||
qdf_nbuf_t mpdu)
|
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);
|
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||||
void *data;
|
void *data;
|
||||||
struct ieee80211_frame *wh;
|
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) *
|
rx_desc_pool_size = wlan_cfg_get_dp_soc_rx_sw_desc_weight(soc_cfg_ctx) *
|
||||||
num_entries;
|
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_size = RX_MONITOR_BUFFER_SIZE;
|
||||||
rx_desc_pool->buf_alignment = RX_MONITOR_BUFFER_ALIGNMENT;
|
rx_desc_pool->buf_alignment = RX_MONITOR_BUFFER_ALIGNMENT;
|
||||||
/* Enable frag processing if feature is enabled */
|
/* 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;
|
uint32_t rx_bufs_used = 0;
|
||||||
void *rx_msdu_link_desc;
|
void *rx_msdu_link_desc;
|
||||||
uint32_t msdu_count = 0;
|
uint32_t msdu_count = 0;
|
||||||
uint16 num_msdus;
|
uint16_t num_msdus;
|
||||||
struct hal_buf_info buf_info;
|
struct hal_buf_info buf_info;
|
||||||
struct hal_rx_msdu_list msdu_list;
|
struct hal_rx_msdu_list msdu_list;
|
||||||
qdf_nbuf_t nbuf;
|
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)) &&
|
hal_srng_dst_peek(hal_soc, mon_dst_srng)) &&
|
||||||
reap_cnt < MON_DROP_REAP_LIMIT) {
|
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);
|
&buf_info, &msdu_count);
|
||||||
|
|
||||||
do {
|
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
|
* Store the current link buffer into to the local
|
||||||
* structure to be used for release purpose.
|
* 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.paddr,
|
||||||
buf_info.sw_cookie,
|
buf_info.sw_cookie,
|
||||||
buf_info.rbm);
|
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);
|
&buf_info);
|
||||||
if (dp_rx_monitor_link_desc_return(pdev,
|
if (dp_rx_monitor_link_desc_return(pdev,
|
||||||
(hal_buff_addrinfo_t)
|
(hal_buff_addrinfo_t)
|
||||||
|
@@ -76,7 +76,7 @@ dp_rx_mon_handle_status_buf_done(struct dp_pdev *pdev,
|
|||||||
struct dp_soc *soc = pdev->soc;
|
struct dp_soc *soc = pdev->soc;
|
||||||
hal_soc_handle_t hal_soc;
|
hal_soc_handle_t hal_soc;
|
||||||
void *ring_entry;
|
void *ring_entry;
|
||||||
uint32_t rx_buf_cookie;
|
struct hal_buf_info hbi;
|
||||||
qdf_nbuf_t status_nbuf;
|
qdf_nbuf_t status_nbuf;
|
||||||
struct dp_rx_desc *rx_desc;
|
struct dp_rx_desc *rx_desc;
|
||||||
void *rx_tlv;
|
void *rx_tlv;
|
||||||
@@ -91,8 +91,10 @@ dp_rx_mon_handle_status_buf_done(struct dp_pdev *pdev,
|
|||||||
soc, mon_status_srng);
|
soc, mon_status_srng);
|
||||||
return DP_MON_STATUS_NO_DMA;
|
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);
|
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 =
|
while (qdf_likely((rxdma_mon_status_ring_entry =
|
||||||
hal_srng_src_peek_n_get_next(hal_soc, mon_status_srng))
|
hal_srng_src_peek_n_get_next(hal_soc, mon_status_srng))
|
||||||
&& quota--)) {
|
&& quota--)) {
|
||||||
uint32_t rx_buf_cookie;
|
struct hal_buf_info hbi;
|
||||||
qdf_nbuf_t status_nbuf;
|
qdf_nbuf_t status_nbuf;
|
||||||
struct dp_rx_desc *rx_desc;
|
struct dp_rx_desc *rx_desc;
|
||||||
uint8_t *status_buf;
|
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)) {
|
if (qdf_likely(buf_addr)) {
|
||||||
|
|
||||||
rx_buf_cookie =
|
hal_rx_buf_cookie_rbm_get(soc->hal_soc,
|
||||||
HAL_RX_BUF_COOKIE_GET(
|
(uint32_t *)rxdma_mon_status_ring_entry,
|
||||||
rxdma_mon_status_ring_entry);
|
&hbi);
|
||||||
rx_desc = dp_rx_cookie_2_va_mon_status(soc,
|
rx_desc = dp_rx_cookie_2_va_mon_status(soc,
|
||||||
rx_buf_cookie);
|
hbi.sw_cookie);
|
||||||
|
|
||||||
qdf_assert_always(rx_desc);
|
qdf_assert_always(rx_desc);
|
||||||
|
|
||||||
@@ -2085,8 +2087,9 @@ buf_replenish:
|
|||||||
&tail, mac_id, rx_desc_pool);
|
&tail, mac_id, rx_desc_pool);
|
||||||
|
|
||||||
hal_rxdma_buff_addr_info_set(
|
hal_rxdma_buff_addr_info_set(
|
||||||
rxdma_mon_status_ring_entry,
|
hal_soc, rxdma_mon_status_ring_entry,
|
||||||
0, 0, HAL_RX_BUF_RBM_SW3_BM);
|
0, 0,
|
||||||
|
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
|
||||||
work_done++;
|
work_done++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2097,8 +2100,10 @@ buf_replenish:
|
|||||||
rx_desc->in_use = 1;
|
rx_desc->in_use = 1;
|
||||||
rx_desc->unmapped = 0;
|
rx_desc->unmapped = 0;
|
||||||
|
|
||||||
hal_rxdma_buff_addr_info_set(rxdma_mon_status_ring_entry,
|
hal_rxdma_buff_addr_info_set(hal_soc,
|
||||||
paddr, rx_desc->cookie, HAL_RX_BUF_RBM_SW3_BM);
|
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);
|
hal_srng_src_get_next(hal_soc, mon_status_srng);
|
||||||
work_done++;
|
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,
|
return dp_rx_mon_status_buffers_replenish(soc, mac_id, mon_status_ring,
|
||||||
rx_desc_pool, num_entries,
|
rx_desc_pool, num_entries,
|
||||||
&desc_list, &tail,
|
&desc_list, &tail,
|
||||||
HAL_RX_BUF_RBM_SW3_BM);
|
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
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",
|
dp_debug("Mon RX Desc status Pool[%d] init entries=%u",
|
||||||
pdev_id, num_entries);
|
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_size = RX_MON_STATUS_BUF_SIZE;
|
||||||
rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
|
rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
|
||||||
/* Disable frag processing flag */
|
/* 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;
|
(*desc_list)->rx_desc.unmapped = 0;
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
hal_rxdma_buff_addr_info_set(rxdma_ring_entry, paddr,
|
hal_rxdma_buff_addr_info_set(dp_soc->hal_soc,
|
||||||
(*desc_list)->rx_desc.cookie, owner);
|
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_rx_mon_status_debug("%pK: rx_desc=%pK, cookie=%d, nbuf=%pK, paddr=%pK",
|
||||||
dp_soc, &(*desc_list)->rx_desc,
|
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)) &&
|
hal_srng_src_peek_n_get_next(hal_soc, mon_status_srng)) &&
|
||||||
reap_cnt < MON_DROP_REAP_LIMIT && quota--) {
|
reap_cnt < MON_DROP_REAP_LIMIT && quota--) {
|
||||||
uint64_t buf_addr;
|
uint64_t buf_addr;
|
||||||
uint32_t rx_buf_cookie;
|
struct hal_buf_info hbi;
|
||||||
struct dp_rx_desc *rx_desc;
|
struct dp_rx_desc *rx_desc;
|
||||||
qdf_nbuf_t status_nbuf;
|
qdf_nbuf_t status_nbuf;
|
||||||
uint8_t *status_buf;
|
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));
|
((uint64_t)(HAL_RX_BUFFER_ADDR_39_32_GET(ring_desc)) << 32));
|
||||||
|
|
||||||
if (qdf_likely(buf_addr)) {
|
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_desc = dp_rx_cookie_2_va_mon_status(soc,
|
||||||
rx_buf_cookie);
|
hbi.sw_cookie);
|
||||||
|
|
||||||
qdf_assert_always(rx_desc);
|
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,
|
&tail, mac_id,
|
||||||
rx_desc_pool);
|
rx_desc_pool);
|
||||||
|
|
||||||
hal_rxdma_buff_addr_info_set(ring_desc, 0, 0,
|
hal_rxdma_buff_addr_info_set(hal_soc, ring_desc, 0, 0,
|
||||||
HAL_RX_BUF_RBM_SW3_BM);
|
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
|
||||||
break;
|
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->nbuf = status_nbuf;
|
||||||
rx_desc->in_use = 1;
|
rx_desc->in_use = 1;
|
||||||
|
|
||||||
hal_rxdma_buff_addr_info_set(ring_desc, iova, rx_desc->cookie,
|
hal_rxdma_buff_addr_info_set(hal_soc, ring_desc, iova,
|
||||||
HAL_RX_BUF_RBM_SW3_BM);
|
rx_desc->cookie,
|
||||||
|
HAL_RX_BUF_RBM_SW3_BM(soc->wbm_sw0_bm_id));
|
||||||
|
|
||||||
reap_cnt++;
|
reap_cnt++;
|
||||||
hal_srng_src_get_next(hal_soc, mon_status_srng);
|
hal_srng_src_get_next(hal_soc, mon_status_srng);
|
||||||
|
Reference in New Issue
Block a user