Lines Matching refs:lp
164 struct arcnet_local *lp = netdev_priv(dev);
174 spin_lock_irqsave(&lp->lock, flags);
176 lp->hw.copy_from_card(dev, bufnum, 0, buf, 512);
178 spin_unlock_irqrestore(&lp->lock, flags);
198 struct arcnet_local *lp = netdev_priv(dev);
202 led_trigger_blink_oneshot(lp->recon_led_trig, 350, 350, 0);
205 led_trigger_event(lp->tx_led_trig, LED_OFF);
206 led_trigger_event(lp->recon_led_trig, LED_OFF);
209 led_trigger_event(lp->tx_led_trig, LED_OFF);
210 led_trigger_event(lp->recon_led_trig, LED_OFF);
213 led_trigger_blink_oneshot(lp->tx_led_trig, 50, 50, 0);
221 struct arcnet_local *lp = netdev_priv(to_net_dev(gendev));
223 led_trigger_unregister_simple(lp->tx_led_trig);
224 led_trigger_unregister_simple(lp->recon_led_trig);
233 struct arcnet_local *lp = netdev_priv(netdev);
242 snprintf(lp->tx_led_trig_name, sizeof(lp->tx_led_trig_name),
244 snprintf(lp->recon_led_trig_name, sizeof(lp->recon_led_trig_name),
247 led_trigger_register_simple(lp->tx_led_trig_name,
248 &lp->tx_led_trig);
249 led_trigger_register_simple(lp->recon_led_trig_name,
250 &lp->recon_led_trig);
286 struct arcnet_local *lp = netdev_priv(dev);
289 lp->buf_queue[lp->first_free_buf++] = bufnum;
290 lp->first_free_buf %= 5;
295 for (i = lp->next_buf; i != lp->first_free_buf; i = (i + 1) % 5)
296 arc_cont(D_DURING, "#%d ", lp->buf_queue[i]);
306 struct arcnet_local *lp = netdev_priv(dev);
309 if (!atomic_dec_and_test(&lp->buf_lock)) {
312 lp->buf_lock.counter);
314 if (lp->next_buf >= 5)
315 lp->next_buf -= 5;
317 if (lp->next_buf == lp->first_free_buf) {
320 buf = lp->buf_queue[lp->next_buf++];
321 lp->next_buf %= 5;
328 for (i = lp->next_buf; i != lp->first_free_buf; i = (i + 1) % 5)
329 arc_cont(D_DURING, "#%d ", lp->buf_queue[i]);
333 atomic_inc(&lp->buf_lock);
383 struct arcnet_local *lp = from_timer(lp, t, timer);
384 struct net_device *dev = lp->dev;
386 spin_lock_irq(&lp->lock);
388 if (!lp->reset_in_progress && !netif_carrier_ok(dev)) {
393 spin_unlock_irq(&lp->lock);
398 struct arcnet_local *lp;
401 lp = container_of(work, struct arcnet_local, reset_work);
402 dev = lp->dev;
407 if (!netif_running(dev) || !lp->reset_in_progress)
416 if (!netif_running(dev) || !lp->reset_in_progress)
428 struct arcnet_local *lp = from_tasklet(lp, t, reply_tasklet);
436 skb = lp->outgoing.skb;
457 serr->ee.ee_info = lp->reply_status;
460 dev_kfree_skb(lp->outgoing.skb);
461 lp->outgoing.skb = NULL;
463 ackskb->dev = lp->dev;
480 struct arcnet_local *lp = netdev_priv(dev);
482 lp->dev = dev;
483 spin_lock_init(&lp->lock);
484 timer_setup(&lp->timer, arcnet_timer, 0);
485 INIT_WORK(&lp->reset_work, reset_device_work);
494 struct arcnet_local *lp = netdev_priv(dev);
499 cancel_work_sync(&lp->reset_work);
513 struct arcnet_local *lp = netdev_priv(dev);
518 if (!try_module_get(lp->hw.owner))
529 tasklet_setup(&lp->reply_tasklet, arcnet_reply_tasklet);
537 if (lp->hw.reset(dev, 0) && lp->hw.reset(dev, 1))
547 memset(lp->default_proto, 0, sizeof(lp->default_proto));
552 lp->default_proto[0] = count;
558 atomic_set(&lp->buf_lock, 1);
560 lp->next_buf = lp->first_free_buf = 0;
565 lp->cur_tx = lp->next_tx = -1;
566 lp->cur_rx = -1;
568 lp->rfc1201.sequence = 1;
571 if (lp->hw.open)
572 lp->hw.open(dev);
580 if (lp->hw.status(dev) & RESETflag) {
583 lp->hw.command(dev, CFLAGScmd | RESETclear);
588 lp->hw.intmask(dev, 0);
594 lp->intmask = NORXflag | RECONflag;
595 lp->hw.intmask(dev, lp->intmask);
600 mod_timer(&lp->timer, jiffies + msecs_to_jiffies(1000));
606 module_put(lp->hw.owner);
614 struct arcnet_local *lp = netdev_priv(dev);
617 del_timer_sync(&lp->timer);
622 tasklet_kill(&lp->reply_tasklet);
625 lp->hw.intmask(dev, 0);
626 lp->hw.command(dev, NOTXcmd); /* stop transmit */
627 lp->hw.command(dev, NORXcmd); /* disable receive */
631 lp->hw.close(dev);
634 lp->reset_in_progress = 0;
636 module_put(lp->hw.owner);
645 const struct arcnet_local *lp = netdev_priv(dev);
680 proto_num = lp->default_proto[_daddr];
697 struct arcnet_local *lp = netdev_priv(dev);
707 lp->hw.status(dev), lp->cur_tx, lp->next_tx, skb->len, skb->protocol);
728 spin_lock_irqsave(&lp->lock, flags);
729 lp->hw.intmask(dev, 0);
730 if (lp->next_tx == -1)
736 lp->outgoing.skb = skb;
745 lp->outgoing.proto = proto;
746 lp->outgoing.skb = skb;
747 lp->outgoing.pkt = pkt;
757 lp->next_tx = txbuf;
763 __FILE__, __LINE__, __func__, lp->hw.status(dev));
765 lp->hw.intmask(dev, 0);
768 lp->intmask |= TXFREEflag | EXCNAKflag;
769 lp->hw.intmask(dev, lp->intmask);
771 __FILE__, __LINE__, __func__, lp->hw.status(dev));
775 spin_unlock_irqrestore(&lp->lock, flags);
785 struct arcnet_local *lp = netdev_priv(dev);
788 lp->hw.status(dev), lp->intmask, lp->next_tx, lp->cur_tx);
790 if (lp->cur_tx != -1 || lp->next_tx == -1)
794 arcnet_dump_packet(dev, lp->next_tx, "go_tx", 0);
796 lp->cur_tx = lp->next_tx;
797 lp->next_tx = -1;
800 lp->hw.command(dev, TXcmd | (lp->cur_tx << 3));
803 lp->lasttrans_dest = lp->lastload_dest;
804 lp->lastload_dest = 0;
805 lp->excnak_pending = 0;
806 lp->intmask |= TXFREEflag | EXCNAKflag;
815 struct arcnet_local *lp = netdev_priv(dev);
816 int status = lp->hw.status(dev);
819 spin_lock_irqsave(&lp->lock, flags);
825 lp->timed_out = 1;
826 lp->hw.command(dev, NOTXcmd | (lp->cur_tx << 3));
831 lp->hw.intmask(dev, 0);
832 lp->intmask |= TXFREEflag | EXCNAKflag;
833 lp->hw.intmask(dev, lp->intmask);
835 spin_unlock_irqrestore(&lp->lock, flags);
837 if (time_after(jiffies, lp->last_timeout + 10 * HZ)) {
839 msg, status, lp->intmask, lp->lasttrans_dest);
840 lp->last_timeout = jiffies;
843 if (lp->cur_tx == -1)
855 struct arcnet_local *lp;
864 lp = netdev_priv(dev);
865 BUG_ON(!lp);
867 spin_lock_irqsave(&lp->lock, flags);
869 if (lp->reset_in_progress)
876 if (lp->hw.status(dev) & RESETflag)
877 lp->hw.command(dev, CFLAGScmd | RESETclear);
878 lp->hw.intmask(dev, 0);
879 spin_unlock_irqrestore(&lp->lock, flags);
884 lp->hw.status(dev), lp->intmask);
888 status = lp->hw.status(dev);
905 lp->reset_in_progress = 1;
908 schedule_work(&lp->reset_work);
922 if (status & lp->intmask & NORXflag) {
923 recbuf = lp->cur_rx;
927 lp->cur_rx = get_arcbuf(dev);
928 if (lp->cur_rx != -1) {
930 lp->cur_rx);
931 lp->hw.command(dev, RXcmd | (lp->cur_rx << 3) | RXbcasts);
940 lp->hw.command(dev, NOTXcmd); /* disable transmit */
941 lp->excnak_pending = 1;
943 lp->hw.command(dev, EXCNAKclear);
944 lp->intmask &= ~(EXCNAKflag);
949 if ((status & lp->intmask & TXFREEflag) || lp->timed_out) {
951 lp->intmask &= ~(TXFREEflag | EXCNAKflag);
955 else if (lp->excnak_pending)
963 if (lp->cur_tx != -1 && !lp->timed_out) {
965 if (lp->lasttrans_dest != 0) {
969 lp->lasttrans_dest);
976 lp->lasttrans_dest);
980 if (lp->outgoing.proto &&
981 lp->outgoing.proto->ack_tx) {
982 lp->outgoing.proto
985 lp->reply_status = ackstatus;
986 tasklet_hi_schedule(&lp->reply_tasklet);
988 if (lp->cur_tx != -1)
989 release_arcbuf(dev, lp->cur_tx);
991 lp->cur_tx = -1;
992 lp->timed_out = 0;
999 if (lp->outgoing.proto &&
1000 lp->outgoing.proto->continue_tx) {
1004 if (lp->outgoing.proto->continue_tx(dev, txbuf)) {
1006 dev->stats.tx_bytes += lp->outgoing.skb->len;
1007 if (!lp->outgoing.proto->ack_tx) {
1008 dev_kfree_skb_irq(lp->outgoing.skb);
1009 lp->outgoing.proto = NULL;
1012 lp->next_tx = txbuf;
1016 if (lp->cur_tx == -1)
1029 if (status & lp->intmask & RECONflag) {
1030 lp->hw.command(dev, CFLAGScmd | CONFIGclear);
1039 mod_timer(&lp->timer, jiffies + msecs_to_jiffies(1000));
1047 if (!lp->first_recon || !lp->last_recon ||
1048 time_after(jiffies, lp->last_recon + HZ * 10)) {
1049 if (lp->network_down)
1051 lp->first_recon = lp->last_recon = jiffies;
1052 lp->num_recons = lp->network_down = 0;
1056 lp->last_recon = jiffies;
1057 lp->num_recons++;
1060 lp->num_recons,
1061 (lp->last_recon - lp->first_recon) / HZ,
1062 lp->network_down);
1070 if (!lp->network_down &&
1071 (lp->last_recon - lp->first_recon) <= HZ * 60 &&
1072 lp->num_recons >= RECON_THRESHOLD) {
1073 lp->network_down = 1;
1075 } else if (!lp->network_down &&
1076 lp->last_recon - lp->first_recon > HZ * 60) {
1080 lp->first_recon = lp->last_recon;
1081 lp->num_recons = 1;
1084 } else if (lp->network_down &&
1085 time_after(jiffies, lp->last_recon + HZ * 10)) {
1086 if (lp->network_down)
1088 lp->first_recon = lp->last_recon = 0;
1089 lp->num_recons = lp->network_down = 0;
1100 lp->hw.status(dev), boguscount);
1103 lp->hw.intmask(dev, 0);
1105 lp->hw.intmask(dev, lp->intmask);
1108 spin_unlock_irqrestore(&lp->lock, flags);
1118 struct arcnet_local *lp = netdev_priv(dev);
1128 lp->hw.copy_from_card(dev, bufnum, 0, &rxdata.pkt, ARC_HDR_SIZE);
1139 lp->hw.copy_from_card(dev, bufnum, ofs, soft, sizeof(rxdata.pkt.soft));
1142 lp->hw.copy_from_card(dev, bufnum, ofs, soft, length);
1155 *oldp = arc_proto_map[lp->default_proto[rxdata.pkt.hard.source]],
1167 lp->default_proto[0] = soft->proto;
1170 lp->default_proto[rxdata.pkt.hard.source] = soft->proto;
1187 struct arcnet_local *lp = netdev_priv(dev);
1191 lp->default_proto[daddr]);
1201 struct arcnet_local *lp = netdev_priv(dev);
1212 lp->hw.copy_to_card(dev, bufnum, 0, &newpkt, ARC_HDR_SIZE);