kernel: bgmac: fix some problems
There are some problems in the napi usage that are fixed now. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 43749
This commit is contained in:
@@ -0,0 +1,43 @@
|
|||||||
|
From d5b4e70e8c205a67e2e246908b259367ab9ccecf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
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 <hauke@hauke-m.de>
|
||||||
|
---
|
||||||
|
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);
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From fbd3b188fbaa861165a074c454d8f8dcf15343a0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
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 <hauke@hauke-m.de>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
||||||
@@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
/**************************************************
|
/**************************************************
|
||||||
* BCMA bus ops
|
* 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;
|
goto err_dma_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,9 +55,9 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
+ platform_device_unregister(&bgmac_b53_dev);
|
+ platform_device_unregister(&bgmac_b53_dev);
|
||||||
+ bgmac->b53_device = NULL;
|
+ bgmac->b53_device = NULL;
|
||||||
+
|
+
|
||||||
netif_napi_del(&bgmac->napi);
|
|
||||||
unregister_netdev(bgmac->net_dev);
|
unregister_netdev(bgmac->net_dev);
|
||||||
bgmac_mii_unregister(bgmac);
|
bgmac_mii_unregister(bgmac);
|
||||||
|
netif_napi_del(&bgmac->napi);
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac.h
|
--- a/drivers/net/ethernet/broadcom/bgmac.h
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac.h
|
+++ b/drivers/net/ethernet/broadcom/bgmac.h
|
||||||
@@ -457,6 +457,9 @@ struct bgmac {
|
@@ -457,6 +457,9 @@ struct bgmac {
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
From d5b4e70e8c205a67e2e246908b259367ab9ccecf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
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 <hauke@hauke-m.de>
|
||||||
|
---
|
||||||
|
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);
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From fbd3b188fbaa861165a074c454d8f8dcf15343a0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
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 <hauke@hauke-m.de>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
||||||
@@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
/**************************************************
|
/**************************************************
|
||||||
* BCMA bus ops
|
* 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;
|
goto err_dma_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,9 +55,9 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
+ platform_device_unregister(&bgmac_b53_dev);
|
+ platform_device_unregister(&bgmac_b53_dev);
|
||||||
+ bgmac->b53_device = NULL;
|
+ bgmac->b53_device = NULL;
|
||||||
+
|
+
|
||||||
netif_napi_del(&bgmac->napi);
|
|
||||||
unregister_netdev(bgmac->net_dev);
|
unregister_netdev(bgmac->net_dev);
|
||||||
bgmac_mii_unregister(bgmac);
|
bgmac_mii_unregister(bgmac);
|
||||||
|
netif_napi_del(&bgmac->napi);
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac.h
|
--- a/drivers/net/ethernet/broadcom/bgmac.h
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac.h
|
+++ b/drivers/net/ethernet/broadcom/bgmac.h
|
||||||
@@ -457,6 +457,9 @@ struct bgmac {
|
@@ -457,6 +457,9 @@ struct bgmac {
|
||||||
|
|||||||
Reference in New Issue
Block a user