qcacld-3.0: Dptrace enhancements

* Log EAPOL, ARP, DHCP, MGMT, ROAM Events, ICMP, Data packets,
  TX-Completions by default.
* Set default verbosity as low (existing is high)
* Throttle ICMP and Data packets if threshold exceeds.
* Enable live mode by default. Added ini entry to disable
  it and configure high throughput thresh - gDptraceConfig
* Log only SA and DA for proto packets (and not 32 bytes)
* Format prints to fit in 1 line.

CRs-Fixed: 2051134
Change-Id: Ia94732e49023950f458a7402650d4b8f5e1d5563
This commit is contained in:
Mohit Khanna
2017-05-17 17:11:59 -07:00
committed by snandini
parent 7ae88fbc8a
commit f8f9682e02
11 changed files with 174 additions and 38 deletions

View File

@@ -2205,7 +2205,6 @@ htt_rx_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev,
qdf_dp_trace_set_track(msdu, QDF_RX); qdf_dp_trace_set_track(msdu, QDF_RX);
QDF_NBUF_CB_TX_PACKET_TRACK(msdu) = QDF_NBUF_TX_PKT_DATA_TRACK; QDF_NBUF_CB_TX_PACKET_TRACK(msdu) = QDF_NBUF_TX_PKT_DATA_TRACK;
QDF_NBUF_CB_RX_CTX_ID(msdu) = rx_ctx_id; QDF_NBUF_CB_RX_CTX_ID(msdu) = rx_ctx_id;
ol_rx_log_packet(pdev, peer_id, msdu);
DPTRACE(qdf_dp_trace(msdu, DPTRACE(qdf_dp_trace(msdu,
QDF_DP_TRACE_RX_HTT_PACKET_PTR_RECORD, QDF_DP_TRACE_RX_HTT_PACKET_PTR_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,

View File

@@ -1626,17 +1626,6 @@ ol_rx_in_order_deliver(struct ol_txrx_vdev_t *vdev,
ol_rx_data_process(peer, msdu_list); ol_rx_data_process(peer, msdu_list);
} }
void ol_rx_log_packet(htt_pdev_handle htt_pdev,
uint8_t peer_id, qdf_nbuf_t msdu)
{
struct ol_txrx_peer_t *peer;
peer = ol_txrx_peer_find_by_id(htt_pdev->txrx_pdev, peer_id);
if (peer)
qdf_dp_trace_log_pkt(peer->vdev->vdev_id, msdu, QDF_RX,
QDF_TRACE_DEFAULT_PDEV_ID);
}
void void
ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev, ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev,
uint32_t msdu_count, uint32_t msdu_count,

View File

@@ -52,7 +52,6 @@ struct hdd_context;
#define FW_MODULE_LOG_LEVEL_STRING_LENGTH (255) #define FW_MODULE_LOG_LEVEL_STRING_LENGTH (255)
#define TX_SCHED_WRR_PARAM_STRING_LENGTH (50) #define TX_SCHED_WRR_PARAM_STRING_LENGTH (50)
#define TX_SCHED_WRR_PARAMS_NUM (5) #define TX_SCHED_WRR_PARAMS_NUM (5)
#define CFG_ENABLE_RX_THREAD (1 << 0) #define CFG_ENABLE_RX_THREAD (1 << 0)
#define CFG_ENABLE_RPS (1 << 1) #define CFG_ENABLE_RPS (1 << 1)
#define CFG_ENABLE_NAPI (1 << 2) #define CFG_ENABLE_NAPI (1 << 2)
@@ -9127,6 +9126,67 @@ enum dot11p_mode {
#define CFG_ENABLE_DP_TRACE_MAX (1) #define CFG_ENABLE_DP_TRACE_MAX (1)
#define CFG_ENABLE_DP_TRACE_DEFAULT (1) #define CFG_ENABLE_DP_TRACE_DEFAULT (1)
/* Max length of gDptraceConfig string. e.g.- "1, 6, 1, 62" */
#define DP_TRACE_CONFIG_STRING_LENGTH (20)
/* At max 4 DP Trace config parameters are allowed. Refer - gDptraceConfig */
#define DP_TRACE_CONFIG_NUM_PARAMS (4)
/*
* Default value of live mode in case it cannot be determined from cfg string
* gDptraceConfig
*/
#define DP_TRACE_CONFIG_DEFAULT_LIVE_MODE (1)
/*
* Default value of thresh (packets/second) beyond which DP Trace is disabled.
* Use this default in case the value cannot be determined from cfg string
* gDptraceConfig
*/
#define DP_TRACE_CONFIG_DEFAULT_THRESH (4)
/*
* Number of intervals of BW timer to wait before enabling/disabling DP Trace.
* Since throughput threshold to disable live logging for DP Trace is very low,
* we calculate throughput based on # packets received in a second.
* For example assuming bandwidth timer interval is 100ms, and if more than 4
* packets are received in 10 * 100 ms interval, we want to disable DP Trace
* live logging. DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT is the default
* value, to be used in case the real value cannot be derived from
* bw timer interval
*/
#define DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT (10)
/* Default proto bitmap in case its missing in gDptraceConfig string */
#define DP_TRACE_CONFIG_DEFAULT_BITMAP \
(QDF_NBUF_PKT_TRAC_TYPE_EAPOL |\
QDF_NBUF_PKT_TRAC_TYPE_DHCP |\
QDF_NBUF_PKT_TRAC_TYPE_MGMT_ACTION |\
QDF_NBUF_PKT_TRAC_TYPE_ARP |\
QDF_NBUF_PKT_TRAC_TYPE_ICMP)\
/* Default verbosity, in case its missing in gDptraceConfig string*/
#define DP_TRACE_CONFIG_DEFAULT_VERBOSTY QDF_DP_TRACE_VERBOSITY_LOW
/*
* Config DPTRACE
* The sequence of params is important. If some param is missing, defaults are
* considered.
* Param 1: Enable/Disable DP Trace live mode (uint8_t)
* Param 2: DP Trace live mode high bandwidth thresh.(uint8_t)
* (packets/second) beyond which DP Trace is disabled. Decimal Val.
* MGMT, DHCP, EAPOL, ARP pkts are not counted. ICMP and Data are.
* Param 3: Default Verbosity (0-3)
* Param 4: Proto Bitmap (uint8_t). Decimal Value.
* (decimal 62 = 0x3e)
* e.g., to disable live mode, use the following param in the ini file.
* gDptraceConfig = 0
* e.g., to enable dptrace live mode and set the thresh as 4,
* use the following param in the ini file.
* gDptraceConfig = 1, 4
*/
#define CFG_ENABLE_DP_TRACE_CONFIG "gDptraceConfig"
#define CFG_ENABLE_DP_TRACE_CONFIG_DEFAULT "1, 8, 1, 62"
/* /*
* This parameter will set the weight to calculate the average low pass * This parameter will set the weight to calculate the average low pass
* filter for channel congestion. * filter for channel congestion.
@@ -12302,6 +12362,7 @@ struct hdd_config {
bool enable_fatal_event; bool enable_fatal_event;
bool bpf_enabled; bool bpf_enabled;
bool enable_dp_trace; bool enable_dp_trace;
uint8_t dp_trace_config[DP_TRACE_CONFIG_STRING_LENGTH];
bool adaptive_dwell_mode_enabled; bool adaptive_dwell_mode_enabled;
enum wmi_dwelltime_adaptive_mode scan_adaptive_dwell_mode; enum wmi_dwelltime_adaptive_mode scan_adaptive_dwell_mode;
enum wmi_dwelltime_adaptive_mode roamscan_adaptive_dwell_mode; enum wmi_dwelltime_adaptive_mode roamscan_adaptive_dwell_mode;

View File

@@ -2774,4 +2774,12 @@ hdd_nla_parse(struct nlattr **tb, int maxtype, const struct nlattr *head,
} }
#endif #endif
/**
* hdd_dp_trace_init() - initialize DP Trace by calling the QDF API
* @config: hdd config
*
* Return: NONE
*/
void hdd_dp_trace_init(struct hdd_config *config);
#endif /* end #if !defined(WLAN_HDD_MAIN_H) */ #endif /* end #if !defined(WLAN_HDD_MAIN_H) */

View File

@@ -4096,6 +4096,12 @@ struct reg_table_entry g_registry_table[] = {
CFG_ENABLE_DP_TRACE_MIN, CFG_ENABLE_DP_TRACE_MIN,
CFG_ENABLE_DP_TRACE_MAX), CFG_ENABLE_DP_TRACE_MAX),
REG_VARIABLE_STRING(CFG_ENABLE_DP_TRACE_CONFIG, WLAN_PARAM_String,
struct hdd_config, dp_trace_config,
VAR_FLAGS_OPTIONAL,
(void *) CFG_ENABLE_DP_TRACE_CONFIG_DEFAULT),
REG_VARIABLE(CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME, WLAN_PARAM_Integer, REG_VARIABLE(CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, scan_adaptive_dwell_mode, struct hdd_config, scan_adaptive_dwell_mode,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -6232,10 +6238,12 @@ void hdd_cfg_print(struct hdd_context *pHddCtx)
hdd_debug("Name = [%s] Value = [%s]", hdd_debug("Name = [%s] Value = [%s]",
CFG_ENABLE_TX_SCHED_WRR_BE_NAME, CFG_ENABLE_TX_SCHED_WRR_BE_NAME,
pHddCtx->config->tx_sched_wrr_be); pHddCtx->config->tx_sched_wrr_be);
hdd_info("Name = [%s] Value = [%u]",
hdd_debug("Name = [%s] Value = [%u]",
CFG_ENABLE_DP_TRACE, CFG_ENABLE_DP_TRACE,
pHddCtx->config->enable_dp_trace); pHddCtx->config->enable_dp_trace);
hdd_debug("Name = [%s] Value = [%s]",
CFG_ENABLE_DP_TRACE_CONFIG,
pHddCtx->config->dp_trace_config);
hdd_debug("Name = [%s] Value = [%u]", hdd_debug("Name = [%s] Value = [%u]",
CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME, CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME,
pHddCtx->config->scan_adaptive_dwell_mode); pHddCtx->config->scan_adaptive_dwell_mode);

View File

@@ -2949,6 +2949,8 @@ static int __iw_softap_set_two_ints_getnone(struct net_device *dev,
qdf_dp_trace_enable_live_mode(); qdf_dp_trace_enable_live_mode();
else if (value[1] == CLEAR_DP_TRACE_BUFFER) else if (value[1] == CLEAR_DP_TRACE_BUFFER)
qdf_dp_trace_clear_buffer(); qdf_dp_trace_clear_buffer();
else if (value[1] == DISABLE_DP_TRACE_LIVE_MODE)
qdf_dp_trace_disable_live_mode();
break; break;
case QCSAP_ENABLE_FW_PROFILE: case QCSAP_ENABLE_FW_PROFILE:
hdd_debug("QCSAP_ENABLE_FW_PROFILE: %d %d", hdd_debug("QCSAP_ENABLE_FW_PROFILE: %d %d",

View File

@@ -6435,6 +6435,9 @@ static void hdd_pld_request_bus_bandwidth(struct hdd_context *hdd_ctx,
hdd_napi_apply_throughput_policy(hdd_ctx, tx_packets, rx_packets); hdd_napi_apply_throughput_policy(hdd_ctx, tx_packets, rx_packets);
} }
qdf_dp_trace_throttle_live_mode(
(next_vote_level > PLD_BUS_WIDTH_NONE) ? true : false);
/* fine-tuning parameters for RX Flows */ /* fine-tuning parameters for RX Flows */
temp_rx = (rx_packets + hdd_ctx->prev_rx) / 2; temp_rx = (rx_packets + hdd_ctx->prev_rx) / 2;
@@ -9679,6 +9682,46 @@ static void wlan_init_bug_report_lock(void)
qdf_spinlock_create(&p_cds_context->bug_report_lock); qdf_spinlock_create(&p_cds_context->bug_report_lock);
} }
void hdd_dp_trace_init(struct hdd_config *config)
{
bool live_mode = DP_TRACE_CONFIG_DEFAULT_LIVE_MODE;
uint8_t thresh = DP_TRACE_CONFIG_DEFAULT_THRESH;
uint16_t thresh_time_limit = DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT;
uint8_t verbosity = DP_TRACE_CONFIG_DEFAULT_VERBOSTY;
uint8_t proto_bitmap = DP_TRACE_CONFIG_DEFAULT_BITMAP;
uint8_t config_params[DP_TRACE_CONFIG_NUM_PARAMS];
uint8_t num_entries = 0;
hdd_string_to_u8_array(config->dp_trace_config, config_params,
&num_entries, sizeof(config_params));
/* calculating, num bw timer intervals in a second (1000ms) */
if (config->busBandwidthComputeInterval)
thresh_time_limit =
(1000 / config->busBandwidthComputeInterval);
else
hdd_err("busBandwidthComputeInterval is 0, using defaults");
switch (num_entries) {
case 4:
proto_bitmap = config_params[3];
case 3:
verbosity = config_params[2];
case 2:
thresh = config_params[1];
case 1:
live_mode = config_params[0];
default:
hdd_info("live_mode %u thresh %u time_limit %u verbosity %u bitmap 0x%x",
live_mode, thresh, thresh_time_limit,
verbosity, proto_bitmap);
};
qdf_dp_trace_init(live_mode, thresh, thresh_time_limit,
verbosity, proto_bitmap);
}
/** /**
* hdd_wlan_startup() - HDD init function * hdd_wlan_startup() - HDD init function
* @dev: Pointer to the underlying device * @dev: Pointer to the underlying device
@@ -9748,7 +9791,7 @@ int hdd_wlan_startup(struct device *dev)
} }
if (hdd_ctx->config->enable_dp_trace) if (hdd_ctx->config->enable_dp_trace)
qdf_dp_trace_init(); hdd_dp_trace_init(hdd_ctx->config);
if (hdd_ipa_init(hdd_ctx) == QDF_STATUS_E_FAILURE) if (hdd_ipa_init(hdd_ctx) == QDF_STATUS_E_FAILURE)
goto err_wiphy_unregister; goto err_wiphy_unregister;

View File

@@ -1384,7 +1384,7 @@ QDF_STATUS hdd_wlan_re_init(void)
} }
if (pHddCtx->config->enable_dp_trace) if (pHddCtx->config->enable_dp_trace)
qdf_dp_trace_init(); hdd_dp_trace_init(pHddCtx->config);
hdd_bus_bandwidth_init(pHddCtx); hdd_bus_bandwidth_init(pHddCtx);

View File

@@ -697,6 +697,7 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
struct hdd_context *pHddCtx = NULL; struct hdd_context *pHddCtx = NULL;
struct qdf_mac_addr src_mac; struct qdf_mac_addr src_mac;
uint8_t staid; uint8_t staid;
bool proto_pkt_logged = false;
/* Sanity check on inputs */ /* Sanity check on inputs */
if (unlikely((NULL == context) || (NULL == rxBuf))) { if (unlikely((NULL == context) || (NULL == rxBuf))) {
@@ -760,12 +761,17 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
} }
} }
hdd_event_eapol_log(skb, QDF_RX); hdd_event_eapol_log(skb, QDF_RX);
proto_pkt_logged = qdf_dp_trace_log_pkt(pAdapter->sessionId,
skb, QDF_RX,
QDF_TRACE_DEFAULT_PDEV_ID);
DPTRACE(qdf_dp_trace(skb, DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD, QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
qdf_nbuf_data_addr(skb), qdf_nbuf_data_addr(skb),
sizeof(qdf_nbuf_data(skb)), QDF_RX)); sizeof(qdf_nbuf_data(skb)), QDF_RX));
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_RX_PACKET_RECORD, if (!proto_pkt_logged) {
DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_HDD_RX_PACKET_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
(uint8_t *)skb->data, qdf_nbuf_len(skb), (uint8_t *)skb->data, qdf_nbuf_len(skb),
QDF_RX)); QDF_RX));
@@ -776,6 +782,7 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
(uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE],
(qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE),
QDF_RX)); QDF_RX));
}
skb->protocol = eth_type_trans(skb, skb->dev); skb->protocol = eth_type_trans(skb, skb->dev);

