]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iwlegacy: merge reclaim check
authorStanislaw Gruszka <sgruszka@redhat.com>
Wed, 19 Feb 2014 08:15:10 +0000 (09:15 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 24 Feb 2014 20:21:55 +0000 (15:21 -0500)
Merge reclaim check for 3945 & 4965. This add some more checks for
3945, most importantly N_RX notify.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlegacy/3945-mac.c
drivers/net/wireless/iwlegacy/4965-mac.c
drivers/net/wireless/iwlegacy/common.h

index 46b32d41aa2f3287016647d8ad509dea02283dc7..dc1d20cf64ee9b04b83b7d28495b696a44694317 100644 (file)
@@ -1248,14 +1248,7 @@ il3945_rx_handle(struct il_priv *il)
                len = le32_to_cpu(pkt->len_n_flags) & IL_RX_FRAME_SIZE_MSK;
                len += sizeof(u32);     /* account for status word */
 
-               /* Reclaim a command buffer only if this packet is a response
-                *   to a (driver-originated) command.
-                * If the packet (e.g. Rx frame) originated from uCode,
-                *   there is no command buffer to reclaim.
-                * Ucode should set SEQ_RX_FRAME bit if ucode-originated,
-                *   but apparently a few don't get set; catch them here. */
-               reclaim = !(pkt->hdr.sequence & SEQ_RX_FRAME) &&
-                   pkt->hdr.cmd != N_STATS && pkt->hdr.cmd != C_TX;
+               reclaim = il_need_reclaim(il, pkt);
 
                /* Based on type of command response or notification,
                 *   handle those that need handling via function in
index 43f488a8cda21790a646dcd4efa4ffd04d445c96..50673f7e30bc71d304b1c5ff192d1b480da68b1e 100644 (file)
@@ -4274,17 +4274,7 @@ il4965_rx_handle(struct il_priv *il)
                len = le32_to_cpu(pkt->len_n_flags) & IL_RX_FRAME_SIZE_MSK;
                len += sizeof(u32);     /* account for status word */
 
-               /* Reclaim a command buffer only if this packet is a response
-                *   to a (driver-originated) command.
-                * If the packet (e.g. Rx frame) originated from uCode,
-                *   there is no command buffer to reclaim.
-                * Ucode should set SEQ_RX_FRAME bit if ucode-originated,
-                *   but apparently a few don't get set; catch them here. */
-               reclaim = !(pkt->hdr.sequence & SEQ_RX_FRAME) &&
-                   (pkt->hdr.cmd != N_RX_PHY) && (pkt->hdr.cmd != N_RX) &&
-                   (pkt->hdr.cmd != N_RX_MPDU) &&
-                   (pkt->hdr.cmd != N_COMPRESSED_BA) &&
-                   (pkt->hdr.cmd != N_STATS) && (pkt->hdr.cmd != C_TX);
+               reclaim = il_need_reclaim(il, pkt);
 
                /* Based on type of command response or notification,
                 *   handle those that need handling via function in
index ad123d66ab6c5c13e2bd120df7b3c2b412d1400a..21964d2cad83ed031125dde89c0f66982ff9997b 100644 (file)
@@ -1978,6 +1978,20 @@ void il_wr_prph(struct il_priv *il, u32 addr, u32 val);
 u32 il_read_targ_mem(struct il_priv *il, u32 addr);
 void il_write_targ_mem(struct il_priv *il, u32 addr, u32 val);
 
+static inline bool il_need_reclaim(struct il_priv *il, struct il_rx_pkt *pkt)
+{
+       /* Reclaim a command buffer only if this packet is a response
+        * to a (driver-originated) command. If the packet (e.g. Rx frame)
+        * originated from uCode, there is no command buffer to reclaim.
+        * Ucode should set SEQ_RX_FRAME bit if ucode-originated, but
+        * apparently a few don't get set; catch them here.
+        */
+       return !(pkt->hdr.sequence & SEQ_RX_FRAME) &&
+              pkt->hdr.cmd != N_STATS && pkt->hdr.cmd != C_TX &&
+              pkt->hdr.cmd != N_RX_PHY && pkt->hdr.cmd != N_RX &&
+              pkt->hdr.cmd != N_RX_MPDU && pkt->hdr.cmd != N_COMPRESSED_BA;
+}
+
 static inline void
 _il_write8(struct il_priv *il, u32 ofs, u8 val)
 {