From fa4dd3d5dea2da3fdb89c60560d5b5a24501a478 Mon Sep 17 00:00:00 2001 From: juhosg Date: Tue, 13 Jul 2010 16:52:07 +0000 Subject: [PATCH] ramips: Fix bridging in ramips ethernet driver Bridging between the ramips ethernet driver and rt2800pci was somewhat broken. Frames received by the ethernet driver which were passed to the wifi driver for transmission were sometimes corrupted or sent out with huge delays. The reason for this is the missing assignment of skb->tail in the ramips ethernet driver's rx path resulting in skb->tail pointing to skb->data. Since skb->tail is used by mac80211 it writes into skb->data which messes up the frames content. Fix this by using skb_put to correctly set skb->len and skb->tail. Signed-off-by: Helmut Schaa git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22172 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ramips/files/drivers/net/ramips.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ramips/files/drivers/net/ramips.c b/target/linux/ramips/files/drivers/net/ramips.c index 5a728be02..4274c923b 100644 --- a/target/linux/ramips/files/drivers/net/ramips.c +++ b/target/linux/ramips/files/drivers/net/ramips.c @@ -231,7 +231,7 @@ ramips_eth_rx_hw(unsigned long ptr) max_rx--; rx_skb = priv->rx_skb[rx]; - rx_skb->len = RX_DMA_PLEN0(priv->rx[rx].rxd2); + 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;