aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/microchip/enc28j60.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2016-08-03 12:55:49 +0200
committerRalf Baechle <ralf@linux-mips.org>2016-08-03 12:55:49 +0200
commit4a89cf810130fde41e3fc729e770cb1a5a87d245 (patch)
tree84da40f8d26e51c21e61fc4fc5b7242c0050ae7d /drivers/net/ethernet/microchip/enc28j60.c
parent4f53989b0652ffe2605221c81ca8ffcfc90aed2a (diff)
parente9cbf6299e306d6f2ff7b8fe7ac66059191b182f (diff)
Merge branch '4.7-fixes' into mips-for-linux-next
Diffstat (limited to 'drivers/net/ethernet/microchip/enc28j60.c')
-rw-r--r--drivers/net/ethernet/microchip/enc28j60.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/ethernet/microchip/enc28j60.c b/drivers/net/ethernet/microchip/enc28j60.c
index 7066954c39d6..0a26b11ca8f6 100644
--- a/drivers/net/ethernet/microchip/enc28j60.c
+++ b/drivers/net/ethernet/microchip/enc28j60.c
@@ -1151,7 +1151,8 @@ static void enc28j60_irq_work_handler(struct work_struct *work)
enc28j60_phy_read(priv, PHIR);
}
/* TX complete handler */
- if ((intflags & EIR_TXIF) != 0) {
+ if (((intflags & EIR_TXIF) != 0) &&
+ ((intflags & EIR_TXERIF) == 0)) {
bool err = false;
loop++;
if (netif_msg_intr(priv))
@@ -1203,7 +1204,7 @@ static void enc28j60_irq_work_handler(struct work_struct *work)
enc28j60_tx_clear(ndev, true);
} else
enc28j60_tx_clear(ndev, true);
- locked_reg_bfclr(priv, EIR, EIR_TXERIF);
+ locked_reg_bfclr(priv, EIR, EIR_TXERIF | EIR_TXIF);
}
/* RX Error handler */
if ((intflags & EIR_RXERIF) != 0) {
@@ -1238,6 +1239,8 @@ static void enc28j60_irq_work_handler(struct work_struct *work)
*/
static void enc28j60_hw_tx(struct enc28j60_net *priv)
{
+ BUG_ON(!priv->tx_skb);
+
if (netif_msg_tx_queued(priv))
printk(KERN_DEBUG DRV_NAME
": Tx Packet Len:%d\n", priv->tx_skb->len);