diff options
Diffstat (limited to 'drivers/net/tokenring/tms380tr.c')
-rw-r--r-- | drivers/net/tokenring/tms380tr.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c index a7b6888829b5..e3c42f5ac4a9 100644 --- a/drivers/net/tokenring/tms380tr.c +++ b/drivers/net/tokenring/tms380tr.c | |||
@@ -729,8 +729,8 @@ static void tms380tr_timer_chk(unsigned long data) | |||
729 | return; | 729 | return; |
730 | 730 | ||
731 | tms380tr_chk_outstanding_cmds(dev); | 731 | tms380tr_chk_outstanding_cmds(dev); |
732 | if(time_before(tp->LastSendTime + SEND_TIMEOUT, jiffies) | 732 | if(time_before(tp->LastSendTime + SEND_TIMEOUT, jiffies) && |
733 | && (tp->TplFree != tp->TplBusy)) | 733 | (tp->TplFree != tp->TplBusy)) |
734 | { | 734 | { |
735 | /* Anything to send, but stalled too long */ | 735 | /* Anything to send, but stalled too long */ |
736 | tp->LastSendTime = jiffies; | 736 | tp->LastSendTime = jiffies; |
@@ -830,8 +830,8 @@ irqreturn_t tms380tr_interrupt(int irq, void *dev_id) | |||
830 | } | 830 | } |
831 | 831 | ||
832 | /* Reset system interrupt if not already done. */ | 832 | /* Reset system interrupt if not already done. */ |
833 | if(irq_type != STS_IRQ_TRANSMIT_STATUS | 833 | if(irq_type != STS_IRQ_TRANSMIT_STATUS && |
834 | && irq_type != STS_IRQ_RECEIVE_STATUS) { | 834 | irq_type != STS_IRQ_RECEIVE_STATUS) { |
835 | tms380tr_reset_interrupt(dev); | 835 | tms380tr_reset_interrupt(dev); |
836 | } | 836 | } |
837 | 837 | ||
@@ -895,10 +895,10 @@ static unsigned char tms380tr_chk_ssb(struct net_local *tp, unsigned short IrqTy | |||
895 | 895 | ||
896 | /* Check if this interrupt does use the SSB. */ | 896 | /* Check if this interrupt does use the SSB. */ |
897 | 897 | ||
898 | if(IrqType != STS_IRQ_TRANSMIT_STATUS | 898 | if(IrqType != STS_IRQ_TRANSMIT_STATUS && |
899 | && IrqType != STS_IRQ_RECEIVE_STATUS | 899 | IrqType != STS_IRQ_RECEIVE_STATUS && |
900 | && IrqType != STS_IRQ_COMMAND_STATUS | 900 | IrqType != STS_IRQ_COMMAND_STATUS && |
901 | && IrqType != STS_IRQ_RING_STATUS) | 901 | IrqType != STS_IRQ_RING_STATUS) |
902 | { | 902 | { |
903 | return (1); /* SSB not involved. */ | 903 | return (1); /* SSB not involved. */ |
904 | } | 904 | } |
@@ -1364,6 +1364,8 @@ static int tms380tr_reset_adapter(struct net_device *dev) | |||
1364 | return (-1); | 1364 | return (-1); |
1365 | } | 1365 | } |
1366 | 1366 | ||
1367 | MODULE_FIRMWARE("tms380tr.bin"); | ||
1368 | |||
1367 | /* | 1369 | /* |
1368 | * Starts bring up diagnostics of token ring adapter and evaluates | 1370 | * Starts bring up diagnostics of token ring adapter and evaluates |
1369 | * diagnostic results. | 1371 | * diagnostic results. |
@@ -1483,8 +1485,8 @@ static int tms380tr_init_adapter(struct net_device *dev) | |||
1483 | /* Mask interesting status bits */ | 1485 | /* Mask interesting status bits */ |
1484 | Status = SIFREADW(SIFSTS); | 1486 | Status = SIFREADW(SIFSTS); |
1485 | Status &= STS_MASK; | 1487 | Status &= STS_MASK; |
1486 | } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) | 1488 | } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) && |
1487 | && ((Status & STS_ERROR) == 0) && (loop_cnt != 0)); | 1489 | ((Status & STS_ERROR) == 0) && (loop_cnt != 0)); |
1488 | 1490 | ||
1489 | if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0) | 1491 | if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0) |
1490 | { | 1492 | { |
@@ -2181,8 +2183,8 @@ static void tms380tr_rcv_status_irq(struct net_device *dev) | |||
2181 | } | 2183 | } |
2182 | } | 2184 | } |
2183 | 2185 | ||
2184 | if(skb && (rpl->SkbStat == SKB_DATA_COPY | 2186 | if(skb && (rpl->SkbStat == SKB_DATA_COPY || |
2185 | || rpl->SkbStat == SKB_DMA_DIRECT)) | 2187 | rpl->SkbStat == SKB_DMA_DIRECT)) |
2186 | { | 2188 | { |
2187 | if(rpl->SkbStat == SKB_DATA_COPY) | 2189 | if(rpl->SkbStat == SKB_DATA_COPY) |
2188 | skb_copy_to_linear_data(skb, ReceiveDataPtr, | 2190 | skb_copy_to_linear_data(skb, ReceiveDataPtr, |