mwl8k: Do not expire eapol frames
authorNishant Sarmukadam <nishants@marvell.com>
Tue, 6 Nov 2012 13:53:01 +0000 (19:23 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 Nov 2012 19:56:11 +0000 (14:56 -0500)
This can cause issues when clients try to connect when the
traffic is heavy

Signed-off-by: Nishant Sarmukadam <nishants@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwl8k.c

index 5b5b9ecbf1f90737b071052c26accd9aaa5aefd6..a4d3dcbc1e311f452739c1f5bae48f86a2725968 100644 (file)
@@ -1851,6 +1851,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
        bool start_ba_session = false;
        bool mgmtframe = false;
        struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data;
+       bool eapol_frame = false;
 
        wh = (struct ieee80211_hdr *)skb->data;
        if (ieee80211_is_data_qos(wh->frame_control))
@@ -1858,6 +1859,9 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
        else
                qos = 0;
 
+       if (skb->protocol == cpu_to_be16(ETH_P_PAE))
+               eapol_frame = true;
+
        if (ieee80211_is_mgmt(wh->frame_control))
                mgmtframe = true;
 
@@ -1916,9 +1920,8 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
 
        txpriority = index;
 
-       if (priv->ap_fw && sta && sta->ht_cap.ht_supported
-                       && skb->protocol != cpu_to_be16(ETH_P_PAE)
-                       && ieee80211_is_data_qos(wh->frame_control)) {
+       if (priv->ap_fw && sta && sta->ht_cap.ht_supported && !eapol_frame &&
+           ieee80211_is_data_qos(wh->frame_control)) {
                tid = qos & 0xf;
                mwl8k_tx_count_packet(sta, tid);
                spin_lock(&priv->stream_lock);
@@ -2027,7 +2030,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
        else
                tx->peer_id = 0;
 
-       if (priv->ap_fw)
+       if (priv->ap_fw && ieee80211_is_data(wh->frame_control) && !eapol_frame)
                tx->timestamp = cpu_to_le32(ioread32(priv->regs +
                                                MWL8K_HW_TIMER_REGISTER));