Commit e1f4d69b authored by Nishant Sarmukadam's avatar Nishant Sarmukadam Committed by John W. Linville

mwl8k: Do not expire eapol frames

This can cause issues when clients try to connect when the
traffic is heavy
Signed-off-by: default avatarNishant Sarmukadam <nishants@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ff7aa96f
...@@ -1851,6 +1851,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, ...@@ -1851,6 +1851,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
bool start_ba_session = false; bool start_ba_session = false;
bool mgmtframe = false; bool mgmtframe = false;
struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data; struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data;
bool eapol_frame = false;
wh = (struct ieee80211_hdr *)skb->data; wh = (struct ieee80211_hdr *)skb->data;
if (ieee80211_is_data_qos(wh->frame_control)) if (ieee80211_is_data_qos(wh->frame_control))
...@@ -1858,6 +1859,9 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, ...@@ -1858,6 +1859,9 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
else else
qos = 0; qos = 0;
if (skb->protocol == cpu_to_be16(ETH_P_PAE))
eapol_frame = true;
if (ieee80211_is_mgmt(wh->frame_control)) if (ieee80211_is_mgmt(wh->frame_control))
mgmtframe = true; mgmtframe = true;
...@@ -1916,9 +1920,8 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, ...@@ -1916,9 +1920,8 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
txpriority = index; txpriority = index;
if (priv->ap_fw && sta && sta->ht_cap.ht_supported if (priv->ap_fw && sta && sta->ht_cap.ht_supported && !eapol_frame &&
&& skb->protocol != cpu_to_be16(ETH_P_PAE) ieee80211_is_data_qos(wh->frame_control)) {
&& ieee80211_is_data_qos(wh->frame_control)) {
tid = qos & 0xf; tid = qos & 0xf;
mwl8k_tx_count_packet(sta, tid); mwl8k_tx_count_packet(sta, tid);
spin_lock(&priv->stream_lock); spin_lock(&priv->stream_lock);
...@@ -2027,7 +2030,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, ...@@ -2027,7 +2030,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
else else
tx->peer_id = 0; 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 + tx->timestamp = cpu_to_le32(ioread32(priv->regs +
MWL8K_HW_TIMER_REGISTER)); MWL8K_HW_TIMER_REGISTER));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment