diff mbox

[01/12] rtl8xxxu: Set all ieee80211_rx_status values in parse_rx_desc()

Message ID 1467045130-18874-2-git-send-email-Jes.Sorensen@redhat.com (mailing list archive)
State Accepted
Commit c14ee43b8ae2fe0777335daaf278b86a9f6691a1
Delegated to: Kalle Valo
Headers show

Commit Message

Jes Sorensen June 27, 2016, 4:31 p.m. UTC
From: Jes Sorensen <Jes.Sorensen@redhat.com>

This needs to be handled locally in the parse_rx_desc() function in
order to be able to handle aggregated packets in the future.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

Comments

Kalle Valo July 8, 2016, 1:42 p.m. UTC | #1
Jes Sorensen <Jes.Sorensen@redhat.com> wrote:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
> 
> This needs to be handled locally in the parse_rx_desc() function in
> order to be able to handle aggregated packets in the future.
> 
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>

Thanks, 12 patches applied to wireless-drivers-next.git:

c14ee43b8ae2 rtl8xxxu: Set all ieee80211_rx_status values in parse_rx_desc()
a635df8a41ac rtl8xxxu: Move skb delivery into parse_tx_desc() handler
2db125d4af4c rtl8xxxu: Obtain ieee80211_rx_status within parse_rx_desc()
41892729cf60 rtl8xxxu: Correct rxdesc16 definition
040b97be6056 rtl8xxxu: Add support for aggregated RX packets on gen1 parts
04319ae2f609 rtl8xxxu: Allocate larger RX skbs when aggregation is enabled
1e5b3b3fe9e0 rtl8xxxu: Adjust RX skb size to include space for phystats
91dcbb717531 rtl8xxxu: Enable aggregation for rtl8723au
0a20ed8bd057 rtl8xxxu: Enable aggregation for rtl8192cu/rtl8188cu/rtl8188ru
82cce22acd8e rtl8xxxu: Make DMA aggregation optional by setting a module parameter
614e389f36a9 rtl8xxxu: gen1: Set aggregation timeout (REG_RXDMA_AGG_PG_TH + 1) as well
fd83f1227826 rtl8xxxu: gen1: Add module parameters to adjust DMA aggregation parameters
diff mbox

Patch

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
index dfe61e4..4ebd819 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
@@ -5048,6 +5048,7 @@  static void rtl8xxxu_rx_urb_work(struct work_struct *work)
 int rtl8xxxu_parse_rxdesc16(struct rtl8xxxu_priv *priv, struct sk_buff *skb,
 			    struct ieee80211_rx_status *rx_status)
 {
+	struct ieee80211_hw *hw = priv->hw;
 	struct rtl8xxxu_rxdesc16 *rx_desc =
 		(struct rtl8xxxu_rxdesc16 *)skb->data;
 	struct rtl8723au_phy_stats *phy_stats;
@@ -5059,6 +5060,8 @@  int rtl8xxxu_parse_rxdesc16(struct rtl8xxxu_priv *priv, struct sk_buff *skb,
 	for (i = 0; i < (sizeof(struct rtl8xxxu_rxdesc16) / sizeof(u32)); i++)
 		_rx_desc[i] = le32_to_cpu(_rx_desc_le[i]);
 
+	memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
+
 	skb_pull(skb, sizeof(struct rtl8xxxu_rxdesc16));
 
 	phy_stats = (struct rtl8723au_phy_stats *)skb->data;
@@ -5088,12 +5091,16 @@  int rtl8xxxu_parse_rxdesc16(struct rtl8xxxu_priv *priv, struct sk_buff *skb,
 		rx_status->rate_idx = rx_desc->rxmcs;
 	}
 
+	rx_status->freq = hw->conf.chandef.chan->center_freq;
+	rx_status->band = hw->conf.chandef.chan->band;
+
 	return RX_TYPE_DATA_PKT;
 }
 
 int rtl8xxxu_parse_rxdesc24(struct rtl8xxxu_priv *priv, struct sk_buff *skb,
 			    struct ieee80211_rx_status *rx_status)
 {
+	struct ieee80211_hw *hw = priv->hw;
 	struct rtl8xxxu_rxdesc24 *rx_desc =
 		(struct rtl8xxxu_rxdesc24 *)skb->data;
 	struct rtl8723au_phy_stats *phy_stats;
@@ -5105,6 +5112,8 @@  int rtl8xxxu_parse_rxdesc24(struct rtl8xxxu_priv *priv, struct sk_buff *skb,
 	for (i = 0; i < (sizeof(struct rtl8xxxu_rxdesc24) / sizeof(u32)); i++)
 		_rx_desc[i] = le32_to_cpu(_rx_desc_le[i]);
 
+	memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
+
 	skb_pull(skb, sizeof(struct rtl8xxxu_rxdesc24));
 
 	phy_stats = (struct rtl8723au_phy_stats *)skb->data;
@@ -5140,6 +5149,9 @@  int rtl8xxxu_parse_rxdesc24(struct rtl8xxxu_priv *priv, struct sk_buff *skb,
 		rx_status->rate_idx = rx_desc->rxmcs;
 	}
 
+	rx_status->freq = hw->conf.chandef.chan->center_freq;
+	rx_status->band = hw->conf.chandef.chan->band;
+
 	return RX_TYPE_DATA_PKT;
 }
 
@@ -5202,13 +5214,8 @@  static void rtl8xxxu_rx_complete(struct urb *urb)
 	skb_put(skb, urb->actual_length);
 
 	if (urb->status == 0) {
-		memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
-
 		rx_type = priv->fops->parse_rx_desc(priv, skb, rx_status);
 
-		rx_status->freq = hw->conf.chandef.chan->center_freq;
-		rx_status->band = hw->conf.chandef.chan->band;
-
 		if (rx_type == RX_TYPE_DATA_PKT)
 			ieee80211_rx_irqsafe(hw, skb);
 		else {