Lines Matching refs:nl
287 struct net_local *nl = netdev_priv(dev); in plip_init_netdev() local
298 nl->port_owner = 0; in plip_init_netdev()
301 nl->trigger = PLIP_TRIGGER_WAIT; in plip_init_netdev()
302 nl->nibble = PLIP_NIBBLE_WAIT; in plip_init_netdev()
305 INIT_WORK(&nl->immediate, plip_bh); in plip_init_netdev()
306 INIT_DELAYED_WORK(&nl->deferred, plip_kick_bh); in plip_init_netdev()
309 INIT_DELAYED_WORK(&nl->timer, plip_timer_bh); in plip_init_netdev()
311 spin_lock_init(&nl->lock); in plip_init_netdev()
320 struct net_local *nl = in plip_kick_bh() local
323 if (nl->is_deferred) in plip_kick_bh()
324 schedule_work(&nl->immediate); in plip_kick_bh()
338 static int plip_bh_timeout_error(struct net_device *dev, struct net_local *nl,
348 typedef int (*plip_func)(struct net_device *dev, struct net_local *nl,
364 struct net_local *nl = container_of(work, struct net_local, immediate); in plip_bh() local
365 struct plip_local *snd = &nl->snd_data; in plip_bh()
366 struct plip_local *rcv = &nl->rcv_data; in plip_bh()
370 nl->is_deferred = 0; in plip_bh()
371 f = connection_state_table[nl->connection]; in plip_bh()
372 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK && in plip_bh()
373 (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) { in plip_bh()
374 nl->is_deferred = 1; in plip_bh()
375 schedule_delayed_work(&nl->deferred, 1); in plip_bh()
382 struct net_local *nl = in plip_timer_bh() local
385 if (!(atomic_read (&nl->kill_timer))) { in plip_timer_bh()
386 plip_interrupt (nl->dev); in plip_timer_bh()
388 schedule_delayed_work(&nl->timer, 1); in plip_timer_bh()
391 complete(&nl->killed_timer_cmp); in plip_timer_bh()
396 plip_bh_timeout_error(struct net_device *dev, struct net_local *nl, in plip_bh_timeout_error() argument
411 spin_lock_irq(&nl->lock); in plip_bh_timeout_error()
412 if (nl->connection == PLIP_CN_SEND) { in plip_bh_timeout_error()
415 nl->timeout_count++; in plip_bh_timeout_error()
416 if ((error == HS_TIMEOUT && nl->timeout_count <= 10) || in plip_bh_timeout_error()
417 nl->timeout_count <= 3) { in plip_bh_timeout_error()
418 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
429 } else if (nl->connection == PLIP_CN_RECEIVE) { in plip_bh_timeout_error()
432 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
436 if (++nl->timeout_count <= 3) { in plip_bh_timeout_error()
437 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
457 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
464 nl->connection = PLIP_CN_ERROR; in plip_bh_timeout_error()
471 plip_none(struct net_device *dev, struct net_local *nl, in plip_none() argument
584 plip_receive_packet(struct net_device *dev, struct net_local *nl, in plip_receive_packet() argument
587 unsigned short nibble_timeout = nl->nibble; in plip_receive_packet()
604 if (plip_receive(nl->trigger, dev, in plip_receive_packet()
608 nl->is_deferred = 1; in plip_receive_packet()
609 nl->connection = PLIP_CN_SEND; in plip_receive_packet()
610 schedule_delayed_work(&nl->deferred, 1); in plip_receive_packet()
684 spin_lock_irq(&nl->lock); in plip_receive_packet()
686 nl->connection = PLIP_CN_SEND; in plip_receive_packet()
687 spin_unlock_irq(&nl->lock); in plip_receive_packet()
688 schedule_work(&nl->immediate); in plip_receive_packet()
693 nl->connection = PLIP_CN_NONE; in plip_receive_packet()
694 spin_unlock_irq(&nl->lock); in plip_receive_packet()
752 plip_send_packet(struct net_device *dev, struct net_local *nl, in plip_send_packet() argument
755 unsigned short nibble_timeout = nl->nibble; in plip_send_packet()
774 cx = nl->trigger; in plip_send_packet()
777 spin_lock_irq(&nl->lock); in plip_send_packet()
778 if (nl->connection == PLIP_CN_RECEIVE) { in plip_send_packet()
779 spin_unlock_irq(&nl->lock); in plip_send_packet()
786 spin_unlock_irq(&nl->lock); in plip_send_packet()
789 if (nl->connection == PLIP_CN_RECEIVE) { in plip_send_packet()
805 nl->timeout_count = 0; in plip_send_packet()
808 spin_unlock_irq(&nl->lock); in plip_send_packet()
861 nl->connection = PLIP_CN_CLOSING; in plip_send_packet()
862 nl->is_deferred = 1; in plip_send_packet()
863 schedule_delayed_work(&nl->deferred, 1); in plip_send_packet()
872 plip_connection_close(struct net_device *dev, struct net_local *nl, in plip_connection_close() argument
875 spin_lock_irq(&nl->lock); in plip_connection_close()
876 if (nl->connection == PLIP_CN_CLOSING) { in plip_connection_close()
877 nl->connection = PLIP_CN_NONE; in plip_connection_close()
880 spin_unlock_irq(&nl->lock); in plip_connection_close()
881 if (nl->should_relinquish) { in plip_connection_close()
882 nl->should_relinquish = nl->port_owner = 0; in plip_connection_close()
883 parport_release(nl->pardev); in plip_connection_close()
890 plip_error(struct net_device *dev, struct net_local *nl, in plip_error() argument
899 nl->connection = PLIP_CN_NONE; in plip_error()
900 nl->should_relinquish = 0; in plip_error()
906 nl->is_deferred = 1; in plip_error()
907 schedule_delayed_work(&nl->deferred, 1); in plip_error()
918 struct net_local *nl; in plip_interrupt() local
923 nl = netdev_priv(dev); in plip_interrupt()
924 rcv = &nl->rcv_data; in plip_interrupt()
926 spin_lock_irqsave (&nl->lock, flags); in plip_interrupt()
932 spin_unlock_irqrestore (&nl->lock, flags); in plip_interrupt()
939 switch (nl->connection) { in plip_interrupt()
946 nl->connection = PLIP_CN_RECEIVE; in plip_interrupt()
947 nl->timeout_count = 0; in plip_interrupt()
948 schedule_work(&nl->immediate); in plip_interrupt()
962 spin_unlock_irqrestore(&nl->lock, flags); in plip_interrupt()
968 struct net_local *nl = netdev_priv(dev); in plip_tx_packet() local
969 struct plip_local *snd = &nl->snd_data; in plip_tx_packet()
975 if (!nl->port_owner) { in plip_tx_packet()
976 if (parport_claim(nl->pardev)) in plip_tx_packet()
978 nl->port_owner = 1; in plip_tx_packet()
992 spin_lock_irq(&nl->lock); in plip_tx_packet()
996 if (nl->connection == PLIP_CN_NONE) { in plip_tx_packet()
997 nl->connection = PLIP_CN_SEND; in plip_tx_packet()
998 nl->timeout_count = 0; in plip_tx_packet()
1000 schedule_work(&nl->immediate); in plip_tx_packet()
1001 spin_unlock_irq(&nl->lock); in plip_tx_packet()
1065 struct net_local *nl = netdev_priv(dev); in plip_open() local
1069 if (!nl->port_owner) { in plip_open()
1070 if (parport_claim(nl->pardev)) return -EAGAIN; in plip_open()
1071 nl->port_owner = 1; in plip_open()
1074 nl->should_relinquish = 0; in plip_open()
1083 atomic_set (&nl->kill_timer, 0); in plip_open()
1084 schedule_delayed_work(&nl->timer, 1); in plip_open()
1088 nl->rcv_data.state = nl->snd_data.state = PLIP_PK_DONE; in plip_open()
1089 nl->rcv_data.skb = nl->snd_data.skb = NULL; in plip_open()
1090 nl->connection = PLIP_CN_NONE; in plip_open()
1091 nl->is_deferred = 0; in plip_open()
1125 struct net_local *nl = netdev_priv(dev); in plip_close() local
1126 struct plip_local *snd = &nl->snd_data; in plip_close()
1127 struct plip_local *rcv = &nl->rcv_data; in plip_close()
1135 init_completion(&nl->killed_timer_cmp); in plip_close()
1136 atomic_set (&nl->kill_timer, 1); in plip_close()
1137 wait_for_completion(&nl->killed_timer_cmp); in plip_close()
1143 nl->is_deferred = 0; in plip_close()
1144 nl->connection = PLIP_CN_NONE; in plip_close()
1145 if (nl->port_owner) { in plip_close()
1146 parport_release(nl->pardev); in plip_close()
1147 nl->port_owner = 0; in plip_close()
1172 struct net_local *nl = netdev_priv(dev); in plip_preempt() local
1175 if (nl->connection != PLIP_CN_NONE) { in plip_preempt()
1176 nl->should_relinquish = 1; in plip_preempt()
1180 nl->port_owner = 0; /* Remember that we released the bus */ in plip_preempt()
1188 struct net_local *nl = netdev_priv(dev); in plip_wakeup() local
1190 if (nl->port_owner) { in plip_wakeup()
1193 if (!parport_claim(nl->pardev)) in plip_wakeup()
1204 if (!parport_claim(nl->pardev)) { in plip_wakeup()
1205 nl->port_owner = 1; in plip_wakeup()
1215 struct net_local *nl = netdev_priv(dev); in plip_siocdevprivate() local
1226 pc->trigger = nl->trigger; in plip_siocdevprivate()
1227 pc->nibble = nl->nibble; in plip_siocdevprivate()
1232 nl->trigger = pc->trigger; in plip_siocdevprivate()
1233 nl->nibble = pc->nibble; in plip_siocdevprivate()
1266 struct net_local *nl; in plip_attach() local
1291 nl = netdev_priv(dev); in plip_attach()
1292 nl->dev = dev; in plip_attach()
1300 nl->pardev = parport_register_dev_model(port, dev->name, in plip_attach()
1303 if (!nl->pardev) { in plip_attach()
1329 parport_unregister_device(nl->pardev); in plip_attach()
1367 struct net_local *nl = netdev_priv(dev); in plip_cleanup_module() local
1369 if (nl->port_owner) in plip_cleanup_module()
1370 parport_release(nl->pardev); in plip_cleanup_module()
1371 parport_unregister_device(nl->pardev); in plip_cleanup_module()