From ebbeb55561f15e6ebf760e5b735a92bcdcdeaca1 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 19 Mar 2012 12:31:46 +0100 Subject: linux-ti335x-psp 3.2: update to v3.2.11 Also add script used to generate patches and SRC_URI Signed-off-by: Koen Kooi Signed-off-by: Denys Dmytriyenko --- ...c-Do-not-free-all-rx-dma-descriptors-duri.patch | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch') diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch new file mode 100644 index 00000000..51197fcf --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0062-davinci_emac-Do-not-free-all-rx-dma-descriptors-duri.patch @@ -0,0 +1,72 @@ +From d0a93cc14174387dc5a6416d741a83fad831eae9 Mon Sep 17 00:00:00 2001 +From: Christian Riesch +Date: Thu, 23 Feb 2012 01:14:17 +0000 +Subject: [PATCH 62/72] davinci_emac: Do not free all rx dma descriptors + during init + +commit 5d69703263d588dbb03f4e57091afd8942d96e6d upstream. + +This patch fixes a regression that was introduced by + +commit 0a5f38467765ee15478db90d81e40c269c8dda20 +davinci_emac: Add Carrier Link OK check in Davinci RX Handler + +Said commit adds a check whether the carrier link is ok. If the link is +not ok, the skb is freed and no new dma descriptor added to the rx dma +channel. This causes trouble during initialization when the carrier +status has not yet been updated. If a lot of packets are received while +netif_carrier_ok returns false, all dma descriptors are freed and the +rx dma transfer is stopped. + +The bug occurs when the board is connected to a network with lots of +traffic and the ifconfig down/up is done, e.g., when reconfiguring +the interface with DHCP. + +The bug can be reproduced by flood pinging the davinci board while doing +ifconfig eth0 down +ifconfig eth0 up +on the board. + +After that, the rx path stops working and the overrun value reported +by ifconfig is counting up. + +This patch reverts commit 0a5f38467765ee15478db90d81e40c269c8dda20 +and instead issues warnings only if cpdma_chan_submit returns -ENOMEM. + +Signed-off-by: Christian Riesch +Cc: Cyril Chemparathy +Cc: Sascha Hauer +Tested-by: Rajashekhara, Sudhakar +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/ti/davinci_emac.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c +index 815c797..22f2788 100644 +--- a/drivers/net/ethernet/ti/davinci_emac.c ++++ b/drivers/net/ethernet/ti/davinci_emac.c +@@ -1007,7 +1007,7 @@ static void emac_rx_handler(void *token, int len, int status) + int ret; + + /* free and bail if we are shutting down */ +- if (unlikely(!netif_running(ndev) || !netif_carrier_ok(ndev))) { ++ if (unlikely(!netif_running(ndev))) { + dev_kfree_skb_any(skb); + return; + } +@@ -1036,7 +1036,9 @@ static void emac_rx_handler(void *token, int len, int status) + recycle: + ret = cpdma_chan_submit(priv->rxchan, skb, skb->data, + skb_tailroom(skb), GFP_KERNEL); +- if (WARN_ON(ret < 0)) ++ ++ WARN_ON(ret == -ENOMEM); ++ if (unlikely(ret < 0)) + dev_kfree_skb_any(skb); + } + +-- +1.7.9.4 + -- cgit v1.2.3-54-g00ecf