aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tokenring
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tokenring')
-rw-r--r--drivers/net/tokenring/lanstreamer.c8
-rw-r--r--drivers/net/tokenring/smctr.c86
-rw-r--r--drivers/net/tokenring/tms380tr.c24
3 files changed, 58 insertions, 60 deletions
diff --git a/drivers/net/tokenring/lanstreamer.c b/drivers/net/tokenring/lanstreamer.c
index 7b1fe9412b6f..d6ccd59c7d07 100644
--- a/drivers/net/tokenring/lanstreamer.c
+++ b/drivers/net/tokenring/lanstreamer.c
@@ -712,8 +712,8 @@ static int streamer_open(struct net_device *dev)
712 strcat(open_error, " - "); 712 strcat(open_error, " - ");
713 strcat(open_error, open_min_error[(error_code & 0x0f)]); 713 strcat(open_error, open_min_error[(error_code & 0x0f)]);
714 714
715 if (!streamer_priv->streamer_ring_speed 715 if (!streamer_priv->streamer_ring_speed &&
716 && ((error_code & 0x0f) == 0x0d)) 716 ((error_code & 0x0f) == 0x0d))
717 { 717 {
718 printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n", dev->name); 718 printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n", dev->name);
719 printk(KERN_WARNING "%s: Please try again with a specified ring speed \n", dev->name); 719 printk(KERN_WARNING "%s: Please try again with a specified ring speed \n", dev->name);
@@ -1032,8 +1032,8 @@ static irqreturn_t streamer_interrupt(int irq, void *dev_id)
1032 sisr = readw(streamer_mmio + SISR); 1032 sisr = readw(streamer_mmio + SISR);
1033 1033
1034 while((sisr & (SISR_MI | SISR_SRB_REPLY | SISR_ADAPTER_CHECK | SISR_ASB_FREE | 1034 while((sisr & (SISR_MI | SISR_SRB_REPLY | SISR_ADAPTER_CHECK | SISR_ASB_FREE |
1035 SISR_ARB_CMD | SISR_TRB_REPLY | SISR_PAR_ERR | SISR_SERR_ERR)) 1035 SISR_ARB_CMD | SISR_TRB_REPLY | SISR_PAR_ERR | SISR_SERR_ERR)) &&
1036 && (max_intr > 0)) { 1036 (max_intr > 0)) {
1037 1037
1038 if(sisr & SISR_PAR_ERR) { 1038 if(sisr & SISR_PAR_ERR) {
1039 writew(~SISR_PAR_ERR, streamer_mmio + SISR_RUM); 1039 writew(~SISR_PAR_ERR, streamer_mmio + SISR_RUM);
diff --git a/drivers/net/tokenring/smctr.c b/drivers/net/tokenring/smctr.c
index ebda61bc4c2f..427a8970b6fe 100644
--- a/drivers/net/tokenring/smctr.c
+++ b/drivers/net/tokenring/smctr.c
@@ -2309,9 +2309,9 @@ static irqreturn_t smctr_interrupt(int irq, void *dev_id)
2309 else 2309 else
2310 { 2310 {
2311 if((tp->acb_head->cmd 2311 if((tp->acb_head->cmd
2312 == ACB_CMD_READ_TRC_STATUS) 2312 == ACB_CMD_READ_TRC_STATUS) &&
2313 && (tp->acb_head->subcmd 2313 (tp->acb_head->subcmd
2314 == RW_TRC_STATUS_BLOCK)) 2314 == RW_TRC_STATUS_BLOCK))
2315 { 2315 {
2316 if(tp->ptr_bcn_type) 2316 if(tp->ptr_bcn_type)
2317 { 2317 {
@@ -2331,8 +2331,8 @@ static irqreturn_t smctr_interrupt(int irq, void *dev_id)
2331 smctr_disable_16bit(dev); 2331 smctr_disable_16bit(dev);
2332 err = smctr_ring_status_chg(dev); 2332 err = smctr_ring_status_chg(dev);
2333 smctr_enable_16bit(dev); 2333 smctr_enable_16bit(dev);
2334 if((tp->ring_status & REMOVE_RECEIVED) 2334 if((tp->ring_status & REMOVE_RECEIVED) &&
2335 && (tp->config_word0 & NO_AUTOREMOVE)) 2335 (tp->config_word0 & NO_AUTOREMOVE))
2336 { 2336 {
2337 smctr_issue_remove_cmd(dev); 2337 smctr_issue_remove_cmd(dev);
2338 } 2338 }
@@ -2511,9 +2511,9 @@ static int smctr_issue_init_timers_cmd(struct net_device *dev)
2511 tp->config_word0 = THDREN | DMA_TRIGGER | USETPT | NO_AUTOREMOVE; 2511 tp->config_word0 = THDREN | DMA_TRIGGER | USETPT | NO_AUTOREMOVE;
2512 tp->config_word1 = 0; 2512 tp->config_word1 = 0;
2513 2513
2514 if((tp->media_type == MEDIA_STP_16) 2514 if((tp->media_type == MEDIA_STP_16) ||
2515 || (tp->media_type == MEDIA_UTP_16) 2515 (tp->media_type == MEDIA_UTP_16) ||
2516 || (tp->media_type == MEDIA_STP_16_UTP_16)) 2516 (tp->media_type == MEDIA_STP_16_UTP_16))
2517 { 2517 {
2518 tp->config_word0 |= FREQ_16MB_BIT; 2518 tp->config_word0 |= FREQ_16MB_BIT;
2519 } 2519 }
@@ -2556,9 +2556,9 @@ static int smctr_issue_init_timers_cmd(struct net_device *dev)
2556 tp->config_word1 &= ~SOURCE_ROUTING_SPANNING_BITS; 2556 tp->config_word1 &= ~SOURCE_ROUTING_SPANNING_BITS;
2557 } 2557 }
2558 2558
2559 if((tp->media_type == MEDIA_STP_16) 2559 if((tp->media_type == MEDIA_STP_16) ||
2560 || (tp->media_type == MEDIA_UTP_16) 2560 (tp->media_type == MEDIA_UTP_16) ||
2561 || (tp->media_type == MEDIA_STP_16_UTP_16)) 2561 (tp->media_type == MEDIA_STP_16_UTP_16))
2562 { 2562 {
2563 tp->config_word1 |= INTERFRAME_SPACING_16; 2563 tp->config_word1 |= INTERFRAME_SPACING_16;
2564 } 2564 }
@@ -2568,9 +2568,9 @@ static int smctr_issue_init_timers_cmd(struct net_device *dev)
2568 *pTimer_Struc++ = tp->config_word0; 2568 *pTimer_Struc++ = tp->config_word0;
2569 *pTimer_Struc++ = tp->config_word1; 2569 *pTimer_Struc++ = tp->config_word1;
2570 2570
2571 if((tp->media_type == MEDIA_STP_4) 2571 if((tp->media_type == MEDIA_STP_4) ||
2572 || (tp->media_type == MEDIA_UTP_4) 2572 (tp->media_type == MEDIA_UTP_4) ||
2573 || (tp->media_type == MEDIA_STP_4_UTP_4)) 2573 (tp->media_type == MEDIA_STP_4_UTP_4))
2574 { 2574 {
2575 *pTimer_Struc++ = 0x00FA; /* prescale */ 2575 *pTimer_Struc++ = 0x00FA; /* prescale */
2576 *pTimer_Struc++ = 0x2710; /* TPT_limit */ 2576 *pTimer_Struc++ = 0x2710; /* TPT_limit */
@@ -2990,8 +2990,8 @@ static int smctr_load_firmware(struct net_device *dev)
2990 } 2990 }
2991 2991
2992 /* Verify the firmware exists and is there in the right amount. */ 2992 /* Verify the firmware exists and is there in the right amount. */
2993 if (!fw->data 2993 if (!fw->data ||
2994 || (*(fw->data + UCODE_VERSION_OFFSET) < UCODE_VERSION)) 2994 (*(fw->data + UCODE_VERSION_OFFSET) < UCODE_VERSION))
2995 { 2995 {
2996 err = (UCODE_NOT_PRESENT); 2996 err = (UCODE_NOT_PRESENT);
2997 goto out; 2997 goto out;
@@ -3010,9 +3010,8 @@ static int smctr_load_firmware(struct net_device *dev)
3010 smctr_enable_16bit(dev); 3010 smctr_enable_16bit(dev);
3011 smctr_set_page(dev, (__u8 *)tp->ram_access); 3011 smctr_set_page(dev, (__u8 *)tp->ram_access);
3012 3012
3013 if((smctr_checksum_firmware(dev)) 3013 if((smctr_checksum_firmware(dev)) ||
3014 || (*(fw->data + UCODE_VERSION_OFFSET) 3014 (*(fw->data + UCODE_VERSION_OFFSET) > tp->microcode_version))
3015 > tp->microcode_version))
3016 { 3015 {
3017 smctr_enable_adapter_ctrl_store(dev); 3016 smctr_enable_adapter_ctrl_store(dev);
3018 3017
@@ -3117,9 +3116,9 @@ static int smctr_lobe_media_test(struct net_device *dev)
3117 } 3116 }
3118 3117
3119 /* Check if any frames received during test. */ 3118 /* Check if any frames received during test. */
3120 if((tp->rx_fcb_curr[MAC_QUEUE]->frame_status) 3119 if((tp->rx_fcb_curr[MAC_QUEUE]->frame_status) ||
3121 || (tp->rx_fcb_curr[NON_MAC_QUEUE]->frame_status)) 3120 (tp->rx_fcb_curr[NON_MAC_QUEUE]->frame_status))
3122 goto err; 3121 goto err;
3123 3122
3124 /* Set receive mask to "Promisc" mode. */ 3123 /* Set receive mask to "Promisc" mode. */
3125 tp->receive_mask = saved_rcv_mask; 3124 tp->receive_mask = saved_rcv_mask;
@@ -3303,8 +3302,8 @@ static int smctr_make_group_addr(struct net_device *dev, MAC_SUB_VECTOR *tsv)
3303 /* Set Group Address Sub-vector to all zeros if only the 3302 /* Set Group Address Sub-vector to all zeros if only the
3304 * Group Address/Functional Address Indicator is set. 3303 * Group Address/Functional Address Indicator is set.
3305 */ 3304 */
3306 if(tsv->svv[0] == 0x80 && tsv->svv[1] == 0x00 3305 if(tsv->svv[0] == 0x80 && tsv->svv[1] == 0x00 &&
3307 && tsv->svv[2] == 0x00 && tsv->svv[3] == 0x00) 3306 tsv->svv[2] == 0x00 && tsv->svv[3] == 0x00)
3308 tsv->svv[0] = 0x00; 3307 tsv->svv[0] = 0x00;
3309 3308
3310 return (0); 3309 return (0);
@@ -3876,10 +3875,10 @@ static int smctr_process_rx_packet(MAC_HEADER *rmf, __u16 size,
3876 /* NOTE: UNKNOWN MAC frames will NOT be passed up unless 3875 /* NOTE: UNKNOWN MAC frames will NOT be passed up unless
3877 * ACCEPT_ATT_MAC_FRAMES is set. 3876 * ACCEPT_ATT_MAC_FRAMES is set.
3878 */ 3877 */
3879 if(((tp->receive_mask & ACCEPT_ATT_MAC_FRAMES) 3878 if(((tp->receive_mask & ACCEPT_ATT_MAC_FRAMES) &&
3880 && (xframe == (__u8)0)) 3879 (xframe == (__u8)0)) ||
3881 || ((tp->receive_mask & ACCEPT_EXT_MAC_FRAMES) 3880 ((tp->receive_mask & ACCEPT_EXT_MAC_FRAMES) &&
3882 && (xframe == (__u8)1))) 3881 (xframe == (__u8)1)))
3883 { 3882 {
3884 rmf->vl = SWAP_BYTES(rmf->vl); 3883 rmf->vl = SWAP_BYTES(rmf->vl);
3885 3884
@@ -3934,8 +3933,8 @@ static int smctr_ram_memory_test(struct net_device *dev)
3934 3933
3935 word_pattern = start_pattern; 3934 word_pattern = start_pattern;
3936 3935
3937 for(j = 1; j < (__u32)(tp->ram_usable * 1024) - 1 3936 for(j = 1; j < (__u32)(tp->ram_usable * 1024) - 1 && (~err);
3938 && (~err); j += 2, word_pattern++) 3937 j += 2, word_pattern++)
3939 { 3938 {
3940 word_read = *(__u16 *)(pword + j); 3939 word_read = *(__u16 *)(pword + j);
3941 if(word_read != word_pattern) 3940 if(word_read != word_pattern)
@@ -3959,8 +3958,7 @@ static int smctr_ram_memory_test(struct net_device *dev)
3959 for(j = 0; j < (__u32)tp->ram_usable * 1024; j +=2) 3958 for(j = 0; j < (__u32)tp->ram_usable * 1024; j +=2)
3960 *(__u16 *)(pword + j) = word_pattern; 3959 *(__u16 *)(pword + j) = word_pattern;
3961 3960
3962 for(j =0; j < (__u32)tp->ram_usable * 1024 3961 for(j =0; j < (__u32)tp->ram_usable * 1024 && (~err); j += 2)
3963 && (~err); j += 2)
3964 { 3962 {
3965 word_read = *(__u16 *)(pword + j); 3963 word_read = *(__u16 *)(pword + j);
3966 if(word_read != word_pattern) 3964 if(word_read != word_pattern)
@@ -4325,8 +4323,8 @@ static int smctr_restart_tx_chain(struct net_device *dev, short queue)
4325 if(smctr_debug > 10) 4323 if(smctr_debug > 10)
4326 printk(KERN_DEBUG "%s: smctr_restart_tx_chain\n", dev->name); 4324 printk(KERN_DEBUG "%s: smctr_restart_tx_chain\n", dev->name);
4327 4325
4328 if(tp->num_tx_fcbs_used[queue] != 0 4326 if(tp->num_tx_fcbs_used[queue] != 0 &&
4329 && tp->tx_queue_status[queue] == NOT_TRANSMITING) 4327 tp->tx_queue_status[queue] == NOT_TRANSMITING)
4330 { 4328 {
4331 tp->tx_queue_status[queue] = TRANSMITING; 4329 tp->tx_queue_status[queue] = TRANSMITING;
4332 err = smctr_issue_resume_tx_fcb_cmd(dev, queue); 4330 err = smctr_issue_resume_tx_fcb_cmd(dev, queue);
@@ -4349,8 +4347,8 @@ static int smctr_ring_status_chg(struct net_device *dev)
4349 */ 4347 */
4350 if(tp->ring_status_flags == MONITOR_STATE_CHANGED) 4348 if(tp->ring_status_flags == MONITOR_STATE_CHANGED)
4351 { 4349 {
4352 if((tp->monitor_state == MS_ACTIVE_MONITOR_STATE) 4350 if((tp->monitor_state == MS_ACTIVE_MONITOR_STATE) ||
4353 || (tp->monitor_state == MS_STANDBY_MONITOR_STATE)) 4351 (tp->monitor_state == MS_STANDBY_MONITOR_STATE))
4354 { 4352 {
4355 tp->monitor_state_ready = 1; 4353 tp->monitor_state_ready = 1;
4356 } 4354 }
@@ -4363,8 +4361,8 @@ static int smctr_ring_status_chg(struct net_device *dev)
4363 tp->monitor_state_ready = 0; 4361 tp->monitor_state_ready = 0;
4364 4362
4365 /* Ring speed problem, switching to auto mode. */ 4363 /* Ring speed problem, switching to auto mode. */
4366 if(tp->monitor_state == MS_MONITOR_FSM_INACTIVE 4364 if(tp->monitor_state == MS_MONITOR_FSM_INACTIVE &&
4367 && !tp->cleanup) 4365 !tp->cleanup)
4368 { 4366 {
4369 printk(KERN_INFO "%s: Incorrect ring speed switching.\n", 4367 printk(KERN_INFO "%s: Incorrect ring speed switching.\n",
4370 dev->name); 4368 dev->name);
@@ -4442,8 +4440,8 @@ static int smctr_rx_frame(struct net_device *dev)
4442 { 4440 {
4443 err = HARDWARE_FAILED; 4441 err = HARDWARE_FAILED;
4444 4442
4445 if(((status & 0x007f) == 0) 4443 if(((status & 0x007f) == 0) ||
4446 || ((tp->receive_mask & ACCEPT_ERR_PACKETS) != 0)) 4444 ((tp->receive_mask & ACCEPT_ERR_PACKETS) != 0))
4447 { 4445 {
4448 /* frame length less the CRC (4 bytes) + FS (1 byte) */ 4446 /* frame length less the CRC (4 bytes) + FS (1 byte) */
4449 rx_size = tp->rx_fcb_curr[queue]->frame_length - 5; 4447 rx_size = tp->rx_fcb_curr[queue]->frame_length - 5;
@@ -4538,8 +4536,8 @@ static int smctr_send_dat(struct net_device *dev)
4538 } 4536 }
4539 4537
4540 /* Check if GOOD frame Tx'ed. */ 4538 /* Check if GOOD frame Tx'ed. */
4541 if(!(fcb->frame_status & FCB_COMMAND_DONE) 4539 if(!(fcb->frame_status & FCB_COMMAND_DONE) ||
4542 || fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS)) 4540 fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS))
4543 { 4541 {
4544 return (INITIALIZE_FAILED); 4542 return (INITIALIZE_FAILED);
4545 } 4543 }
@@ -4653,8 +4651,8 @@ static int smctr_send_lobe_media_test(struct net_device *dev)
4653 } 4651 }
4654 4652
4655 /* Check if GOOD frame Tx'ed */ 4653 /* Check if GOOD frame Tx'ed */
4656 if(!(fcb->frame_status & FCB_COMMAND_DONE) 4654 if(!(fcb->frame_status & FCB_COMMAND_DONE) ||
4657 || fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS)) 4655 fcb->frame_status & (FCB_TX_STATUS_E | FCB_TX_AC_BITS))
4658 { 4656 {
4659 return (LOBE_MEDIA_TEST_FAILED); 4657 return (LOBE_MEDIA_TEST_FAILED);
4660 } 4658 }
diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c
index fa152144aacf..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 }
@@ -1485,8 +1485,8 @@ static int tms380tr_init_adapter(struct net_device *dev)
1485 /* Mask interesting status bits */ 1485 /* Mask interesting status bits */
1486 Status = SIFREADW(SIFSTS); 1486 Status = SIFREADW(SIFSTS);
1487 Status &= STS_MASK; 1487 Status &= STS_MASK;
1488 } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) 1488 } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) &&
1489 && ((Status & STS_ERROR) == 0) && (loop_cnt != 0)); 1489 ((Status & STS_ERROR) == 0) && (loop_cnt != 0));
1490 1490
1491 if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0) 1491 if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0)
1492 { 1492 {
@@ -2183,8 +2183,8 @@ static void tms380tr_rcv_status_irq(struct net_device *dev)
2183 } 2183 }
2184 } 2184 }
2185 2185
2186 if(skb && (rpl->SkbStat == SKB_DATA_COPY 2186 if(skb && (rpl->SkbStat == SKB_DATA_COPY ||
2187 || rpl->SkbStat == SKB_DMA_DIRECT)) 2187 rpl->SkbStat == SKB_DMA_DIRECT))
2188 { 2188 {
2189 if(rpl->SkbStat == SKB_DATA_COPY) 2189 if(rpl->SkbStat == SKB_DATA_COPY)
2190 skb_copy_to_linear_data(skb, ReceiveDataPtr, 2190 skb_copy_to_linear_data(skb, ReceiveDataPtr,