Any update regarding this patch series? Thanks, Helmut
Am Dienstag 16 November 2010 schrieb Helmut Schaa: > Instead just drop the rx'ed frame silently and reuse the already > available buffer. > > Signed-off-by: Helmut Schaa <[email protected]> > --- > target/linux/ramips/files/drivers/net/ramips.c | 35 > +++++++++++++----------- > 1 files changed, 19 insertions(+), 16 deletions(-) > > diff --git a/target/linux/ramips/files/drivers/net/ramips.c > b/target/linux/ramips/files/drivers/net/ramips.c > index fb6e6e8..fb849e8 100644 > --- a/target/linux/ramips/files/drivers/net/ramips.c > +++ b/target/linux/ramips/files/drivers/net/ramips.c > @@ -272,23 +272,26 @@ ramips_eth_rx_hw(unsigned long ptr) > break; > max_rx--; > > - rx_skb = priv->rx_skb[rx]; > - skb_put(rx_skb, RX_DMA_PLEN0(priv->rx[rx].rxd2)); > - rx_skb->dev = dev; > - rx_skb->protocol = eth_type_trans(rx_skb, dev); > - rx_skb->ip_summed = CHECKSUM_NONE; > - dev->stats.rx_packets++; > - dev->stats.rx_bytes += rx_skb->len; > - netif_rx(rx_skb); > - > new_skb = netdev_alloc_skb(dev, MAX_RX_LENGTH + 2); > - priv->rx_skb[rx] = new_skb; > - BUG_ON(!new_skb); > - skb_reserve(new_skb, 2); > - priv->rx[rx].rxd1 = dma_map_single(NULL, > - new_skb->data, > - MAX_RX_LENGTH + 2, > - DMA_FROM_DEVICE); > + /* Reuse the buffer on allocation failures */ > + if (new_skb) { > + rx_skb = priv->rx_skb[rx]; > + skb_put(rx_skb, RX_DMA_PLEN0(priv->rx[rx].rxd2)); > + rx_skb->dev = dev; > + rx_skb->protocol = eth_type_trans(rx_skb, dev); > + rx_skb->ip_summed = CHECKSUM_NONE; > + dev->stats.rx_packets++; > + dev->stats.rx_bytes += rx_skb->len; > + netif_rx(rx_skb); > + > + priv->rx_skb[rx] = new_skb; > + skb_reserve(new_skb, 2); > + priv->rx[rx].rxd1 = dma_map_single(NULL, > + new_skb->data, > + MAX_RX_LENGTH + 2, > + DMA_FROM_DEVICE); > + } > + > priv->rx[rx].rxd2 &= ~RX_DMA_DONE; > wmb(); > ramips_fe_wr(rx, RAMIPS_RX_CALC_IDX0); > _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
