History

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. ====================

David S. Miller committed 12 years ago

Commit 01d2d482 parents 35b7a19 61b423a3 files · +9 −7Browse files

Unified · Split

3 files
  1. drivers/net/ethernet/broadcom/bcmsysport.c +2 −1
  2. drivers/net/ethernet/broadcom/genet/bcmgenet.c +4 −5
  3. drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +3 −1
drivers/net/ethernet/broadcom/bcmsysport.c+2−1
@@ -436,7 +436,8 @@ static int bcm_sysport_set_wol(struct net_device *dev, · 435 unmodified lines
436436 /* Flag the device and relevant IRQ as wakeup capable */
437437 if (wol->wolopts) {
438438 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);
440441 priv->wol_irq_disabled = 0;
441442 } else {
442443 device_set_wakeup_enable(kdev, 0);
drivers/net/ethernet/broadcom/genet/bcmgenet.c+4−5
@@ -1285,11 +1285,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv, · 1284 unmodified lines
12851285 cb = &priv->rx_cbs[priv->rx_read_ptr];
12861286 skb = cb->skb;
12871287
1288− rxpktprocessed++;
1289−
1290− priv->rx_read_ptr++;
1291− priv->rx_read_ptr &= (priv->num_rx_bds - 1);
1292−
12931288 /* We do not have a backing SKB, so we do not have a
12941289 * corresponding DMA mapping for this incoming packet since
12951290 * bcmgenet_rx_refill always either has both skb and mapping or
@@ -1404,6 +1399,10 @@ refill: · 108 unmodified lines
14041399 err = bcmgenet_rx_refill(priv, cb);
14051400 if (err)
14061401 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);
14071406 }
14081407
14091408 return rxpktprocessed;
drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c+3−1
@@ -86,7 +86,9 @@ int bcmgenet_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) · 85 unmodified lines
8686 /* Flag the device and relevant IRQ as wakeup capable */
8787 if (wol->wolopts) {
8888 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);
9092 priv->wol_irq_disabled = false;
9193 } else {
9294 device_set_wakeup_enable(kdev, 0);