From: Rafał Miłecki Date: Wed, 11 Feb 2015 17:35:09 +0000 (+0000) Subject: kernel: backport mainlined bgmac patches from 3.19 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fwigyori.git;a=commitdiff_plain;h=e73ca898ab11cc58084f8359fe3858d685505c65 kernel: backport mainlined bgmac patches from 3.19 Signed-off-by: Rafał Miłecki SVN-Revision: 44410 --- diff --git a/target/linux/generic/patches-3.14/074-bgmac-register-napi-before-the-device.patch b/target/linux/generic/patches-3.14/074-bgmac-register-napi-before-the-device.patch new file mode 100644 index 0000000000..2eba9eee82 --- /dev/null +++ b/target/linux/generic/patches-3.14/074-bgmac-register-napi-before-the-device.patch @@ -0,0 +1,49 @@ +From 6216642f200258708e47170ff14ba8ecb486f4f0 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 18 Jan 2015 19:49:58 +0100 +Subject: [PATCH] bgmac: register napi before the device + +napi should get registered before the netdev and not after. + +Signed-off-by: Hauke Mehrtens +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c +index 05c6af6..aa9f950 100644 +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_device *core) + if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM) + bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n"); + ++ netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); ++ + err = bgmac_mii_register(bgmac); + if (err) { + bgmac_err(bgmac, "Cannot register MDIO\n"); +@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_device *core) + + netif_carrier_off(net_dev); + +- netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); +- + return 0; + + err_mii_unregister: +@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_device *core) + { + struct bgmac *bgmac = bcma_get_drvdata(core); + +- netif_napi_del(&bgmac->napi); + unregister_netdev(bgmac->net_dev); + bgmac_mii_unregister(bgmac); ++ netif_napi_del(&bgmac->napi); + bgmac_dma_free(bgmac); + bcma_set_drvdata(core, NULL); + free_netdev(bgmac->net_dev); +-- +1.8.4.5 + diff --git a/target/linux/generic/patches-3.14/075-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch b/target/linux/generic/patches-3.14/075-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch new file mode 100644 index 0000000000..506d8c6f1c --- /dev/null +++ b/target/linux/generic/patches-3.14/075-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch @@ -0,0 +1,35 @@ +From 43f159c60a99318b1ef7d1d7c16c4dfdd06bfd90 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 18 Jan 2015 19:49:59 +0100 +Subject: [PATCH] bgmac: activate irqs only if there is nothing to poll + +IRQs should only get activated when there is nothing to poll in the +queue any more and to after every poll. + +Signed-off-by: Hauke Mehrtens +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c +index aa9f950..3007d95 100644 +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -1167,10 +1167,10 @@ static int bgmac_poll(struct napi_struct *napi, int weight) + bgmac->int_status = 0; + } + +- if (handled < weight) ++ if (handled < weight) { + napi_complete(napi); +- +- bgmac_chip_intrs_on(bgmac); ++ bgmac_chip_intrs_on(bgmac); ++ } + + return handled; + } +-- +1.8.4.5 + diff --git a/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch b/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch deleted file mode 100644 index 56248c6720..0000000000 --- a/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch +++ /dev/null @@ -1,43 +0,0 @@ -From d5b4e70e8c205a67e2e246908b259367ab9ccecf Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 8 Dec 2014 08:27:23 +0100 -Subject: [PATCH 2/4] bgmac: register napi before the device - -napi should get registered before the netdev and not after. - -Signed-off-by: Hauke Mehrtens ---- - drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_devic - if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM) - bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n"); - -+ netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); -+ - err = bgmac_mii_register(bgmac); - if (err) { - bgmac_err(bgmac, "Cannot register MDIO\n"); -@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_devic - - netif_carrier_off(net_dev); - -- netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); -- - return 0; - - err_mii_unregister: -@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_dev - { - struct bgmac *bgmac = bcma_get_drvdata(core); - -- netif_napi_del(&bgmac->napi); - unregister_netdev(bgmac->net_dev); - bgmac_mii_unregister(bgmac); -+ netif_napi_del(&bgmac->napi); - bgmac_dma_free(bgmac); - bcma_set_drvdata(core, NULL); - free_netdev(bgmac->net_dev); diff --git a/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch b/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch deleted file mode 100644 index b494998be3..0000000000 --- a/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch +++ /dev/null @@ -1,29 +0,0 @@ -From fbd3b188fbaa861165a074c454d8f8dcf15343a0 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 8 Dec 2014 08:47:10 +0100 -Subject: [PATCH 3/4] bgmac: activate irqs only if there is nothing to poll - -IRQs should only get activated when there is nothing to poll in the -queue any more and to after every poll. - -Signed-off-by: Hauke Mehrtens ---- - drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1167,10 +1167,10 @@ static int bgmac_poll(struct napi_struct - bgmac->int_status = 0; - } - -- if (handled < weight) -+ if (handled < weight) { - napi_complete(napi); -- -- bgmac_chip_intrs_on(bgmac); -+ bgmac_chip_intrs_on(bgmac); -+ } - - return handled; - } diff --git a/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch b/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch new file mode 100644 index 0000000000..2eba9eee82 --- /dev/null +++ b/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch @@ -0,0 +1,49 @@ +From 6216642f200258708e47170ff14ba8ecb486f4f0 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 18 Jan 2015 19:49:58 +0100 +Subject: [PATCH] bgmac: register napi before the device + +napi should get registered before the netdev and not after. + +Signed-off-by: Hauke Mehrtens +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c +index 05c6af6..aa9f950 100644 +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_device *core) + if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM) + bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n"); + ++ netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); ++ + err = bgmac_mii_register(bgmac); + if (err) { + bgmac_err(bgmac, "Cannot register MDIO\n"); +@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_device *core) + + netif_carrier_off(net_dev); + +- netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); +- + return 0; + + err_mii_unregister: +@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_device *core) + { + struct bgmac *bgmac = bcma_get_drvdata(core); + +- netif_napi_del(&bgmac->napi); + unregister_netdev(bgmac->net_dev); + bgmac_mii_unregister(bgmac); ++ netif_napi_del(&bgmac->napi); + bgmac_dma_free(bgmac); + bcma_set_drvdata(core, NULL); + free_netdev(bgmac->net_dev); +-- +1.8.4.5 + diff --git a/target/linux/generic/patches-3.18/071-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch b/target/linux/generic/patches-3.18/071-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch new file mode 100644 index 0000000000..506d8c6f1c --- /dev/null +++ b/target/linux/generic/patches-3.18/071-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch @@ -0,0 +1,35 @@ +From 43f159c60a99318b1ef7d1d7c16c4dfdd06bfd90 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 18 Jan 2015 19:49:59 +0100 +Subject: [PATCH] bgmac: activate irqs only if there is nothing to poll + +IRQs should only get activated when there is nothing to poll in the +queue any more and to after every poll. + +Signed-off-by: Hauke Mehrtens +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c +index aa9f950..3007d95 100644 +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -1167,10 +1167,10 @@ static int bgmac_poll(struct napi_struct *napi, int weight) + bgmac->int_status = 0; + } + +- if (handled < weight) ++ if (handled < weight) { + napi_complete(napi); +- +- bgmac_chip_intrs_on(bgmac); ++ bgmac_chip_intrs_on(bgmac); ++ } + + return handled; + } +-- +1.8.4.5 + diff --git a/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch b/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch deleted file mode 100644 index 56248c6720..0000000000 --- a/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch +++ /dev/null @@ -1,43 +0,0 @@ -From d5b4e70e8c205a67e2e246908b259367ab9ccecf Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 8 Dec 2014 08:27:23 +0100 -Subject: [PATCH 2/4] bgmac: register napi before the device - -napi should get registered before the netdev and not after. - -Signed-off-by: Hauke Mehrtens ---- - drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_devic - if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM) - bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n"); - -+ netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); -+ - err = bgmac_mii_register(bgmac); - if (err) { - bgmac_err(bgmac, "Cannot register MDIO\n"); -@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_devic - - netif_carrier_off(net_dev); - -- netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); -- - return 0; - - err_mii_unregister: -@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_dev - { - struct bgmac *bgmac = bcma_get_drvdata(core); - -- netif_napi_del(&bgmac->napi); - unregister_netdev(bgmac->net_dev); - bgmac_mii_unregister(bgmac); -+ netif_napi_del(&bgmac->napi); - bgmac_dma_free(bgmac); - bcma_set_drvdata(core, NULL); - free_netdev(bgmac->net_dev); diff --git a/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch b/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch deleted file mode 100644 index b494998be3..0000000000 --- a/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch +++ /dev/null @@ -1,29 +0,0 @@ -From fbd3b188fbaa861165a074c454d8f8dcf15343a0 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 8 Dec 2014 08:47:10 +0100 -Subject: [PATCH 3/4] bgmac: activate irqs only if there is nothing to poll - -IRQs should only get activated when there is nothing to poll in the -queue any more and to after every poll. - -Signed-off-by: Hauke Mehrtens ---- - drivers/net/ethernet/broadcom/bgmac.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1167,10 +1167,10 @@ static int bgmac_poll(struct napi_struct - bgmac->int_status = 0; - } - -- if (handled < weight) -+ if (handled < weight) { - napi_complete(napi); -- -- bgmac_chip_intrs_on(bgmac); -+ bgmac_chip_intrs_on(bgmac); -+ } - - return handled; - }