summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/inc/wlan_hdd_tx_rx.h4
-rw-r--r--core/hdd/src/wlan_hdd_tx_rx.c7
2 files changed, 10 insertions, 1 deletions
diff --git a/core/hdd/inc/wlan_hdd_tx_rx.h b/core/hdd/inc/wlan_hdd_tx_rx.h
index c5ff55f5fdcc..56ef2f576809 100644
--- a/core/hdd/inc/wlan_hdd_tx_rx.h
+++ b/core/hdd/inc/wlan_hdd_tx_rx.h
@@ -45,6 +45,10 @@
#define HDD_ETHERTYPE_802_1_X_FRAME_OFFSET 12
#ifdef FEATURE_WLAN_WAPI
#define HDD_ETHERTYPE_WAI 0x88b4
+#define IS_HDD_ETHERTYPE_WAI(_skb) (ntohs(_skb->protocol) == \
+ HDD_ETHERTYPE_WAI)
+#else
+#define IS_HDD_ETHERTYPE_WAI(_skb) (false)
#endif
#define HDD_PSB_CFG_INVALID 0xFF
diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c
index 154000ef57f2..d37b237e9b7c 100644
--- a/core/hdd/src/wlan_hdd_tx_rx.c
+++ b/core/hdd/src/wlan_hdd_tx_rx.c
@@ -790,7 +790,8 @@ static inline bool hdd_is_tx_allowed(struct sk_buff *skb, uint8_t peer_id)
if (OL_TXRX_PEER_STATE_AUTH == peer_state)
return true;
else if (OL_TXRX_PEER_STATE_CONN == peer_state &&
- ntohs(skb->protocol) == HDD_ETHERTYPE_802_1_X)
+ (ntohs(skb->protocol) == HDD_ETHERTYPE_802_1_X
+ || IS_HDD_ETHERTYPE_WAI(skb)))
return true;
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_DROP_PACKET_RECORD,
(uint8_t *)skb->data,
@@ -996,6 +997,10 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb,
goto drop_pkt_and_release_skb;
}
if (!hdd_is_tx_allowed(skb, STAId)) {
+ QDF_TRACE(QDF_MODULE_ID_HDD_DATA,
+ QDF_TRACE_LEVEL_INFO_HIGH,
+ "%s: Tx is not allowed. drop the pkt",
+ __func__);
++pAdapter->hdd_stats.hddTxRxStats.txXmitDroppedAC[ac];
goto drop_pkt_and_release_skb;
}