View File

@@ -390,7 +390,6 @@ void wlan_hdd_classify_pkt(struct sk_buff *skb)
else if (qdf_nbuf_is_icmp_pkt(skb)) else if (qdf_nbuf_is_icmp_pkt(skb))
QDF_NBUF_CB_GET_PACKET_TYPE(skb) = QDF_NBUF_CB_GET_PACKET_TYPE(skb) =
QDF_NBUF_CB_PACKET_TYPE_ICMP; QDF_NBUF_CB_PACKET_TYPE_ICMP;
} }
/** /**
@@ -533,6 +532,7 @@ static int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
uint8_t STAId; uint8_t STAId;
struct hdd_station_ctx *pHddStaCtx = &pAdapter->sessionCtx.station; struct hdd_station_ctx *pHddStaCtx = &pAdapter->sessionCtx.station;
struct qdf_mac_addr *mac_addr; struct qdf_mac_addr *mac_addr;
bool pkt_proto_logged = false;
#ifdef QCA_PKT_PROTO_TRACE #ifdef QCA_PKT_PROTO_TRACE
uint8_t proto_type = 0; uint8_t proto_type = 0;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(pAdapter); struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(pAdapter);
@@ -704,24 +704,30 @@ static int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
++pAdapter->stats.tx_packets; ++pAdapter->stats.tx_packets;
hdd_event_eapol_log(skb, QDF_TX); hdd_event_eapol_log(skb, QDF_TX);
qdf_dp_trace_log_pkt(pAdapter->sessionId, skb, QDF_TX, pkt_proto_logged = qdf_dp_trace_log_pkt(pAdapter->sessionId,
skb, QDF_TX,
QDF_TRACE_DEFAULT_PDEV_ID); QDF_TRACE_DEFAULT_PDEV_ID);
QDF_NBUF_CB_TX_PACKET_TRACK(skb) = QDF_NBUF_TX_PKT_DATA_TRACK; QDF_NBUF_CB_TX_PACKET_TRACK(skb) = QDF_NBUF_TX_PKT_DATA_TRACK;
QDF_NBUF_UPDATE_TX_PKT_COUNT(skb, QDF_NBUF_TX_PKT_HDD); QDF_NBUF_UPDATE_TX_PKT_COUNT(skb, QDF_NBUF_TX_PKT_HDD);
qdf_dp_trace_set_track(skb, QDF_TX); qdf_dp_trace_set_track(skb, QDF_TX);
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD, DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, qdf_nbuf_data_addr(skb), QDF_TRACE_DEFAULT_PDEV_ID, qdf_nbuf_data_addr(skb),
sizeof(qdf_nbuf_data(skb)), sizeof(qdf_nbuf_data(skb)),
QDF_TX)); QDF_TX));
if (!pkt_proto_logged) {
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_RECORD, DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, (uint8_t *)skb->data, QDF_TRACE_DEFAULT_PDEV_ID, (uint8_t *)skb->data,
qdf_nbuf_len(skb), QDF_TX)); qdf_nbuf_len(skb), QDF_TX));
if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) { if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) {
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_RECORD, DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_HDD_TX_PACKET_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
(uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE],
(qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), QDF_TX)); (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE),
QDF_TX));
}
} }
if (!hdd_is_tx_allowed(skb, STAId)) { if (!hdd_is_tx_allowed(skb, STAId)) {
@@ -1151,6 +1157,7 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
unsigned int cpu_index; unsigned int cpu_index;
struct qdf_mac_addr *mac_addr; struct qdf_mac_addr *mac_addr;
bool wake_lock = false; bool wake_lock = false;
bool proto_pkt_logged = false;
/* Sanity check on inputs */ /* Sanity check on inputs */
if (unlikely((NULL == context) || (NULL == rxBuf))) { if (unlikely((NULL == context) || (NULL == rxBuf))) {
@@ -1209,22 +1216,32 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
} }
hdd_event_eapol_log(skb, QDF_RX); hdd_event_eapol_log(skb, QDF_RX);
proto_pkt_logged = qdf_dp_trace_log_pkt(pAdapter->sessionId,
skb, QDF_RX,
QDF_TRACE_DEFAULT_PDEV_ID);
DPTRACE(qdf_dp_trace(skb, DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD, QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
qdf_nbuf_data_addr(skb), qdf_nbuf_data_addr(skb),
sizeof(qdf_nbuf_data(skb)), QDF_RX)); sizeof(qdf_nbuf_data(skb)), QDF_RX));
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_RX_PACKET_RECORD,
if (!proto_pkt_logged) {
DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_HDD_RX_PACKET_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
(uint8_t *)skb->data, qdf_nbuf_len(skb), QDF_RX)); (uint8_t *)skb->data, qdf_nbuf_len(skb),
QDF_RX));
if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE)
DPTRACE(qdf_dp_trace(skb, DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_HDD_RX_PACKET_RECORD, QDF_DP_TRACE_HDD_RX_PACKET_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
(uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], (uint8_t *)
(qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), &skb->data[QDF_DP_TRACE_RECORD_SIZE],
(qdf_nbuf_len(skb) -
QDF_DP_TRACE_RECORD_SIZE),
QDF_RX)); QDF_RX));
}
mac_addr = (struct qdf_mac_addr *)(skb->data+QDF_MAC_ADDR_SIZE); mac_addr = (struct qdf_mac_addr *)(skb->data+QDF_MAC_ADDR_SIZE);
ucfg_tdls_update_rx_pkt_cnt(pAdapter->hdd_vdev, mac_addr); ucfg_tdls_update_rx_pkt_cnt(pAdapter->hdd_vdev, mac_addr);

View File

@@ -13086,6 +13086,8 @@ static int __iw_set_two_ints_getnone(struct net_device *dev,
qdf_dp_trace_enable_live_mode(); qdf_dp_trace_enable_live_mode();
else if (value[1] == CLEAR_DP_TRACE_BUFFER) else if (value[1] == CLEAR_DP_TRACE_BUFFER)
qdf_dp_trace_clear_buffer(); qdf_dp_trace_clear_buffer();
else if (value[1] == DISABLE_DP_TRACE_LIVE_MODE)
qdf_dp_trace_disable_live_mode();
break; break;
case WE_SET_MON_MODE_CHAN: case WE_SET_MON_MODE_CHAN:
ret = wlan_hdd_set_mon_chan(pAdapter, value[1], value[2]); ret = wlan_hdd_set_mon_chan(pAdapter, value[1], value[2]);