Lines Matching refs:nl

289 	struct net_local *nl = netdev_priv(dev);  in plip_init_netdev()  local
300 nl->port_owner = 0; in plip_init_netdev()
303 nl->trigger = PLIP_TRIGGER_WAIT; in plip_init_netdev()
304 nl->nibble = PLIP_NIBBLE_WAIT; in plip_init_netdev()
307 INIT_WORK(&nl->immediate, plip_bh); in plip_init_netdev()
308 INIT_DELAYED_WORK(&nl->deferred, plip_kick_bh); in plip_init_netdev()
311 INIT_DELAYED_WORK(&nl->timer, plip_timer_bh); in plip_init_netdev()
313 spin_lock_init(&nl->lock); in plip_init_netdev()
322 struct net_local *nl = in plip_kick_bh() local
325 if (nl->is_deferred) in plip_kick_bh()
326 schedule_work(&nl->immediate); in plip_kick_bh()
340 static int plip_bh_timeout_error(struct net_device *dev, struct net_local *nl,
350 typedef int (*plip_func)(struct net_device *dev, struct net_local *nl,
366 struct net_local *nl = container_of(work, struct net_local, immediate); in plip_bh() local
367 struct plip_local *snd = &nl->snd_data; in plip_bh()
368 struct plip_local *rcv = &nl->rcv_data; in plip_bh()
372 nl->is_deferred = 0; in plip_bh()
373 f = connection_state_table[nl->connection]; in plip_bh()
374 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK && in plip_bh()
375 (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) { in plip_bh()
376 nl->is_deferred = 1; in plip_bh()
377 schedule_delayed_work(&nl->deferred, 1); in plip_bh()
384 struct net_local *nl = in plip_timer_bh() local
387 if (!(atomic_read (&nl->kill_timer))) { in plip_timer_bh()
388 plip_interrupt (nl->dev); in plip_timer_bh()
390 schedule_delayed_work(&nl->timer, 1); in plip_timer_bh()
393 complete(&nl->killed_timer_cmp); in plip_timer_bh()
398 plip_bh_timeout_error(struct net_device *dev, struct net_local *nl, in plip_bh_timeout_error() argument
413 spin_lock_irq(&nl->lock); in plip_bh_timeout_error()
414 if (nl->connection == PLIP_CN_SEND) { in plip_bh_timeout_error()
417 nl->timeout_count++; in plip_bh_timeout_error()
418 if ((error == HS_TIMEOUT && nl->timeout_count <= 10) || in plip_bh_timeout_error()
419 nl->timeout_count <= 3) { in plip_bh_timeout_error()
420 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
431 } else if (nl->connection == PLIP_CN_RECEIVE) { in plip_bh_timeout_error()
434 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
438 if (++nl->timeout_count <= 3) { in plip_bh_timeout_error()
439 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
459 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
466 nl->connection = PLIP_CN_ERROR; in plip_bh_timeout_error()
473 plip_none(struct net_device *dev, struct net_local *nl, in plip_none() argument
585 plip_receive_packet(struct net_device *dev, struct net_local *nl, in plip_receive_packet() argument
588 unsigned short nibble_timeout = nl->nibble; in plip_receive_packet()
605 if (plip_receive(nl->trigger, dev, in plip_receive_packet()
609 nl->is_deferred = 1; in plip_receive_packet()
610 nl->connection = PLIP_CN_SEND; in plip_receive_packet()
611 schedule_delayed_work(&nl->deferred, 1); in plip_receive_packet()
685 spin_lock_irq(&nl->lock); in plip_receive_packet()
687 nl->connection = PLIP_CN_SEND; in plip_receive_packet()
688 spin_unlock_irq(&nl->lock); in plip_receive_packet()
689 schedule_work(&nl->immediate); in plip_receive_packet()
694 nl->connection = PLIP_CN_NONE; in plip_receive_packet()
695 spin_unlock_irq(&nl->lock); in plip_receive_packet()
753 plip_send_packet(struct net_device *dev, struct net_local *nl, in plip_send_packet() argument
756 unsigned short nibble_timeout = nl->nibble; in plip_send_packet()
775 cx = nl->trigger; in plip_send_packet()
778 spin_lock_irq(&nl->lock); in plip_send_packet()
779 if (nl->connection == PLIP_CN_RECEIVE) { in plip_send_packet()
780 spin_unlock_irq(&nl->lock); in plip_send_packet()
787 spin_unlock_irq(&nl->lock); in plip_send_packet()
790 if (nl->connection == PLIP_CN_RECEIVE) { in plip_send_packet()
806 nl->timeout_count = 0; in plip_send_packet()
809 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()
1214 struct net_local *nl = netdev_priv(dev); in plip_ioctl() local
1222 pc->trigger = nl->trigger; in plip_ioctl()
1223 pc->nibble = nl->nibble; in plip_ioctl()
1228 nl->trigger = pc->trigger; in plip_ioctl()
1229 nl->nibble = pc->nibble; in plip_ioctl()
1262 struct net_local *nl; in plip_attach() local
1287 nl = netdev_priv(dev); in plip_attach()
1288 nl->dev = dev; in plip_attach()
1296 nl->pardev = parport_register_dev_model(port, dev->name, in plip_attach()
1299 if (!nl->pardev) { in plip_attach()
1325 parport_unregister_device(nl->pardev); in plip_attach()
1363 struct net_local *nl = netdev_priv(dev); in plip_cleanup_module() local
1365 if (nl->port_owner) in plip_cleanup_module()
1366 parport_release(nl->pardev); in plip_cleanup_module()
1367 parport_unregister_device(nl->pardev); in plip_cleanup_module()