Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01d2d484 authored by David S. Miller's avatar David S. Miller
Browse files

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 35b7a191 61b423a8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -436,6 +436,7 @@ static int bcm_sysport_set_wol(struct net_device *dev,
	/* Flag the device and relevant IRQ as wakeup capable */
	if (wol->wolopts) {
		device_set_wakeup_enable(kdev, 1);
		if (priv->wol_irq_disabled)
			enable_irq_wake(priv->wol_irq);
		priv->wol_irq_disabled = 0;
	} else {
+4 −5
Original line number Diff line number Diff line
@@ -1285,11 +1285,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
		cb = &priv->rx_cbs[priv->rx_read_ptr];
		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
		 * corresponding DMA mapping for this incoming packet since
		 * bcmgenet_rx_refill always either has both skb and mapping or
@@ -1404,6 +1399,10 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
		err = bcmgenet_rx_refill(priv, cb);
		if (err)
			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;
+3 −1
Original line number Diff line number Diff line
@@ -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 */
	if (wol->wolopts) {
		device_set_wakeup_enable(kdev, 1);
		/* Avoid unbalanced enable_irq_wake calls */
		if (priv->wol_irq_disabled)
			enable_irq_wake(priv->wol_irq);
		priv->wol_irq_disabled = false;
	} else {