1656 } |
1656 } |
1657 } |
1657 } |
1658 |
1658 |
1659 mii_check_link(&nic->mii); |
1659 mii_check_link(&nic->mii); |
1660 |
1660 |
1661 /* Software generated interrupt to recover from (rare) Rx |
1661 if (!nic->ecdev) { |
1662 * allocation failure. |
1662 /* Software generated interrupt to recover from (rare) Rx |
1663 * Unfortunately have to use a spinlock to not re-enable interrupts |
1663 * allocation failure. |
1664 * accidentally, due to hardware that shares a register between the |
1664 * Unfortunately have to use a spinlock to not re-enable interrupts |
1665 * interrupt mask bit and the SW Interrupt generation bit */ |
1665 * accidentally, due to hardware that shares a register between the |
1666 if (!nic->ecdev) |
1666 * interrupt mask bit and the SW Interrupt generation bit */ |
1667 spin_lock_irq(&nic->cmd_lock); |
1667 spin_lock_irq(&nic->cmd_lock); |
1668 iowrite8(ioread8(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi); |
1668 iowrite8(ioread8(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi); |
1669 e100_write_flush(nic); |
1669 e100_write_flush(nic); |
1670 if (!nic->ecdev) |
|
1671 spin_unlock_irq(&nic->cmd_lock); |
1670 spin_unlock_irq(&nic->cmd_lock); |
|
1671 } |
1672 |
1672 |
1673 e100_update_stats(nic); |
1673 e100_update_stats(nic); |
1674 e100_adjust_adaptive_ifs(nic, cmd.speed, cmd.duplex); |
1674 e100_adjust_adaptive_ifs(nic, cmd.speed, cmd.duplex); |
1675 |
1675 |
1676 if(nic->mac <= mac_82557_D100_C) |
1676 if(nic->mac <= mac_82557_D100_C) |