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:
@@ -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));
|
||||
|
@@ -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)
|
||||
{
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
|
Referencia en una nueva incidencia
Block a user