Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
The mptcp conflict was overlapping additions. The SMC conflict was an additional and removal happening at the same time. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -513,14 +513,17 @@ static irqreturn_t ks_irq(int irq, void *pw)
|
||||
{
|
||||
struct net_device *netdev = pw;
|
||||
struct ks_net *ks = netdev_priv(netdev);
|
||||
unsigned long flags;
|
||||
u16 status;
|
||||
|
||||
spin_lock_irqsave(&ks->statelock, flags);
|
||||
/*this should be the first in IRQ handler */
|
||||
ks_save_cmd_reg(ks);
|
||||
|
||||
status = ks_rdreg16(ks, KS_ISR);
|
||||
if (unlikely(!status)) {
|
||||
ks_restore_cmd_reg(ks);
|
||||
spin_unlock_irqrestore(&ks->statelock, flags);
|
||||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
@@ -546,6 +549,7 @@ static irqreturn_t ks_irq(int irq, void *pw)
|
||||
ks->netdev->stats.rx_over_errors++;
|
||||
/* this should be the last in IRQ handler*/
|
||||
ks_restore_cmd_reg(ks);
|
||||
spin_unlock_irqrestore(&ks->statelock, flags);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@@ -615,6 +619,7 @@ static int ks_net_stop(struct net_device *netdev)
|
||||
|
||||
/* shutdown RX/TX QMU */
|
||||
ks_disable_qmu(ks);
|
||||
ks_disable_int(ks);
|
||||
|
||||
/* set powermode to soft power down to save power */
|
||||
ks_set_powermode(ks, PMECR_PM_SOFTDOWN);
|
||||
@@ -671,10 +676,9 @@ static netdev_tx_t ks_start_xmit(struct sk_buff *skb, struct net_device *netdev)
|
||||
{
|
||||
netdev_tx_t retv = NETDEV_TX_OK;
|
||||
struct ks_net *ks = netdev_priv(netdev);
|
||||
unsigned long flags;
|
||||
|
||||
disable_irq(netdev->irq);
|
||||
ks_disable_int(ks);
|
||||
spin_lock(&ks->statelock);
|
||||
spin_lock_irqsave(&ks->statelock, flags);
|
||||
|
||||
/* Extra space are required:
|
||||
* 4 byte for alignment, 4 for status/length, 4 for CRC
|
||||
@@ -688,9 +692,7 @@ static netdev_tx_t ks_start_xmit(struct sk_buff *skb, struct net_device *netdev)
|
||||
dev_kfree_skb(skb);
|
||||
} else
|
||||
retv = NETDEV_TX_BUSY;
|
||||
spin_unlock(&ks->statelock);
|
||||
ks_enable_int(ks);
|
||||
enable_irq(netdev->irq);
|
||||
spin_unlock_irqrestore(&ks->statelock, flags);
|
||||
return retv;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user