aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-10-10 15:39:22 -0400
committerDavid S. Miller <davem@davemloft.net>2014-10-10 15:39:22 -0400
commit01d2d484e49e9bc0ed9b5fdaf345a0e2bf35ffed (patch)
tree755e1ac9da55cb85cdf1af2dbad21379019a1b03
parent35b7a1915aa33da812074744647db0d9262a555c (diff)
parent61b423a8a0bd9aeaa046f9a24bed42e3a953a936 (diff)
Merge branch 'bcmgenet_systemport'
Florian Fainelli says: ==================== net: bcmgenet & systemport fixes This patch series fixes an off-by-one error introduced during a previous change, and the two other fixes fix a wake depth imbalance situation for the Wake-on-LAN interrupt line. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/broadcom/bcmsysport.c3
-rw-r--r--drivers/net/ethernet/broadcom/genet/bcmgenet.c9
-rw-r--r--drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c4
3 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index 075688188644..9ae36979bdee 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -436,7 +436,8 @@ static int bcm_sysport_set_wol(struct net_device *dev,
436 /* Flag the device and relevant IRQ as wakeup capable */ 436 /* Flag the device and relevant IRQ as wakeup capable */
437 if (wol->wolopts) { 437 if (wol->wolopts) {
438 device_set_wakeup_enable(kdev, 1); 438 device_set_wakeup_enable(kdev, 1);
439 enable_irq_wake(priv->wol_irq); 439 if (priv->wol_irq_disabled)
440 enable_irq_wake(priv->wol_irq);
440 priv->wol_irq_disabled = 0; 441 priv->wol_irq_disabled = 0;
441 } else { 442 } else {
442 device_set_wakeup_enable(kdev, 0); 443 device_set_wakeup_enable(kdev, 0);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index fff2634b6f34..fdc9ec09e453 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -1285,11 +1285,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
1285 cb = &priv->rx_cbs[priv->rx_read_ptr]; 1285 cb = &priv->rx_cbs[priv->rx_read_ptr];
1286 skb = cb->skb; 1286 skb = cb->skb;
1287 1287
1288 rxpktprocessed++;
1289
1290 priv->rx_read_ptr++;
1291 priv->rx_read_ptr &= (priv->num_rx_bds - 1);
1292
1293 /* We do not have a backing SKB, so we do not have a 1288 /* We do not have a backing SKB, so we do not have a
1294 * corresponding DMA mapping for this incoming packet since 1289 * corresponding DMA mapping for this incoming packet since
1295 * bcmgenet_rx_refill always either has both skb and mapping or 1290 * bcmgenet_rx_refill always either has both skb and mapping or
@@ -1404,6 +1399,10 @@ refill:
1404 err = bcmgenet_rx_refill(priv, cb); 1399 err = bcmgenet_rx_refill(priv, cb);
1405 if (err) 1400 if (err)
1406 netif_err(priv, rx_err, dev, "Rx refill failed\n"); 1401 netif_err(priv, rx_err, dev, "Rx refill failed\n");
1402
1403 rxpktprocessed++;
1404 priv->rx_read_ptr++;
1405 priv->rx_read_ptr &= (priv->num_rx_bds - 1);
1407 } 1406 }
1408 1407
1409 return rxpktprocessed; 1408 return rxpktprocessed;
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
index b82b7e4e06b2..149a0d70c108 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
@@ -86,7 +86,9 @@ int bcmgenet_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
86 /* Flag the device and relevant IRQ as wakeup capable */ 86 /* Flag the device and relevant IRQ as wakeup capable */
87 if (wol->wolopts) { 87 if (wol->wolopts) {
88 device_set_wakeup_enable(kdev, 1); 88 device_set_wakeup_enable(kdev, 1);
89 enable_irq_wake(priv->wol_irq); 89 /* Avoid unbalanced enable_irq_wake calls */
90 if (priv->wol_irq_disabled)
91 enable_irq_wake(priv->wol_irq);
90 priv->wol_irq_disabled = false; 92 priv->wol_irq_disabled = false;
91 } else { 93 } else {
92 device_set_wakeup_enable(kdev, 0); 94 device_set_wakeup_enable(kdev, 0);