qcacld-3.0: Changes to update mac_id in packetlog
Changes to update mac_id in packetlog header for DBS. Change-Id: I602d399e1ef34077b5d7bfc867fb60678ed8612c CRs-fixed: 1047382
This commit is contained in:
@@ -310,6 +310,8 @@ typedef struct _cds_context_type {
|
||||
void (*sme_get_nss_for_vdev)(void*, enum tQDF_ADAPTER_MODE,
|
||||
uint8_t *, uint8_t *);
|
||||
|
||||
void (*ol_txrx_update_mac_id)(uint8_t , uint8_t);
|
||||
|
||||
/* This list is not sessionized. This mandatory channel list would be
|
||||
* as per OEMs preference as per the regulatory/other considerations.
|
||||
* So, this would remain same for all the interfaces.
|
||||
|
@@ -378,6 +378,8 @@ QDF_STATUS cds_open(void)
|
||||
goto err_sme_close;
|
||||
}
|
||||
|
||||
gp_cds_context->ol_txrx_update_mac_id = ol_txrx_update_mac_id;
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: CDS successfully Opened", __func__);
|
||||
|
||||
|
@@ -2129,6 +2129,14 @@ static void cds_update_conc_list(uint32_t conn_index,
|
||||
uint32_t vdev_id,
|
||||
bool in_use)
|
||||
{
|
||||
cds_context_type *cds_ctx;
|
||||
|
||||
cds_ctx = cds_get_context(QDF_MODULE_ID_QDF);
|
||||
if (!cds_ctx) {
|
||||
cds_err("Invalid CDS Context");
|
||||
return;
|
||||
}
|
||||
|
||||
if (conn_index >= MAX_NUMBER_OF_CONC_CONNECTIONS) {
|
||||
cds_err("Number of connections exceeded conn_index: %d",
|
||||
conn_index);
|
||||
@@ -2144,6 +2152,9 @@ static void cds_update_conc_list(uint32_t conn_index,
|
||||
conc_connection_list[conn_index].in_use = in_use;
|
||||
|
||||
cds_dump_connection_status_info();
|
||||
if (cds_ctx->ol_txrx_update_mac_id)
|
||||
cds_ctx->ol_txrx_update_mac_id(vdev_id, mac);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -64,6 +64,27 @@
|
||||
void ol_rx_data_process(struct ol_txrx_peer_t *peer,
|
||||
qdf_nbuf_t rx_buf_list);
|
||||
|
||||
/**
|
||||
* ol_rx_send_pktlog_event() - send rx packetlog event
|
||||
* @pdev: pdev handle
|
||||
* @peer: peer handle
|
||||
* @msdu: skb list
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
|
||||
struct ol_txrx_peer_t *peer, qdf_nbuf_t msdu)
|
||||
{
|
||||
struct ol_rx_remote_data data;
|
||||
|
||||
data.msdu = msdu;
|
||||
if (peer)
|
||||
data.mac_id = peer->vdev->mac_id;
|
||||
else
|
||||
data.mac_id = 0;
|
||||
|
||||
wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, &data);
|
||||
}
|
||||
|
||||
#ifdef HTT_RX_RESTORE
|
||||
|
||||
@@ -508,8 +529,7 @@ ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
|
||||
|
||||
/* Pktlog */
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE,
|
||||
pdev, head_msdu);
|
||||
ol_rx_send_pktlog_event(pdev, peer, head_msdu);
|
||||
#endif
|
||||
|
||||
if (msdu_chaining) {
|
||||
@@ -586,9 +606,8 @@ ol_rx_indication_handler(ol_txrx_pdev_handle pdev,
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
if (status != htt_rx_status_ctrl_mgmt_null) {
|
||||
/* Pktlog */
|
||||
wdi_event_handler(
|
||||
WDI_EVENT_RX_DESC_REMOTE, pdev,
|
||||
msdu);
|
||||
ol_rx_send_pktlog_event(pdev,
|
||||
peer, head_msdu);
|
||||
}
|
||||
#endif
|
||||
if (status == htt_rx_status_err_inv_peer) {
|
||||
@@ -1332,7 +1351,7 @@ ol_rx_in_order_indication_handler(ol_txrx_pdev_handle pdev,
|
||||
|
||||
/* Pktlog */
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
wdi_event_handler(WDI_EVENT_RX_DESC_REMOTE, pdev, head_msdu);
|
||||
ol_rx_send_pktlog_event(pdev, peer, head_msdu);
|
||||
#endif
|
||||
|
||||
/* if this is an offload indication, peer id is carried in the
|
||||
|
@@ -3783,6 +3783,25 @@ void ol_vdev_rx_set_intrabss_fwd(ol_txrx_vdev_handle vdev, bool val)
|
||||
vdev->disable_intrabss_fwd = val;
|
||||
}
|
||||
|
||||
/**
|
||||
* ol_txrx_update_mac_id() - update mac_id for vdev
|
||||
* @vdev_id: vdev id
|
||||
* @mac_id: mac id
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void ol_txrx_update_mac_id(uint8_t vdev_id, uint8_t mac_id)
|
||||
{
|
||||
ol_txrx_vdev_handle vdev = ol_txrx_get_vdev_from_vdev_id(vdev_id);
|
||||
|
||||
if (NULL == vdev) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: Invalid vdev_id %d", __func__, vdev_id);
|
||||
return;
|
||||
}
|
||||
vdev->mac_id = mac_id;
|
||||
}
|
||||
|
||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||
|
||||
/**
|
||||
|
@@ -133,4 +133,5 @@ ol_txrx_vdev_handle ol_txrx_get_vdev_from_vdev_id(uint8_t vdev_id);
|
||||
void htt_pkt_log_init(struct ol_txrx_pdev_t *handle, void *scn);
|
||||
QDF_STATUS ol_txrx_set_wisa_mode(ol_txrx_vdev_handle vdev,
|
||||
bool enable);
|
||||
void ol_txrx_update_mac_id(uint8_t vdev_id, uint8_t mac_id);
|
||||
#endif /* _OL_TXRX__H_ */
|
||||
|
@@ -1060,6 +1060,7 @@ struct ol_txrx_vdev_t {
|
||||
uint64_t fwd_tx_packets;
|
||||
uint64_t fwd_rx_packets;
|
||||
bool is_wisa_mode_enable;
|
||||
uint8_t mac_id;
|
||||
};
|
||||
|
||||
struct ol_rx_reorder_array_elem_t {
|
||||
@@ -1253,4 +1254,10 @@ struct ol_error_info {
|
||||
struct ol_mic_error_info mic_err;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct ol_rx_remote_data {
|
||||
qdf_nbuf_t msdu;
|
||||
uint8_t mac_id;
|
||||
};
|
||||
|
||||
#endif /* _OL_TXRX_TYPES__H_ */
|
||||
|
@@ -43,7 +43,12 @@ struct ath_pktlog_arg {
|
||||
struct ath_pktlog_info *pl_info;
|
||||
uint32_t flags;
|
||||
uint16_t missed_cnt;
|
||||
#ifdef HELIUMPLUS
|
||||
uint8_t log_type;
|
||||
uint8_t macId;
|
||||
#else
|
||||
uint16_t log_type;
|
||||
#endif
|
||||
size_t log_size;
|
||||
uint16_t timestamp;
|
||||
#ifdef HELIUMPLUS
|
||||
@@ -59,7 +64,7 @@ char *pktlog_getbuf(struct ol_pktlog_dev_t *pl_dev,
|
||||
|
||||
A_STATUS process_tx_info(struct ol_txrx_pdev_t *pdev, void *data);
|
||||
A_STATUS process_rx_info(void *pdev, void *data);
|
||||
A_STATUS process_rx_info_remote(void *pdev, qdf_nbuf_t amsdu);
|
||||
A_STATUS process_rx_info_remote(void *pdev, void *data);
|
||||
A_STATUS process_rate_find(void *pdev, void *data);
|
||||
A_STATUS process_rate_update(void *pdev, void *data);
|
||||
|
||||
|
@@ -69,6 +69,9 @@ void pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg)
|
||||
uint16_t log_type;
|
||||
size_t log_size;
|
||||
uint32_t flags;
|
||||
#ifdef HELIUMPLUS
|
||||
uint8_t mac_id;
|
||||
#endif
|
||||
|
||||
if (!plarg) {
|
||||
printk("Invalid parg in %s\n", __func__);
|
||||
@@ -76,7 +79,12 @@ void pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg)
|
||||
}
|
||||
|
||||
pl_info = plarg->pl_info;
|
||||
#ifdef HELIUMPLUS
|
||||
mac_id = plarg->macId;
|
||||
log_type = plarg->log_type;
|
||||
#else
|
||||
log_type = plarg->log_type;
|
||||
#endif
|
||||
log_size = plarg->log_size;
|
||||
log_buf = pl_info->buf;
|
||||
flags = plarg->flags;
|
||||
@@ -100,8 +108,14 @@ void pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg)
|
||||
}
|
||||
|
||||
log_hdr = (struct ath_pktlog_hdr *)(log_buf->log_data + cur_wr_offset);
|
||||
log_hdr->log_type = log_type;
|
||||
|
||||
log_hdr->flags = flags;
|
||||
#ifdef HELIUMPLUS
|
||||
log_hdr->macId = mac_id;
|
||||
log_hdr->log_type = log_type;
|
||||
#else
|
||||
log_hdr->log_type = log_type;
|
||||
#endif
|
||||
log_hdr->size = (uint16_t) log_size;
|
||||
log_hdr->missed_cnt = plarg->missed_cnt;
|
||||
log_hdr->timestamp = plarg->timestamp;
|
||||
@@ -167,7 +181,12 @@ char *pktlog_getbuf(struct ol_pktlog_dev_t *pl_dev,
|
||||
uint8_t flags = 0;
|
||||
|
||||
plarg.pl_info = pl_info;
|
||||
#ifdef HELIUMPLUS
|
||||
plarg.macId = pl_hdr->macId;
|
||||
plarg.log_type = pl_hdr->log_type;
|
||||
#else
|
||||
plarg.log_type = pl_hdr->log_type;
|
||||
#endif
|
||||
plarg.log_size = log_size;
|
||||
plarg.flags = pl_hdr->flags;
|
||||
plarg.missed_cnt = pl_hdr->missed_cnt;
|
||||
@@ -379,9 +398,18 @@ A_STATUS process_tx_info(struct ol_txrx_pdev_t *txrx_pdev, void *data)
|
||||
pl_hdr.missed_cnt = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MISSED_CNT_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_MASK) >>
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_SHIFT;
|
||||
#ifdef HELIUMPLUS
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
pl_hdr.macId = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MAC_ID_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MAC_ID_MASK) >>
|
||||
ATH_PKTLOG_HDR_MAC_ID_SHIFT;
|
||||
#else
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
#endif
|
||||
pl_hdr.size = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_SIZE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_SIZE_MASK) >> ATH_PKTLOG_HDR_SIZE_SHIFT;
|
||||
pl_hdr.timestamp = *(pl_tgt_hdr + ATH_PKTLOG_HDR_TIMESTAMP_OFFSET);
|
||||
@@ -501,7 +529,7 @@ A_STATUS process_tx_info(struct ol_txrx_pdev_t *txrx_pdev, void *data)
|
||||
return A_OK;
|
||||
}
|
||||
|
||||
A_STATUS process_rx_info_remote(void *pdev, qdf_nbuf_t amsdu)
|
||||
A_STATUS process_rx_info_remote(void *pdev, void *data)
|
||||
{
|
||||
struct ol_pktlog_dev_t *pl_dev;
|
||||
struct ath_pktlog_info *pl_info;
|
||||
@@ -509,19 +537,20 @@ A_STATUS process_rx_info_remote(void *pdev, qdf_nbuf_t amsdu)
|
||||
struct ath_pktlog_hdr pl_hdr;
|
||||
struct ath_pktlog_rx_info rxstat_log;
|
||||
size_t log_size;
|
||||
struct ol_rx_remote_data *r_data = (struct ol_rx_remote_data *)data;
|
||||
qdf_nbuf_t msdu;
|
||||
|
||||
if (!pdev) {
|
||||
printk("Invalid pdev in %s\n", __func__);
|
||||
return A_ERROR;
|
||||
}
|
||||
if (!amsdu) {
|
||||
if (!r_data) {
|
||||
printk("Invalid data in %s\n", __func__);
|
||||
return A_ERROR;
|
||||
}
|
||||
pl_dev = ((struct ol_txrx_pdev_t *)pdev)->pl_dev;
|
||||
pl_info = pl_dev->pl_info;
|
||||
msdu = amsdu;
|
||||
msdu = r_data->msdu;
|
||||
|
||||
while (msdu) {
|
||||
rx_desc =
|
||||
@@ -535,7 +564,12 @@ A_STATUS process_rx_info_remote(void *pdev, qdf_nbuf_t amsdu)
|
||||
*/
|
||||
pl_hdr.flags = (1 << PKTLOG_FLG_FRM_TYPE_REMOTE_S);
|
||||
pl_hdr.missed_cnt = 0;
|
||||
#if defined(HELIUMPLUS)
|
||||
pl_hdr.macId = r_data->mac_id;
|
||||
pl_hdr.log_type = PKTLOG_TYPE_RX_STAT;
|
||||
#else
|
||||
pl_hdr.log_type = PKTLOG_TYPE_RX_STAT;
|
||||
#endif
|
||||
pl_hdr.size = sizeof(*rx_desc) -
|
||||
sizeof(struct htt_host_fw_desc_base);
|
||||
#if defined(HELIUMPLUS)
|
||||
@@ -576,9 +610,19 @@ A_STATUS process_rx_info(void *pdev, void *data)
|
||||
pl_hdr.missed_cnt = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MISSED_CNT_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_MASK) >>
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_SHIFT;
|
||||
#ifdef HELIUMPLUS
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
pl_hdr.macId = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MAC_ID_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MAC_ID_MASK) >>
|
||||
ATH_PKTLOG_HDR_MAC_ID_SHIFT;
|
||||
#else
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
#endif
|
||||
|
||||
pl_hdr.size = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_SIZE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_SIZE_MASK) >> ATH_PKTLOG_HDR_SIZE_SHIFT;
|
||||
pl_hdr.timestamp = *(pl_tgt_hdr + ATH_PKTLOG_HDR_TIMESTAMP_OFFSET);
|
||||
@@ -627,9 +671,19 @@ A_STATUS process_rate_find(void *pdev, void *data)
|
||||
pl_hdr.missed_cnt = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MISSED_CNT_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_MASK) >>
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_SHIFT;
|
||||
#ifdef HELIUMPLUS
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
pl_hdr.macId = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MAC_ID_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MAC_ID_MASK) >>
|
||||
ATH_PKTLOG_HDR_MAC_ID_SHIFT;
|
||||
#else
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
#endif
|
||||
|
||||
pl_hdr.size = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_SIZE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_SIZE_MASK) >> ATH_PKTLOG_HDR_SIZE_SHIFT;
|
||||
pl_hdr.timestamp = *(pl_tgt_hdr + ATH_PKTLOG_HDR_TIMESTAMP_OFFSET);
|
||||
@@ -674,9 +728,19 @@ A_STATUS process_rate_update(void *pdev, void *data)
|
||||
pl_hdr.missed_cnt = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MISSED_CNT_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_MASK) >>
|
||||
ATH_PKTLOG_HDR_MISSED_CNT_SHIFT;
|
||||
#ifdef HELIUMPLUS
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
pl_hdr.macId = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_MAC_ID_OFFSET) &
|
||||
ATH_PKTLOG_HDR_MAC_ID_MASK) >>
|
||||
ATH_PKTLOG_HDR_MAC_ID_SHIFT;
|
||||
#else
|
||||
pl_hdr.log_type = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_LOG_TYPE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_MASK) >>
|
||||
ATH_PKTLOG_HDR_LOG_TYPE_SHIFT;
|
||||
#endif
|
||||
|
||||
pl_hdr.size = (*(pl_tgt_hdr + ATH_PKTLOG_HDR_SIZE_OFFSET) &
|
||||
ATH_PKTLOG_HDR_SIZE_MASK) >> ATH_PKTLOG_HDR_SIZE_SHIFT;
|
||||
pl_hdr.timestamp = *(pl_tgt_hdr + ATH_PKTLOG_HDR_TIMESTAMP_OFFSET);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
@@ -57,7 +57,12 @@
|
||||
struct ath_pktlog_hdr {
|
||||
uint16_t flags;
|
||||
uint16_t missed_cnt;
|
||||
#ifdef HELIUMPLUS
|
||||
uint8_t log_type;
|
||||
uint8_t macId;
|
||||
#else
|
||||
uint16_t log_type;
|
||||
#endif
|
||||
uint16_t size;
|
||||
uint32_t timestamp;
|
||||
#ifdef HELIUMPLUS
|
||||
@@ -71,9 +76,19 @@ struct ath_pktlog_hdr {
|
||||
#define ATH_PKTLOG_HDR_MISSED_CNT_MASK 0xffff0000
|
||||
#define ATH_PKTLOG_HDR_MISSED_CNT_SHIFT 16
|
||||
#define ATH_PKTLOG_HDR_MISSED_CNT_OFFSET 0
|
||||
#ifdef HELIUMPLUS
|
||||
#define ATH_PKTLOG_HDR_LOG_TYPE_MASK 0x00ff
|
||||
#define ATH_PKTLOG_HDR_LOG_TYPE_SHIFT 0
|
||||
#define ATH_PKTLOG_HDR_LOG_TYPE_OFFSET 1
|
||||
#define ATH_PKTLOG_HDR_MAC_ID_MASK 0xff00
|
||||
#define ATH_PKTLOG_HDR_MAC_ID_SHIFT 8
|
||||
#define ATH_PKTLOG_HDR_MAC_ID_OFFSET 1
|
||||
#else
|
||||
#define ATH_PKTLOG_HDR_LOG_TYPE_MASK 0xffff
|
||||
#define ATH_PKTLOG_HDR_LOG_TYPE_SHIFT 0
|
||||
#define ATH_PKTLOG_HDR_LOG_TYPE_OFFSET 1
|
||||
#endif
|
||||
|
||||
#define ATH_PKTLOG_HDR_SIZE_MASK 0xffff0000
|
||||
#define ATH_PKTLOG_HDR_SIZE_SHIFT 16
|
||||
#define ATH_PKTLOG_HDR_SIZE_OFFSET 1
|
||||
|
Reference in New Issue
Block a user