summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
diff options
context:
space:
mode:
authorIgor Mitsyanko2019-03-20 11:04:09 +0100
committerKalle Valo2019-04-04 11:57:33 +0200
commitbc70732f9bd98a451cdbddf57a183543df618367 (patch)
tree43322ea38a86ea2daf4ded8e8188219b400780b6 /drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
parentqtnfmac: allow changing the netns (diff)
downloadkernel-qcow2-linux-bc70732f9bd98a451cdbddf57a183543df618367.tar.gz
kernel-qcow2-linux-bc70732f9bd98a451cdbddf57a183543df618367.tar.xz
kernel-qcow2-linux-bc70732f9bd98a451cdbddf57a183543df618367.zip
qtnfmac: send EAPOL frames via control path
Use control path to send EAPOL frames to make sure they are sent with higher priority with aggregation disabled. Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c')
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
index d9b83ea6281c..9a4380ed7f1b 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
@@ -498,6 +498,13 @@ static int qtnf_pcie_data_tx(struct qtnf_bus *bus, struct sk_buff *skb)
int len;
int i;
+ if (unlikely(skb->protocol == htons(ETH_P_PAE))) {
+ qtnf_packet_send_hi_pri(skb);
+ qtnf_update_tx_stats(skb->dev, skb);
+ priv->tx_eapol++;
+ return NETDEV_TX_OK;
+ }
+
spin_lock_irqsave(&priv->tx_lock, flags);
if (!qtnf_tx_queue_ready(ts)) {
@@ -761,6 +768,7 @@ static int qtnf_dbg_pkt_stats(struct seq_file *s, void *data)
seq_printf(s, "tx_done_count(%u)\n", priv->tx_done_count);
seq_printf(s, "tx_reclaim_done(%u)\n", priv->tx_reclaim_done);
seq_printf(s, "tx_reclaim_req(%u)\n", priv->tx_reclaim_req);
+ seq_printf(s, "tx_eapol(%u)\n", priv->tx_eapol);
seq_printf(s, "tx_bd_r_index(%u)\n", priv->tx_bd_r_index);
seq_printf(s, "tx_done_index(%u)\n", tx_done_index);