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