Lines Matching refs:nl
285 struct net_local *nl = netdev_priv(dev); in plip_init_netdev() local
296 nl->port_owner = 0; in plip_init_netdev()
299 nl->trigger = PLIP_TRIGGER_WAIT; in plip_init_netdev()
300 nl->nibble = PLIP_NIBBLE_WAIT; in plip_init_netdev()
303 INIT_WORK(&nl->immediate, plip_bh); in plip_init_netdev()
304 INIT_DELAYED_WORK(&nl->deferred, plip_kick_bh); in plip_init_netdev()
307 INIT_DELAYED_WORK(&nl->timer, plip_timer_bh); in plip_init_netdev()
309 spin_lock_init(&nl->lock); in plip_init_netdev()
318 struct net_local *nl = in plip_kick_bh() local
321 if (nl->is_deferred) in plip_kick_bh()
322 schedule_work(&nl->immediate); in plip_kick_bh()
336 static int plip_bh_timeout_error(struct net_device *dev, struct net_local *nl,
346 typedef int (*plip_func)(struct net_device *dev, struct net_local *nl,
362 struct net_local *nl = container_of(work, struct net_local, immediate); in plip_bh() local
363 struct plip_local *snd = &nl->snd_data; in plip_bh()
364 struct plip_local *rcv = &nl->rcv_data; in plip_bh()
368 nl->is_deferred = 0; in plip_bh()
369 f = connection_state_table[nl->connection]; in plip_bh()
370 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK && in plip_bh()
371 (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) { in plip_bh()
372 nl->is_deferred = 1; in plip_bh()
373 schedule_delayed_work(&nl->deferred, 1); in plip_bh()
380 struct net_local *nl = in plip_timer_bh() local
383 if (!(atomic_read (&nl->kill_timer))) { in plip_timer_bh()
384 plip_interrupt (nl->dev); in plip_timer_bh()
386 schedule_delayed_work(&nl->timer, 1); in plip_timer_bh()
389 complete(&nl->killed_timer_cmp); in plip_timer_bh()
394 plip_bh_timeout_error(struct net_device *dev, struct net_local *nl, in plip_bh_timeout_error() argument
409 spin_lock_irq(&nl->lock); in plip_bh_timeout_error()
410 if (nl->connection == PLIP_CN_SEND) { in plip_bh_timeout_error()
413 nl->timeout_count++; in plip_bh_timeout_error()
414 if ((error == HS_TIMEOUT && nl->timeout_count <= 10) || in plip_bh_timeout_error()
415 nl->timeout_count <= 3) { in plip_bh_timeout_error()
416 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
427 } else if (nl->connection == PLIP_CN_RECEIVE) { in plip_bh_timeout_error()
430 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
434 if (++nl->timeout_count <= 3) { in plip_bh_timeout_error()
435 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
455 spin_unlock_irq(&nl->lock); in plip_bh_timeout_error()
462 nl->connection = PLIP_CN_ERROR; in plip_bh_timeout_error()
469 plip_none(struct net_device *dev, struct net_local *nl, in plip_none() argument
581 plip_receive_packet(struct net_device *dev, struct net_local *nl, in plip_receive_packet() argument
584 unsigned short nibble_timeout = nl->nibble; in plip_receive_packet()
601 if (plip_receive(nl->trigger, dev, in plip_receive_packet()
605 nl->is_deferred = 1; in plip_receive_packet()
606 nl->connection = PLIP_CN_SEND; in plip_receive_packet()
607 schedule_delayed_work(&nl->deferred, 1); in plip_receive_packet()
681 spin_lock_irq(&nl->lock); in plip_receive_packet()
683 nl->connection = PLIP_CN_SEND; in plip_receive_packet()
684 spin_unlock_irq(&nl->lock); in plip_receive_packet()
685 schedule_work(&nl->immediate); in plip_receive_packet()
690 nl->connection = PLIP_CN_NONE; in plip_receive_packet()
691 spin_unlock_irq(&nl->lock); in plip_receive_packet()
749 plip_send_packet(struct net_device *dev, struct net_local *nl, in plip_send_packet() argument
752 unsigned short nibble_timeout = nl->nibble; in plip_send_packet()
771 cx = nl->trigger; in plip_send_packet()
774 spin_lock_irq(&nl->lock); in plip_send_packet()
775 if (nl->connection == PLIP_CN_RECEIVE) { in plip_send_packet()
776 spin_unlock_irq(&nl->lock); in plip_send_packet()
783 spin_unlock_irq(&nl->lock); in plip_send_packet()
786 if (nl->connection == PLIP_CN_RECEIVE) { in plip_send_packet()
802 nl->timeout_count = 0; in plip_send_packet()
805 spin_unlock_irq(&nl->lock); in plip_send_packet()
857 nl->connection = PLIP_CN_CLOSING; in plip_send_packet()
858 nl->is_deferred = 1; in plip_send_packet()
859 schedule_delayed_work(&nl->deferred, 1); in plip_send_packet()
868 plip_connection_close(struct net_device *dev, struct net_local *nl, in plip_connection_close() argument
871 spin_lock_irq(&nl->lock); in plip_connection_close()
872 if (nl->connection == PLIP_CN_CLOSING) { in plip_connection_close()
873 nl->connection = PLIP_CN_NONE; in plip_connection_close()
876 spin_unlock_irq(&nl->lock); in plip_connection_close()
877 if (nl->should_relinquish) { in plip_connection_close()
878 nl->should_relinquish = nl->port_owner = 0; in plip_connection_close()
879 parport_release(nl->pardev); in plip_connection_close()
886 plip_error(struct net_device *dev, struct net_local *nl, in plip_error() argument
895 nl->connection = PLIP_CN_NONE; in plip_error()
896 nl->should_relinquish = 0; in plip_error()
902 nl->is_deferred = 1; in plip_error()
903 schedule_delayed_work(&nl->deferred, 1); in plip_error()
914 struct net_local *nl; in plip_interrupt() local
919 nl = netdev_priv(dev); in plip_interrupt()
920 rcv = &nl->rcv_data; in plip_interrupt()
922 spin_lock_irqsave (&nl->lock, flags); in plip_interrupt()
928 spin_unlock_irqrestore (&nl->lock, flags); in plip_interrupt()
935 switch (nl->connection) { in plip_interrupt()
942 nl->connection = PLIP_CN_RECEIVE; in plip_interrupt()
943 nl->timeout_count = 0; in plip_interrupt()
944 schedule_work(&nl->immediate); in plip_interrupt()
958 spin_unlock_irqrestore(&nl->lock, flags); in plip_interrupt()
964 struct net_local *nl = netdev_priv(dev); in plip_tx_packet() local
965 struct plip_local *snd = &nl->snd_data; in plip_tx_packet()
971 if (!nl->port_owner) { in plip_tx_packet()
972 if (parport_claim(nl->pardev)) in plip_tx_packet()
974 nl->port_owner = 1; in plip_tx_packet()
988 spin_lock_irq(&nl->lock); in plip_tx_packet()
992 if (nl->connection == PLIP_CN_NONE) { in plip_tx_packet()
993 nl->connection = PLIP_CN_SEND; in plip_tx_packet()
994 nl->timeout_count = 0; in plip_tx_packet()
996 schedule_work(&nl->immediate); in plip_tx_packet()
997 spin_unlock_irq(&nl->lock); in plip_tx_packet()
1061 struct net_local *nl = netdev_priv(dev); in plip_open() local
1065 if (!nl->port_owner) { in plip_open()
1066 if (parport_claim(nl->pardev)) return -EAGAIN; in plip_open()
1067 nl->port_owner = 1; in plip_open()
1070 nl->should_relinquish = 0; in plip_open()
1079 atomic_set (&nl->kill_timer, 0); in plip_open()
1080 schedule_delayed_work(&nl->timer, 1); in plip_open()
1084 nl->rcv_data.state = nl->snd_data.state = PLIP_PK_DONE; in plip_open()
1085 nl->rcv_data.skb = nl->snd_data.skb = NULL; in plip_open()
1086 nl->connection = PLIP_CN_NONE; in plip_open()
1087 nl->is_deferred = 0; in plip_open()
1121 struct net_local *nl = netdev_priv(dev); in plip_close() local
1122 struct plip_local *snd = &nl->snd_data; in plip_close()
1123 struct plip_local *rcv = &nl->rcv_data; in plip_close()
1131 init_completion(&nl->killed_timer_cmp); in plip_close()
1132 atomic_set (&nl->kill_timer, 1); in plip_close()
1133 wait_for_completion(&nl->killed_timer_cmp); in plip_close()
1139 nl->is_deferred = 0; in plip_close()
1140 nl->connection = PLIP_CN_NONE; in plip_close()
1141 if (nl->port_owner) { in plip_close()
1142 parport_release(nl->pardev); in plip_close()
1143 nl->port_owner = 0; in plip_close()
1168 struct net_local *nl = netdev_priv(dev); in plip_preempt() local
1171 if (nl->connection != PLIP_CN_NONE) { in plip_preempt()
1172 nl->should_relinquish = 1; in plip_preempt()
1176 nl->port_owner = 0; /* Remember that we released the bus */ in plip_preempt()
1184 struct net_local *nl = netdev_priv(dev); in plip_wakeup() local
1186 if (nl->port_owner) { in plip_wakeup()
1189 if (!parport_claim(nl->pardev)) in plip_wakeup()
1200 if (!parport_claim(nl->pardev)) { in plip_wakeup()
1201 nl->port_owner = 1; in plip_wakeup()
1210 struct net_local *nl = netdev_priv(dev); in plip_ioctl() local
1218 pc->trigger = nl->trigger; in plip_ioctl()
1219 pc->nibble = nl->nibble; in plip_ioctl()
1224 nl->trigger = pc->trigger; in plip_ioctl()
1225 nl->nibble = pc->nibble; in plip_ioctl()
1258 struct net_local *nl; in plip_attach() local
1283 nl = netdev_priv(dev); in plip_attach()
1284 nl->dev = dev; in plip_attach()
1292 nl->pardev = parport_register_dev_model(port, dev->name, in plip_attach()
1295 if (!nl->pardev) { in plip_attach()
1321 parport_unregister_device(nl->pardev); in plip_attach()
1359 struct net_local *nl = netdev_priv(dev); in plip_cleanup_module() local
1361 if (nl->port_owner) in plip_cleanup_module()
1362 parport_release(nl->pardev); in plip_cleanup_module()
1363 parport_unregister_device(nl->pardev); in plip_cleanup_module()