Author: hauke
Date: 2014-12-18 17:25:22 +0100 (Thu, 18 Dec 2014)
New Revision: 43749

Added:
   
trunk/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch
   
trunk/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
   
trunk/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch
   
trunk/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
Modified:
   trunk/target/linux/generic/patches-3.14/773-bgmac-add-srab-switch.patch
   trunk/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch
Log:
kernel: bgmac: fix some problems

There are some problems in the napi usage that are fixed now.

Signed-off-by: Hauke Mehrtens <[email protected]>


Added: 
trunk/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch
                             (rev 0)
+++ 
trunk/target/linux/generic/patches-3.14/771-bgmac-register-napi-before-the-device.patch
     2014-12-18 16:25:22 UTC (rev 43749)
@@ -0,0 +1,43 @@
+From d5b4e70e8c205a67e2e246908b259367ab9ccecf Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <[email protected]>
+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 <[email protected]>
+---
+ 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);

Added: 
trunk/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
                              (rev 0)
+++ 
trunk/target/linux/generic/patches-3.14/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
      2014-12-18 16:25:22 UTC (rev 43749)
@@ -0,0 +1,29 @@
+From fbd3b188fbaa861165a074c454d8f8dcf15343a0 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <[email protected]>
+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 <[email protected]>
+---
+ 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;
+ }

Modified: 
trunk/target/linux/generic/patches-3.14/773-bgmac-add-srab-switch.patch
===================================================================
--- trunk/target/linux/generic/patches-3.14/773-bgmac-add-srab-switch.patch     
2014-12-18 16:23:42 UTC (rev 43748)
+++ trunk/target/linux/generic/patches-3.14/773-bgmac-add-srab-switch.patch     
2014-12-18 16:25:22 UTC (rev 43749)
@@ -30,7 +30,7 @@
  /**************************************************
   * BCMA bus ops
   **************************************************/
-@@ -1521,6 +1533,16 @@ static int bgmac_probe(struct bcma_devic
+@@ -1523,6 +1535,16 @@ static int bgmac_probe(struct bcma_devic
                goto err_dma_free;
        }
  
@@ -55,9 +55,9 @@
 +              platform_device_unregister(&bgmac_b53_dev);
 +      bgmac->b53_device = NULL;
 +
-       netif_napi_del(&bgmac->napi);
        unregister_netdev(bgmac->net_dev);
        bgmac_mii_unregister(bgmac);
+       netif_napi_del(&bgmac->napi);
 --- a/drivers/net/ethernet/broadcom/bgmac.h
 +++ b/drivers/net/ethernet/broadcom/bgmac.h
 @@ -457,6 +457,9 @@ struct bgmac {

Added: 
trunk/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch
                             (rev 0)
+++ 
trunk/target/linux/generic/patches-3.18/771-bgmac-register-napi-before-the-device.patch
     2014-12-18 16:25:22 UTC (rev 43749)
@@ -0,0 +1,43 @@
+From d5b4e70e8c205a67e2e246908b259367ab9ccecf Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <[email protected]>
+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 <[email protected]>
+---
+ 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);

Added: 
trunk/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
                              (rev 0)
+++ 
trunk/target/linux/generic/patches-3.18/772-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch
      2014-12-18 16:25:22 UTC (rev 43749)
@@ -0,0 +1,29 @@
+From fbd3b188fbaa861165a074c454d8f8dcf15343a0 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <[email protected]>
+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 <[email protected]>
+---
+ 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;
+ }

Modified: 
trunk/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch
===================================================================
--- trunk/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch     
2014-12-18 16:23:42 UTC (rev 43748)
+++ trunk/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch     
2014-12-18 16:25:22 UTC (rev 43749)
@@ -30,7 +30,7 @@
  /**************************************************
   * BCMA bus ops
   **************************************************/
-@@ -1521,6 +1533,16 @@ static int bgmac_probe(struct bcma_devic
+@@ -1523,6 +1535,16 @@ static int bgmac_probe(struct bcma_devic
                goto err_dma_free;
        }
  
@@ -55,9 +55,9 @@
 +              platform_device_unregister(&bgmac_b53_dev);
 +      bgmac->b53_device = NULL;
 +
-       netif_napi_del(&bgmac->napi);
        unregister_netdev(bgmac->net_dev);
        bgmac_mii_unregister(bgmac);
+       netif_napi_del(&bgmac->napi);
 --- a/drivers/net/ethernet/broadcom/bgmac.h
 +++ b/drivers/net/ethernet/broadcom/bgmac.h
 @@ -457,6 +457,9 @@ struct bgmac {
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to