Bläddra i källkod

ath9k: fix too early enabling of rx during ath_startrecv()

rx should only be enabled after enough rx buffers have been given to the
hardware, however ath_rx_buf_link was calling ath9k_hw_rxena after every
single added buffer.
Fix this by calling ath9k_hw_rxena directly from the rx tasklet after
completion instead.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Felix Fietkau 14 år sedan
förälder
incheckning
952949738a
1 ändrade filer med 1 tillägg och 1 borttagningar
  1. 1 1
      drivers/net/wireless/ath/ath9k/recv.c

+ 1 - 1
drivers/net/wireless/ath/ath9k/recv.c

@@ -75,7 +75,6 @@ static void ath_rx_buf_link(struct ath_softc *sc, struct ath_buf *bf)
 		*sc->rx.rxlink = bf->bf_daddr;
 		*sc->rx.rxlink = bf->bf_daddr;
 
 
 	sc->rx.rxlink = &ds->ds_link;
 	sc->rx.rxlink = &ds->ds_link;
-	ath9k_hw_rxena(ah);
 }
 }
 
 
 static void ath_setdefantenna(struct ath_softc *sc, u32 antenna)
 static void ath_setdefantenna(struct ath_softc *sc, u32 antenna)
@@ -1765,6 +1764,7 @@ requeue:
 		} else {
 		} else {
 			list_move_tail(&bf->list, &sc->rx.rxbuf);
 			list_move_tail(&bf->list, &sc->rx.rxbuf);
 			ath_rx_buf_link(sc, bf);
 			ath_rx_buf_link(sc, bf);
+			ath9k_hw_rxena(ah);
 		}
 		}
 	} while (1);
 	} while (1);