qcacmn: Add stats and filtering support in delivering of unencrypted frames

Addded stats and filtering support in delivering of unencrypted frames
in mesh mode.

Change-Id: I2fd72f766660e500affeccda9aad03a0313d0659
CRs-Fixed: 2004658
This commit is contained in:
Venkateswara Swamy Bandaru 2017-07-04 17:26:18 +05:30 • committed by snandini
commit 1fecd15636
4 changed files with 25 additions and 6 deletions

View file

@ -420,7 +420,7 @@ dp_rx_intrabss_fwd(struct dp_soc *soc,
*
* Return: void
*/
static
void dp_rx_fill_mesh_stats(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
uint8_t *rx_tlv_hdr, struct dp_peer *peer)
{
@ -493,7 +493,6 @@ void dp_rx_fill_mesh_stats(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
* Return: status(0 indicates drop, 1 indicate to no drop)
*/
static inline
QDF_STATUS dp_rx_filter_mesh_packets(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
uint8_t *rx_tlv_hdr)
{
@ -540,13 +539,11 @@ QDF_STATUS dp_rx_filter_mesh_packets(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
}
#else
static
void dp_rx_fill_mesh_stats(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
uint8_t *rx_tlv_hdr, struct dp_peer *peer)
{
}
static inline
QDF_STATUS dp_rx_filter_mesh_packets(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
uint8_t *rx_tlv_hdr)
{

View file

@ -648,8 +648,13 @@ QDF_STATUS
dp_rx_link_desc_buf_return(struct dp_soc *soc, struct dp_srng *dp_rxdma_srng,
void *buf_addr_info);
uint32_t
dp_rxdma_err_process(struct dp_soc *soc, uint32_t mac_id,
uint32_t quota);
void dp_rx_fill_mesh_stats(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
uint8_t *rx_tlv_hdr, struct dp_peer *peer);
QDF_STATUS dp_rx_filter_mesh_packets(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
uint8_t *rx_tlv_hdr);
#endif /* _DP_RX_H */

View file

@ -569,6 +569,23 @@ dp_rx_err_deliver(struct dp_soc *soc, struct dp_rx_desc *rx_desc,
*/
qdf_nbuf_pull_head(nbuf, (l2_hdr_offset + RX_PKT_TLVS_LEN));
qdf_nbuf_set_chfrag_start(nbuf, 1);
qdf_nbuf_set_chfrag_end(nbuf, 1);
if (dp_rx_filter_mesh_packets(vdev, nbuf,
rx_desc->rx_buf_start)
== QDF_STATUS_SUCCESS) {
QDF_TRACE(QDF_MODULE_ID_DP,
QDF_TRACE_LEVEL_INFO_MED,
FL("mesh pkt filtered"));
DP_STATS_INC(vdev->pdev, dropped.mesh_filter,
1);
qdf_nbuf_free(nbuf);
goto fail;
}
dp_rx_fill_mesh_stats(vdev, nbuf, rx_desc->rx_buf_start, peer);
if (qdf_unlikely(vdev->rx_decap_type == htt_cmn_pkt_type_raw)) {
dp_rx_deliver_raw(vdev, nbuf, peer);
} else {

View file

@ -1906,7 +1906,7 @@ enum hal_reo_error_code {
* @ HAL_RXDMA_ERR_FCS : FCS check on the MPDU frame failed
* @ HAL_RXDMA_ERR_DECRYPT : Decryption error
* @ HAL_RXDMA_ERR_TKIP_MIC : TKIP MIC error
* @ HAL_RXDMA_ERR_UNECRYPTED : Received a frame that was expected to be
* @ HAL_RXDMA_ERR_UNENCRYPTED : Received a frame that was expected to be
* encrypted but wasn’t
* @ HAL_RXDMA_ERR_MSDU_LEN : MSDU related length error
* @ HAL_RXDMA_ERR_MSDU_LIMIT : Number of MSDUs in the MPDUs exceeded