qcacmn: Ignore raw frame if is not of type Data
Non raw traffic gets enqueued to VAP in raw mode and incorrect fc.type causes HW fault. Lets proceed only if raw frame is of type data. Change-Id: I9f0d608cd1b319feb9af642969b258aab813645f CRs-Fixed: 2434391
This commit is contained in:
@@ -679,6 +679,7 @@ struct cdp_tx_ingress_stats {
|
||||
struct {
|
||||
struct cdp_pkt_info raw_pkt;
|
||||
uint32_t dma_map_error;
|
||||
uint32_t invalid_raw_pkt_datatype;
|
||||
} raw;
|
||||
|
||||
/* TSO packets info */
|
||||
|
@@ -5298,6 +5298,8 @@ dp_print_pdev_tx_stats(struct dp_pdev *pdev)
|
||||
pdev->stats.tx_i.raw.raw_pkt.bytes);
|
||||
DP_PRINT_STATS(" DMA map error = %d",
|
||||
pdev->stats.tx_i.raw.dma_map_error);
|
||||
DP_PRINT_STATS(" RAW pkt type[!data] error = %d",
|
||||
pdev->stats.tx_i.raw.invalid_raw_pkt_datatype);
|
||||
DP_PRINT_STATS("Reinjected:");
|
||||
DP_PRINT_STATS(" Packets = %d",
|
||||
pdev->stats.tx_i.reinject_pkts.num);
|
||||
|
@@ -936,6 +936,13 @@ static qdf_nbuf_t dp_tx_prepare_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
||||
|
||||
DP_STATS_INC_PKT(vdev, tx_i.raw.raw_pkt, 1, qdf_nbuf_len(nbuf));
|
||||
|
||||
/* Continue only if frames are of DATA type */
|
||||
if (!DP_FRAME_IS_DATA(qos_wh)) {
|
||||
DP_STATS_INC(vdev, tx_i.raw.invalid_raw_pkt_datatype, 1);
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||
"Pkt. recd is of not data type");
|
||||
goto error;
|
||||
}
|
||||
/* SWAR for HW: Enable WEP bit in the AMSDU frames for RAW mode */
|
||||
if (vdev->raw_mode_war &&
|
||||
(qos_wh->i_fc[0] & QDF_IEEE80211_FC0_SUBTYPE_QOS) &&
|
||||
|
Reference in New Issue
Block a user