summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/microchip/enc28j60.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2016-07-24 17:09:02 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2016-07-24 17:09:02 -0400
commit1592c4d62a89bbca895c568d65ce290dfbc36ecc (patch)
tree6b979bc02ded2ea7e644c34e6939ffbbb7ee001d /drivers/net/ethernet/microchip/enc28j60.c
parent668f455dac57050e33a43ff5fe006f6cd947fc65 (diff)
parentf0445670bd81cae9f46399d98fef5cd1622d9776 (diff)
downloadop-kernel-dev-1592c4d62a89bbca895c568d65ce290dfbc36ecc.zip
op-kernel-dev-1592c4d62a89bbca895c568d65ce290dfbc36ecc.tar.gz
Merge branch 'nfs-rdma'
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 7066954..0a26b11 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);
OpenPOWER on IntegriCloud