summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-07-13 16:52:07 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-07-13 16:52:07 +0000
commitd14e9e706e4f535af703b3f626b978910a861a4d (patch)
treed7088b74cd19acf8b2ad7479dede42aedb4fe74e
parent27375c513937c315c55340d9b35ed61942171630 (diff)
downloadmtk-20170518-d14e9e706e4f535af703b3f626b978910a861a4d.zip
mtk-20170518-d14e9e706e4f535af703b3f626b978910a861a4d.tar.gz
mtk-20170518-d14e9e706e4f535af703b3f626b978910a861a4d.tar.bz2
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 <helmut.schaa@googlemail.com> SVN-Revision: 22172
-rw-r--r--target/linux/ramips/files/drivers/net/ramips.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target/linux/ramips/files/drivers/net/ramips.c b/target/linux/ramips/files/drivers/net/ramips.c
index 5a728be..4274c92 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;