Message ID | 1309842642.2720.36.camel@edumazet-laptop |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Jul 5, 2011 at 09:10, Eric Dumazet <eric.dumazet@gmail.com> wrote: > Le mardi 05 juillet 2011 à 08:57 +0400, Alexey Zaytsev a écrit : > >> Ran tcpdump. You are right, I was wrong. Sorry for the noise. > > Thanks for testing ;) > > It would be nice to know if the memory scribbles start after or before > one RFO triggers. > > I can see this calls b44_init_rings() without really stopping the device > before. This seems very suspect to me. > Actually, I've added a trace to show b44_init_rings and b44_free_rings calls, and they are only called once, right after the driver is loaded. So it can't be related to START_RFO. Will attach the diff and dmesg. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le mardi 05 juillet 2011 à 09:18 +0400, Alexey Zaytsev a écrit : > Actually, I've added a trace to show b44_init_rings and b44_free_rings > calls, and they are only called once, right after the driver is > loaded. So it can't be related to START_RFO. Will attach the diff and > dmesg. Thanks I was wondering if DMA could be faster if providing word aligned addresses, could you try : -#define RX_PKT_OFFSET (RX_HEADER_LEN + 2) +#define RX_PKT_OFFSET (RX_HEADER_LEN + NET_IP_ALIGN) (On x86, we now have NET_IP_ALIGN = 0 since commit ea812ca1) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index a69331e..b22dd4c 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -829,6 +829,7 @@ static int b44_rx(struct b44 *bp, int budget) } bp->rx_cons = cons; + wmb(); bw32(bp, B44_DMARX_PTR, cons * sizeof(struct dma_desc)); return received; @@ -848,6 +849,7 @@ static int b44_poll(struct napi_struct *napi, int budget) /* spin_unlock(&bp->tx_lock); */ } if (bp->istat & ISTAT_RFO) { /* fast recovery, in ~20msec */ + pr_err("b44: ISTAT_RFO !\n"); bp->istat &= ~ISTAT_RFO; b44_disable_ints(bp); ssb_device_enable(bp->sdev, 0); /* resets ISTAT_RFO */
Le mardi 05 juillet 2011 à 08:57 +0400, Alexey Zaytsev a écrit : > Ran tcpdump. You are right, I was wrong. Sorry for the noise. Thanks for testing ;) It would be nice to know if the memory scribbles start after or before one RFO triggers. I can see this calls b44_init_rings() without really stopping the device before. This seems very suspect to me. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html