aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/wil6210/wil6210.h
diff options
context:
space:
mode:
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>2014-12-23 02:47:04 -0500
committerKalle Valo <kvalo@codeaurora.org>2015-01-15 07:30:55 -0500
commit3a124ed6454a939277c6b51bea542464be43ef6f (patch)
tree58b2f34badd46c1e082761513c07ef453ce27e5f /drivers/net/wireless/ath/wil6210/wil6210.h
parent3277213feb1b6625e4d7ad9eef1778dc88cdf46f (diff)
wil6210: simple ADDBA on originator (Tx) side
Upon Tx vring creation, initiate BACK establishment with maximum possible window size. When establishing secure connection, there is EAPOL data exchange between connection itself and "data port open", where security is done and non-EAPOL data may be transferred. It is better to send EAPOL frames using normal ACK because of firmware considerations. send ADDBA only is 2 conditions met: - data port open for the corresponded STA - vring created Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/ath/wil6210/wil6210.h')
-rw-r--r--drivers/net/wireless/ath/wil6210/wil6210.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h
index 4a9a68e7a007..9cd76da3738d 100644
--- a/drivers/net/wireless/ath/wil6210/wil6210.h
+++ b/drivers/net/wireless/ath/wil6210/wil6210.h
@@ -314,6 +314,7 @@ struct vring_tx_data {
314 cycles_t idle, last_idle, begin; 314 cycles_t idle, last_idle, begin;
315 u8 agg_wsize; /* agreed aggregation window, 0 - no agg */ 315 u8 agg_wsize; /* agreed aggregation window, 0 - no agg */
316 u16 agg_timeout; 316 u16 agg_timeout;
317 bool addba_in_progress; /* if set, agg_xxx is for request in progress */
317}; 318};
318 319
319enum { /* for wil6210_priv.status */ 320enum { /* for wil6210_priv.status */
@@ -418,6 +419,14 @@ struct wil_back_rx {
418 u16 ba_seq_ctrl; 419 u16 ba_seq_ctrl;
419}; 420};
420 421
422struct wil_back_tx {
423 struct list_head list;
424 /* request params, converted to CPU byte order - what we asked for */
425 u8 ringid;
426 u8 agg_wsize;
427 u16 agg_timeout;
428};
429
421struct wil6210_priv { 430struct wil6210_priv {
422 struct pci_dev *pdev; 431 struct pci_dev *pdev;
423 int n_msi; 432 int n_msi;
@@ -470,6 +479,9 @@ struct wil6210_priv {
470 struct list_head back_rx_pending; 479 struct list_head back_rx_pending;
471 struct mutex back_rx_mutex; /* protect @back_rx_pending */ 480 struct mutex back_rx_mutex; /* protect @back_rx_pending */
472 struct work_struct back_rx_worker; 481 struct work_struct back_rx_worker;
482 struct list_head back_tx_pending;
483 struct mutex back_tx_mutex; /* protect @back_tx_pending */
484 struct work_struct back_tx_worker;
473 /* DMA related */ 485 /* DMA related */
474 struct vring vring_rx; 486 struct vring vring_rx;
475 struct vring vring_tx[WIL6210_MAX_TX_RINGS]; 487 struct vring vring_tx[WIL6210_MAX_TX_RINGS];
@@ -601,6 +613,9 @@ int wil_addba_rx_request(struct wil6210_priv *wil, u8 cidxtid,
601 __le16 ba_timeout, __le16 ba_seq_ctrl); 613 __le16 ba_timeout, __le16 ba_seq_ctrl);
602void wil_back_rx_worker(struct work_struct *work); 614void wil_back_rx_worker(struct work_struct *work);
603void wil_back_rx_flush(struct wil6210_priv *wil); 615void wil_back_rx_flush(struct wil6210_priv *wil);
616int wil_addba_tx_request(struct wil6210_priv *wil, u8 ringid);
617void wil_back_tx_worker(struct work_struct *work);
618void wil_back_tx_flush(struct wil6210_priv *wil);
604 619
605void wil6210_clear_irq(struct wil6210_priv *wil); 620void wil6210_clear_irq(struct wil6210_priv *wil);
606int wil6210_init_irq(struct wil6210_priv *wil, int irq); 621int wil6210_init_irq(struct wil6210_priv *wil, int irq);