summaryrefslogtreecommitdiff
path: root/qcwcn/wifi_hal
diff options
context:
space:
mode:
authorSunil Ravi <sunilravi@google.com>2019-03-23 01:06:33 +0000
committerSunil Ravi <sunilravi@google.com>2019-03-23 01:06:33 +0000
commit9584c413fae876e2883fc0e5a93a98df0f32d3ff (patch)
tree1cfb2baacdcb04518983a3353864247ed83035aa /qcwcn/wifi_hal
parentdbac4bd447d0bc8323a1fec31406475036072095 (diff)
downloadwlan-9584c413fae876e2883fc0e5a93a98df0f32d3ff.tar.gz
Revert "Wifi-hal: RX and Per packet fate stats for new pkt log version V2"
Bug: 129148201 This reverts commit dbac4bd447d0bc8323a1fec31406475036072095. Reason for revert: Regression observed in 3P App Launch which increased by ~204ms Change-Id: I71513fcaa4d3aa0dfdad51b1e4d2845479d500cd
Diffstat (limited to 'qcwcn/wifi_hal')
-rw-r--r--qcwcn/wifi_hal/pkt_stats.h41
-rw-r--r--qcwcn/wifi_hal/wifilogger_diag.cpp184
2 files changed, 1 insertions, 224 deletions
diff --git a/qcwcn/wifi_hal/pkt_stats.h b/qcwcn/wifi_hal/pkt_stats.h
index 7cc64b8..88a58c0 100644
--- a/qcwcn/wifi_hal/pkt_stats.h
+++ b/qcwcn/wifi_hal/pkt_stats.h
@@ -186,24 +186,6 @@ struct rx_mpdu_end {
u32 fcs_err : 1; //[31]
} __attribute__((packed));
-/* structure implemented w.r.t PKT_LOG_V2 Version */
-struct rx_msdu_start_v1 {
- u32 reserved1[2];
- u32 reserved2 : 8; //[7:0]
- u32 decap_format : 2; //[9:8]
- u32 reserved3 : 22; //[31:10]
- u32 reserved4[2];
-} __attribute__((packed));
-
-struct rx_msdu_end_v1 {
- u32 reserved1[4];
- u32 reserved2 : 15; //[14:0]
- u32 last_msdu : 1; //[15]
- u32 reserved3 : 16; //[31:16]
- u32 reserved4[9];
-} __attribute__((packed));
-/************************************************************/
-
#define PREAMBLE_L_SIG_RATE 0x04
#define PREAMBLE_VHT_SIG_A_1 0x08
#define PREAMBLE_VHT_SIG_A_2 0x0c
@@ -241,18 +223,9 @@ struct rx_ppdu_end {
u32 reserved2[5];
} __attribute__((packed));
-struct rx_ppdu_end_V1 {
- u32 reserved1[18];
- u32 wb_timestamp_lower_32;
- u32 reserved2[18];
-} __attribute__((packed));
-
#define MAX_MSDUS_PER_MPDU 3
#define MAX_RXMPDUS_PER_AMPDU 64
#define RX_HTT_HDR_STATUS_LEN 64
-/* RX Data length is 256 for PKT_LOG_V2 Version */
-#define RX_HTT_HDR_STATUS_LEN_V1 256
-
typedef struct {
struct rx_attention attention;
u32 reserved1;
@@ -265,20 +238,6 @@ typedef struct {
char rx_hdr_status[RX_HTT_HDR_STATUS_LEN];
}__attribute__((packed)) rb_pkt_stats_t;
-/* structure implemented w.r.t PKT_LOG_V2 Version */
-typedef struct {
- struct rx_attention attention;
- u32 reserved1[2];
- struct rx_mpdu_start mpdu_start;
- struct rx_msdu_start_v1 msdu_start;
- struct rx_msdu_end_v1 msdu_end;
- struct rx_mpdu_end mpdu_end;
- struct rx_ppdu_start ppdu_start;
- struct rx_ppdu_end_V1 ppdu_end;
- char rx_hdr_status[RX_HTT_HDR_STATUS_LEN_V1];
-}__attribute__((packed)) rb_pkt_stats_t_v1;
-/************************************************************/
-
/*Tx stats specific structures. */
struct ppdu_status {
u32 ba_start_seq_num : 12; //[11:0]
diff --git a/qcwcn/wifi_hal/wifilogger_diag.cpp b/qcwcn/wifi_hal/wifilogger_diag.cpp
index 91545db..3714c54 100644
--- a/qcwcn/wifi_hal/wifilogger_diag.cpp
+++ b/qcwcn/wifi_hal/wifilogger_diag.cpp
@@ -1321,38 +1321,6 @@ static wifi_error update_stats_to_ring_buf(hal_info *info,
return WIFI_SUCCESS;
}
-static u8 cck_ratecode_mapping(u8 rate)
-{
- u8 rate_code = 0;
-
- switch (rate) {
- case 0x1:
- rate_code = 0x3;
- break;
- case 0x2:
- case 0x5:
- rate_code = 0x2;
- break;
- case 0x3:
- case 0x6:
- rate_code = 0x1;
- break;
- case 0x4:
- case 0x7:
- rate_code = 0x0;
- break;
- }
- return rate_code;
-}
-
-static u8 ofdm_ratecode_mapping(u8 rate)
-{
- u8 rate_code = 0;
-
- rate_code = rate - 8;
- return rate_code;
-}
-
static u16 get_rate_v1(u16 mcs_r)
{
MCS mcs;
@@ -1538,136 +1506,6 @@ static wifi_error populate_rx_aggr_stats(hal_info *info)
return WIFI_SUCCESS;
}
-static wifi_error parse_rx_stats_v2(hal_info *info, u8 *buf, u16 size)
-{
- wifi_error status = WIFI_SUCCESS;
- rb_pkt_stats_t_v1 *rx_stats_rcvd = (rb_pkt_stats_t_v1 *)buf;
- wifi_ring_buffer_entry *pRingBufferEntry;
- u32 len_ring_buffer_entry = 0;
-
- if (size < sizeof(rb_pkt_stats_t)) {
- ALOGE("%s Unexpected rx stats event length: %d", __FUNCTION__, size);
- memset(info->rx_aggr_pkts, 0, info->rx_buf_size_occupied);
- memset(&info->aggr_stats, 0, sizeof(rx_aggr_stats));
- info->rx_buf_size_occupied = 0;
- return WIFI_ERROR_UNKNOWN;
- }
-
- len_ring_buffer_entry = sizeof(wifi_ring_buffer_entry)
- + sizeof(wifi_ring_per_packet_status_entry)
- + RX_HTT_HDR_STATUS_LEN_V1;
-
- if (len_ring_buffer_entry + info->rx_buf_size_occupied
- > info->rx_buf_size_allocated) {
- wifi_ring_buffer_entry *temp;
- temp = (wifi_ring_buffer_entry *)realloc(info->rx_aggr_pkts,
- len_ring_buffer_entry + info->rx_buf_size_occupied);
- if (temp == NULL) {
- ALOGE("%s: Failed to reallocate memory", __FUNCTION__);
- free(info->rx_aggr_pkts);
- info->rx_aggr_pkts = NULL;
- return WIFI_ERROR_OUT_OF_MEMORY;
- }
- info->rx_aggr_pkts = temp;
- memset((u8 *)info->rx_aggr_pkts + info->rx_buf_size_allocated, 0,
- len_ring_buffer_entry + info->rx_buf_size_occupied
- - info->rx_buf_size_allocated);
- info->rx_buf_size_allocated =
- len_ring_buffer_entry + info->rx_buf_size_occupied;
- }
-
- pRingBufferEntry = (wifi_ring_buffer_entry *)((u8 *)info->rx_aggr_pkts
- + info->rx_buf_size_occupied);
-
- info->rx_buf_size_occupied += len_ring_buffer_entry;
-
- /* Fill size of the entry in rb entry which can be used while populating
- * the data. Actual size that needs to be sent to ring buffer is only pps
- * entry size
- */
- pRingBufferEntry->entry_size = len_ring_buffer_entry;
- wifi_ring_per_packet_status_entry *rb_pkt_stats =
- (wifi_ring_per_packet_status_entry *)(pRingBufferEntry + 1);
-
- memset(rb_pkt_stats, 0, sizeof(wifi_ring_per_packet_status_entry));
-
- /* Peer tx packet and it is an Rx packet for us */
- rb_pkt_stats->flags |= PER_PACKET_ENTRY_FLAGS_DIRECTION_TX;
-
- if (!((rx_stats_rcvd->mpdu_end.overflow_err) ||
- (rx_stats_rcvd->attention.fcs_err) ||
- (rx_stats_rcvd->attention.mpdu_length_err) ||
- (rx_stats_rcvd->attention.msdu_length_err) ||
- (rx_stats_rcvd->attention.tkip_mic_err) ||
- (rx_stats_rcvd->attention.decrypt_err)))
- rb_pkt_stats->flags |= PER_PACKET_ENTRY_FLAGS_TX_SUCCESS;
-
- rb_pkt_stats->flags |= PER_PACKET_ENTRY_FLAGS_80211_HEADER;
-
- if (rx_stats_rcvd->mpdu_start.encrypted)
- rb_pkt_stats->flags |= PER_PACKET_ENTRY_FLAGS_PROTECTED;
-
- if (rx_stats_rcvd->attention.first_mpdu) {
- MCS *mcs = &info->aggr_stats.RxMCS;
- u32 ht_vht_sig;
-
- /* Flush the cached stats as this is the first MPDU. */
- memset(&info->aggr_stats, 0, sizeof(rx_aggr_stats));
- if (rx_stats_rcvd->ppdu_start.preamble_type == PREAMBLE_L_SIG_RATE) {
- if (rx_stats_rcvd->ppdu_start.l_sig_rate_select) {
- mcs->mcs_s.preamble = WIFI_HW_RATECODE_PREAM_CCK;
- mcs->mcs_s.rate = cck_ratecode_mapping(rx_stats_rcvd->ppdu_start.l_sig_rate);
- } else {
- mcs->mcs_s.preamble = WIFI_HW_RATECODE_PREAM_OFDM;
- mcs->mcs_s.rate = ofdm_ratecode_mapping(rx_stats_rcvd->ppdu_start.l_sig_rate);
- }
- /*BW is 0 for legacy cases*/
- } else if (rx_stats_rcvd->ppdu_start.preamble_type ==
- PREAMBLE_VHT_SIG_A_1) {
- ht_vht_sig = rx_stats_rcvd->ppdu_start.ht_sig_vht_sig_a_1;
- mcs->mcs_s.nss = ((ht_vht_sig >> 3) & 0x3);
- //mcs->mcs_s.nss = (ht_vht_sig & BITMASK(7)) >> 3;
- mcs->mcs_s.preamble = WIFI_HW_RATECODE_PREAM_HT;
- mcs->mcs_s.rate = ((ht_vht_sig & BITMASK(7)) % 8) & 0xF;
- mcs->mcs_s.bw = ((ht_vht_sig >> 7) & 1);
- mcs->mcs_s.short_gi =
- ((rx_stats_rcvd->ppdu_start.ht_sig_vht_sig_a_2 >> 7) & 1);
- } else if (rx_stats_rcvd->ppdu_start.preamble_type ==
- PREAMBLE_VHT_SIG_A_2) {
- ht_vht_sig = rx_stats_rcvd->ppdu_start.ht_sig_vht_sig_a_1;
- mcs->mcs_s.nss = ((ht_vht_sig >> 10) & 0x3);
- mcs->mcs_s.preamble = WIFI_HW_RATECODE_PREAM_VHT;
- mcs->mcs_s.rate =
- (rx_stats_rcvd->ppdu_start.ht_sig_vht_sig_a_2 >> 4) & BITMASK(4);
- mcs->mcs_s.bw = (ht_vht_sig & 3);
- mcs->mcs_s.short_gi =
- (rx_stats_rcvd->ppdu_start.ht_sig_vht_sig_a_2 & 1);
- }
-
- info->aggr_stats.last_transmit_rate
- = get_rate_v1(info->aggr_stats.RxMCS.mcs);
-
- info->aggr_stats.rssi = rx_stats_rcvd->ppdu_start.rssi_comb;
- info->aggr_stats.tid = rx_stats_rcvd->mpdu_start.tid;
- }
- rb_pkt_stats->link_layer_transmit_sequence
- = rx_stats_rcvd->mpdu_start.seq_num;
-
- memcpy(&rb_pkt_stats->data[0], &rx_stats_rcvd->rx_hdr_status[0],
- RX_HTT_HDR_STATUS_LEN_V1);
-
- if ((rx_stats_rcvd->attention.last_mpdu
- && rx_stats_rcvd->msdu_end.last_msdu)
- || (rx_stats_rcvd->attention.first_mpdu
- && rx_stats_rcvd->attention.last_mpdu)) {
- info->aggr_stats.timestamp = rx_stats_rcvd->ppdu_end.wb_timestamp_lower_32;
-
- status = populate_rx_aggr_stats(info);
- }
-
- return status;
-}
-
static wifi_error parse_rx_stats(hal_info *info, u8 *buf, u16 size)
{
wifi_error status = WIFI_SUCCESS;
@@ -2392,27 +2230,7 @@ static wifi_error parse_stats_record_v2(hal_info *info,
{
wifi_error status = WIFI_SUCCESS;
- if (pkt_stats_header->log_type == PKTLOG_TYPE_RX_STAT) {
- /* Ignore the event if it doesn't carry RX descriptor */
- if (pkt_stats_header->flags & PKT_INFO_FLG_RX_RXDESC_MASK)
- status = parse_rx_stats_v2(info,
- (u8 *)(pkt_stats_header + 1),
- pkt_stats_header->size);
- else
- status = WIFI_SUCCESS;
- } else if (pkt_stats_header->log_type == PKTLOG_TYPE_PKT_DUMP_V2) {
- pthread_mutex_lock(&info->pkt_fate_stats_lock);
- if (info->fate_monitoring_enabled) {
- if (pkt_stats_header->flags & PKT_INFO_FLG_PKT_DUMP_V2)
- status = parse_pkt_fate_stats(info,
- (u8 *)pkt_stats_header + sizeof(wh_pktlog_hdr_v2_t),
- pkt_stats_header->size);
- else
- status = WIFI_SUCCESS;
- } else
- status = WIFI_SUCCESS;
- pthread_mutex_unlock(&info->pkt_fate_stats_lock);
- } else if (pkt_stats_header->log_type == PKTLOG_TYPE_PKT_SW_EVENT) {
+ if (pkt_stats_header->log_type == PKTLOG_TYPE_PKT_SW_EVENT) {
status = parse_stats_sw_event(info, pkt_stats_header);
} else
ALOGE("%s: invalid log_type %d",__FUNCTION__, pkt_stats_header->log_type);