Lines Matching refs:lp
163 struct arcnet_local *lp = netdev_priv(dev); in arcnet_dump_packet() local
173 spin_lock_irqsave(&lp->lock, flags); in arcnet_dump_packet()
175 lp->hw.copy_from_card(dev, bufnum, 0, buf, 512); in arcnet_dump_packet()
177 spin_unlock_irqrestore(&lp->lock, flags); in arcnet_dump_packet()
197 struct arcnet_local *lp = netdev_priv(dev); in arcnet_led_event() local
203 led_trigger_blink_oneshot(lp->recon_led_trig, in arcnet_led_event()
207 led_trigger_event(lp->tx_led_trig, LED_OFF); in arcnet_led_event()
208 led_trigger_event(lp->recon_led_trig, LED_OFF); in arcnet_led_event()
211 led_trigger_event(lp->tx_led_trig, LED_OFF); in arcnet_led_event()
212 led_trigger_event(lp->recon_led_trig, LED_OFF); in arcnet_led_event()
215 led_trigger_blink_oneshot(lp->tx_led_trig, in arcnet_led_event()
224 struct arcnet_local *lp = netdev_priv(to_net_dev(gendev)); in arcnet_led_release() local
226 led_trigger_unregister_simple(lp->tx_led_trig); in arcnet_led_release()
227 led_trigger_unregister_simple(lp->recon_led_trig); in arcnet_led_release()
236 struct arcnet_local *lp = netdev_priv(netdev); in devm_arcnet_led_init() local
245 snprintf(lp->tx_led_trig_name, sizeof(lp->tx_led_trig_name), in devm_arcnet_led_init()
247 snprintf(lp->recon_led_trig_name, sizeof(lp->recon_led_trig_name), in devm_arcnet_led_init()
250 led_trigger_register_simple(lp->tx_led_trig_name, in devm_arcnet_led_init()
251 &lp->tx_led_trig); in devm_arcnet_led_init()
252 led_trigger_register_simple(lp->recon_led_trig_name, in devm_arcnet_led_init()
253 &lp->recon_led_trig); in devm_arcnet_led_init()
289 struct arcnet_local *lp = netdev_priv(dev); in release_arcbuf() local
292 lp->buf_queue[lp->first_free_buf++] = bufnum; in release_arcbuf()
293 lp->first_free_buf %= 5; in release_arcbuf()
298 for (i = lp->next_buf; i != lp->first_free_buf; i = (i + 1) % 5) in release_arcbuf()
299 arc_cont(D_DURING, "#%d ", lp->buf_queue[i]); in release_arcbuf()
309 struct arcnet_local *lp = netdev_priv(dev); in get_arcbuf() local
312 if (!atomic_dec_and_test(&lp->buf_lock)) { in get_arcbuf()
315 lp->buf_lock.counter); in get_arcbuf()
317 if (lp->next_buf >= 5) in get_arcbuf()
318 lp->next_buf -= 5; in get_arcbuf()
320 if (lp->next_buf == lp->first_free_buf) { in get_arcbuf()
323 buf = lp->buf_queue[lp->next_buf++]; in get_arcbuf()
324 lp->next_buf %= 5; in get_arcbuf()
331 for (i = lp->next_buf; i != lp->first_free_buf; i = (i + 1) % 5) in get_arcbuf()
332 arc_cont(D_DURING, "#%d ", lp->buf_queue[i]); in get_arcbuf()
336 atomic_inc(&lp->buf_lock); in get_arcbuf()
402 struct arcnet_local *lp = netdev_priv(dev); in alloc_arcdev() local
404 spin_lock_init(&lp->lock); in alloc_arcdev()
405 init_timer(&lp->timer); in alloc_arcdev()
406 lp->timer.data = (unsigned long) dev; in alloc_arcdev()
407 lp->timer.function = arcnet_timer; in alloc_arcdev()
423 struct arcnet_local *lp = netdev_priv(dev); in arcnet_open() local
428 if (!try_module_get(lp->hw.owner)) in arcnet_open()
445 if (lp->hw.reset(dev, 0) && lp->hw.reset(dev, 1)) in arcnet_open()
455 memset(lp->default_proto, 0, sizeof(lp->default_proto)); in arcnet_open()
460 lp->default_proto[0] = count; in arcnet_open()
466 atomic_set(&lp->buf_lock, 1); in arcnet_open()
468 lp->next_buf = lp->first_free_buf = 0; in arcnet_open()
473 lp->cur_tx = lp->next_tx = -1; in arcnet_open()
474 lp->cur_rx = -1; in arcnet_open()
476 lp->rfc1201.sequence = 1; in arcnet_open()
479 if (lp->hw.open) in arcnet_open()
480 lp->hw.open(dev); in arcnet_open()
488 if (lp->hw.status(dev) & RESETflag) { in arcnet_open()
491 lp->hw.command(dev, CFLAGScmd | RESETclear); in arcnet_open()
496 lp->hw.intmask(dev, 0); in arcnet_open()
502 lp->intmask = NORXflag | RECONflag; in arcnet_open()
503 lp->hw.intmask(dev, lp->intmask); in arcnet_open()
508 mod_timer(&lp->timer, jiffies + msecs_to_jiffies(1000)); in arcnet_open()
514 module_put(lp->hw.owner); in arcnet_open()
522 struct arcnet_local *lp = netdev_priv(dev); in arcnet_close() local
525 del_timer_sync(&lp->timer); in arcnet_close()
531 lp->hw.intmask(dev, 0); in arcnet_close()
532 lp->hw.command(dev, NOTXcmd); /* stop transmit */ in arcnet_close()
533 lp->hw.command(dev, NORXcmd); /* disable receive */ in arcnet_close()
537 lp->hw.close(dev); in arcnet_close()
538 module_put(lp->hw.owner); in arcnet_close()
547 const struct arcnet_local *lp = netdev_priv(dev); in arcnet_header() local
582 proto_num = lp->default_proto[_daddr]; in arcnet_header()
599 struct arcnet_local *lp = netdev_priv(dev); in arcnet_send_packet() local
609 lp->hw.status(dev), lp->cur_tx, lp->next_tx, skb->len, skb->protocol); in arcnet_send_packet()
630 spin_lock_irqsave(&lp->lock, flags); in arcnet_send_packet()
631 lp->hw.intmask(dev, 0); in arcnet_send_packet()
632 if (lp->next_tx == -1) in arcnet_send_packet()
647 lp->outgoing.proto = proto; in arcnet_send_packet()
648 lp->outgoing.skb = skb; in arcnet_send_packet()
649 lp->outgoing.pkt = pkt; in arcnet_send_packet()
659 lp->next_tx = txbuf; in arcnet_send_packet()
665 __FILE__, __LINE__, __func__, lp->hw.status(dev)); in arcnet_send_packet()
667 lp->hw.intmask(dev, 0); in arcnet_send_packet()
670 lp->intmask |= TXFREEflag | EXCNAKflag; in arcnet_send_packet()
671 lp->hw.intmask(dev, lp->intmask); in arcnet_send_packet()
673 __FILE__, __LINE__, __func__, lp->hw.status(dev)); in arcnet_send_packet()
677 spin_unlock_irqrestore(&lp->lock, flags); in arcnet_send_packet()
687 struct arcnet_local *lp = netdev_priv(dev); in go_tx() local
690 lp->hw.status(dev), lp->intmask, lp->next_tx, lp->cur_tx); in go_tx()
692 if (lp->cur_tx != -1 || lp->next_tx == -1) in go_tx()
696 arcnet_dump_packet(dev, lp->next_tx, "go_tx", 0); in go_tx()
698 lp->cur_tx = lp->next_tx; in go_tx()
699 lp->next_tx = -1; in go_tx()
702 lp->hw.command(dev, TXcmd | (lp->cur_tx << 3)); in go_tx()
705 lp->lasttrans_dest = lp->lastload_dest; in go_tx()
706 lp->lastload_dest = 0; in go_tx()
707 lp->excnak_pending = 0; in go_tx()
708 lp->intmask |= TXFREEflag | EXCNAKflag; in go_tx()
717 struct arcnet_local *lp = netdev_priv(dev); in arcnet_timeout() local
718 int status = lp->hw.status(dev); in arcnet_timeout()
721 spin_lock_irqsave(&lp->lock, flags); in arcnet_timeout()
727 lp->timed_out = 1; in arcnet_timeout()
728 lp->hw.command(dev, NOTXcmd | (lp->cur_tx << 3)); in arcnet_timeout()
733 lp->hw.intmask(dev, 0); in arcnet_timeout()
734 lp->intmask |= TXFREEflag | EXCNAKflag; in arcnet_timeout()
735 lp->hw.intmask(dev, lp->intmask); in arcnet_timeout()
737 spin_unlock_irqrestore(&lp->lock, flags); in arcnet_timeout()
739 if (time_after(jiffies, lp->last_timeout + 10 * HZ)) { in arcnet_timeout()
741 msg, status, lp->intmask, lp->lasttrans_dest); in arcnet_timeout()
742 lp->last_timeout = jiffies; in arcnet_timeout()
745 if (lp->cur_tx == -1) in arcnet_timeout()
757 struct arcnet_local *lp; in arcnet_interrupt() local
765 lp = netdev_priv(dev); in arcnet_interrupt()
766 BUG_ON(!lp); in arcnet_interrupt()
768 spin_lock(&lp->lock); in arcnet_interrupt()
774 if (lp->hw.status(dev) & RESETflag) in arcnet_interrupt()
775 lp->hw.command(dev, CFLAGScmd | RESETclear); in arcnet_interrupt()
776 lp->hw.intmask(dev, 0); in arcnet_interrupt()
777 spin_unlock(&lp->lock); in arcnet_interrupt()
782 lp->hw.status(dev), lp->intmask); in arcnet_interrupt()
786 status = lp->hw.status(dev); in arcnet_interrupt()
817 if (status & lp->intmask & NORXflag) { in arcnet_interrupt()
818 recbuf = lp->cur_rx; in arcnet_interrupt()
822 lp->cur_rx = get_arcbuf(dev); in arcnet_interrupt()
823 if (lp->cur_rx != -1) { in arcnet_interrupt()
825 lp->cur_rx); in arcnet_interrupt()
826 lp->hw.command(dev, RXcmd | (lp->cur_rx << 3) | RXbcasts); in arcnet_interrupt()
835 lp->hw.command(dev, NOTXcmd); /* disable transmit */ in arcnet_interrupt()
836 lp->excnak_pending = 1; in arcnet_interrupt()
838 lp->hw.command(dev, EXCNAKclear); in arcnet_interrupt()
839 lp->intmask &= ~(EXCNAKflag); in arcnet_interrupt()
844 if ((status & lp->intmask & TXFREEflag) || lp->timed_out) { in arcnet_interrupt()
845 lp->intmask &= ~(TXFREEflag | EXCNAKflag); in arcnet_interrupt()
850 if (lp->cur_tx != -1 && !lp->timed_out) { in arcnet_interrupt()
852 if (lp->lasttrans_dest != 0) { in arcnet_interrupt()
856 lp->lasttrans_dest); in arcnet_interrupt()
863 lp->lasttrans_dest); in arcnet_interrupt()
867 if (lp->outgoing.proto && in arcnet_interrupt()
868 lp->outgoing.proto->ack_tx) { in arcnet_interrupt()
873 else if (lp->excnak_pending) in arcnet_interrupt()
878 lp->outgoing.proto in arcnet_interrupt()
882 if (lp->cur_tx != -1) in arcnet_interrupt()
883 release_arcbuf(dev, lp->cur_tx); in arcnet_interrupt()
885 lp->cur_tx = -1; in arcnet_interrupt()
886 lp->timed_out = 0; in arcnet_interrupt()
893 if (lp->outgoing.proto && in arcnet_interrupt()
894 lp->outgoing.proto->continue_tx) { in arcnet_interrupt()
898 if (lp->outgoing.proto->continue_tx(dev, txbuf)) { in arcnet_interrupt()
900 dev->stats.tx_bytes += lp->outgoing.skb->len; in arcnet_interrupt()
901 if (!lp->outgoing.proto->ack_tx) { in arcnet_interrupt()
902 dev_kfree_skb_irq(lp->outgoing.skb); in arcnet_interrupt()
903 lp->outgoing.proto = NULL; in arcnet_interrupt()
906 lp->next_tx = txbuf; in arcnet_interrupt()
910 if (lp->cur_tx == -1) in arcnet_interrupt()
923 if (status & lp->intmask & RECONflag) { in arcnet_interrupt()
924 lp->hw.command(dev, CFLAGScmd | CONFIGclear); in arcnet_interrupt()
933 mod_timer(&lp->timer, jiffies + msecs_to_jiffies(1000)); in arcnet_interrupt()
941 if (!lp->first_recon || !lp->last_recon || in arcnet_interrupt()
942 time_after(jiffies, lp->last_recon + HZ * 10)) { in arcnet_interrupt()
943 if (lp->network_down) in arcnet_interrupt()
945 lp->first_recon = lp->last_recon = jiffies; in arcnet_interrupt()
946 lp->num_recons = lp->network_down = 0; in arcnet_interrupt()
950 lp->last_recon = jiffies; in arcnet_interrupt()
951 lp->num_recons++; in arcnet_interrupt()
954 lp->num_recons, in arcnet_interrupt()
955 (lp->last_recon - lp->first_recon) / HZ, in arcnet_interrupt()
956 lp->network_down); in arcnet_interrupt()
964 if (!lp->network_down && in arcnet_interrupt()
965 (lp->last_recon - lp->first_recon) <= HZ * 60 && in arcnet_interrupt()
966 lp->num_recons >= RECON_THRESHOLD) { in arcnet_interrupt()
967 lp->network_down = 1; in arcnet_interrupt()
969 } else if (!lp->network_down && in arcnet_interrupt()
970 lp->last_recon - lp->first_recon > HZ * 60) { in arcnet_interrupt()
974 lp->first_recon = lp->last_recon; in arcnet_interrupt()
975 lp->num_recons = 1; in arcnet_interrupt()
978 } else if (lp->network_down && in arcnet_interrupt()
979 time_after(jiffies, lp->last_recon + HZ * 10)) { in arcnet_interrupt()
980 if (lp->network_down) in arcnet_interrupt()
982 lp->first_recon = lp->last_recon = 0; in arcnet_interrupt()
983 lp->num_recons = lp->network_down = 0; in arcnet_interrupt()
994 lp->hw.status(dev), boguscount); in arcnet_interrupt()
997 lp->hw.intmask(dev, 0); in arcnet_interrupt()
999 lp->hw.intmask(dev, lp->intmask); in arcnet_interrupt()
1001 spin_unlock(&lp->lock); in arcnet_interrupt()
1011 struct arcnet_local *lp = netdev_priv(dev); in arcnet_rx() local
1018 lp->hw.copy_from_card(dev, bufnum, 0, &pkt, ARC_HDR_SIZE); in arcnet_rx()
1029 lp->hw.copy_from_card(dev, bufnum, ofs, soft, sizeof(pkt.soft)); in arcnet_rx()
1032 lp->hw.copy_from_card(dev, bufnum, ofs, soft, length); in arcnet_rx()
1045 *oldp = arc_proto_map[lp->default_proto[pkt.hard.source]], in arcnet_rx()
1057 lp->default_proto[0] = soft->proto; in arcnet_rx()
1060 lp->default_proto[pkt.hard.source] = soft->proto; in arcnet_rx()
1077 struct arcnet_local *lp = netdev_priv(dev); in null_build_header() local
1081 lp->default_proto[daddr]); in null_build_header()
1091 struct arcnet_local *lp = netdev_priv(dev); in null_prepare_tx() local
1102 lp->hw.copy_to_card(dev, bufnum, 0, &newpkt, ARC_HDR_SIZE); in null_prepare_tx()