iwlegacy: merge reclaim check
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>
This commit is contained in:
parent
59f01183a7
commit
8e67427aca
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue