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>
This commit is contained in:
commit
01d2d484e4
|
@ -436,6 +436,7 @@ static int bcm_sysport_set_wol(struct net_device *dev,
|
||||||
/* Flag the device and relevant IRQ as wakeup capable */
|
/* Flag the device and relevant IRQ as wakeup capable */
|
||||||
if (wol->wolopts) {
|
if (wol->wolopts) {
|
||||||
device_set_wakeup_enable(kdev, 1);
|
device_set_wakeup_enable(kdev, 1);
|
||||||
|
if (priv->wol_irq_disabled)
|
||||||
enable_irq_wake(priv->wol_irq);
|
enable_irq_wake(priv->wol_irq);
|
||||||
priv->wol_irq_disabled = 0;
|
priv->wol_irq_disabled = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1285,11 +1285,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
|
||||||
cb = &priv->rx_cbs[priv->rx_read_ptr];
|
cb = &priv->rx_cbs[priv->rx_read_ptr];
|
||||||
skb = cb->skb;
|
skb = cb->skb;
|
||||||
|
|
||||||
rxpktprocessed++;
|
|
||||||
|
|
||||||
priv->rx_read_ptr++;
|
|
||||||
priv->rx_read_ptr &= (priv->num_rx_bds - 1);
|
|
||||||
|
|
||||||
/* We do not have a backing SKB, so we do not have a
|
/* We do not have a backing SKB, so we do not have a
|
||||||
* corresponding DMA mapping for this incoming packet since
|
* corresponding DMA mapping for this incoming packet since
|
||||||
* bcmgenet_rx_refill always either has both skb and mapping or
|
* bcmgenet_rx_refill always either has both skb and mapping or
|
||||||
|
@ -1404,6 +1399,10 @@ refill:
|
||||||
err = bcmgenet_rx_refill(priv, cb);
|
err = bcmgenet_rx_refill(priv, cb);
|
||||||
if (err)
|
if (err)
|
||||||
netif_err(priv, rx_err, dev, "Rx refill failed\n");
|
netif_err(priv, rx_err, dev, "Rx refill failed\n");
|
||||||
|
|
||||||
|
rxpktprocessed++;
|
||||||
|
priv->rx_read_ptr++;
|
||||||
|
priv->rx_read_ptr &= (priv->num_rx_bds - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rxpktprocessed;
|
return rxpktprocessed;
|
||||||
|
|
|
@ -86,6 +86,8 @@ int bcmgenet_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
||||||
/* Flag the device and relevant IRQ as wakeup capable */
|
/* Flag the device and relevant IRQ as wakeup capable */
|
||||||
if (wol->wolopts) {
|
if (wol->wolopts) {
|
||||||
device_set_wakeup_enable(kdev, 1);
|
device_set_wakeup_enable(kdev, 1);
|
||||||
|
/* Avoid unbalanced enable_irq_wake calls */
|
||||||
|
if (priv->wol_irq_disabled)
|
||||||
enable_irq_wake(priv->wol_irq);
|
enable_irq_wake(priv->wol_irq);
|
||||||
priv->wol_irq_disabled = false;
|
priv->wol_irq_disabled = false;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue