diff options
| -rw-r--r-- | core/hdd/inc/wlan_hdd_tx_rx.h | 4 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_tx_rx.c | 7 |
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; } |
