Lines Matching defs:lp

58 	int (*open)(struct iss_net_private *lp);
59 void (*close)(struct iss_net_private *lp);
60 int (*read)(struct iss_net_private *lp, struct sk_buff **skb);
61 int (*write)(struct iss_net_private *lp, struct sk_buff **skb);
63 int (*poll)(struct iss_net_private *lp);
157 static int tuntap_open(struct iss_net_private *lp)
160 char *dev_name = lp->tp.info.tuntap.dev_name;
167 lp->dev->name, fd, errno);
178 lp->dev->name, dev_name, err, errno);
183 lp->tp.info.tuntap.fd = fd;
187 static void tuntap_close(struct iss_net_private *lp)
189 simc_close(lp->tp.info.tuntap.fd);
190 lp->tp.info.tuntap.fd = -1;
193 static int tuntap_read(struct iss_net_private *lp, struct sk_buff **skb)
195 return simc_read(lp->tp.info.tuntap.fd,
199 static int tuntap_write(struct iss_net_private *lp, struct sk_buff **skb)
201 return simc_write(lp->tp.info.tuntap.fd, (*skb)->data, (*skb)->len);
209 static int tuntap_poll(struct iss_net_private *lp)
211 return simc_poll(lp->tp.info.tuntap.fd);
227 static int tuntap_probe(struct iss_net_private *lp, int index, char *init)
229 struct net_device *dev = lp->dev;
257 strscpy(lp->tp.info.tuntap.dev_name, dev_name,
258 sizeof(lp->tp.info.tuntap.dev_name));
262 lp->mtu = TRANSPORT_TUNTAP_MTU;
264 lp->tp.info.tuntap.fd = -1;
265 lp->tp.net_ops = &tuntap_ops;
274 struct iss_net_private *lp = netdev_priv(dev);
280 if (lp->tp.net_ops->poll(lp) == 0)
287 spin_lock_bh(&lp->lock);
288 lp->stats.rx_dropped++;
289 spin_unlock_bh(&lp->lock);
299 pkt_len = lp->tp.net_ops->read(lp, &skb);
304 skb->protocol = lp->tp.net_ops->protocol(skb);
306 spin_lock_bh(&lp->lock);
307 lp->stats.rx_bytes += skb->len;
308 lp->stats.rx_packets++;
309 spin_unlock_bh(&lp->lock);
317 static int iss_net_poll(struct iss_net_private *lp)
321 if (!netif_running(lp->dev))
324 while ((err = iss_net_rx(lp->dev)) > 0)
329 lp->dev->name, err);
330 dev_close(lp->dev);
332 /* FIXME reactivate_fd(lp->fd, ISS_ETH_IRQ); */
341 struct iss_net_private *lp = timer_container_of(lp, t, timer);
343 iss_net_poll(lp);
344 mod_timer(&lp->timer, jiffies + lp->timer_val);
350 struct iss_net_private *lp = netdev_priv(dev);
353 err = lp->tp.net_ops->open(lp);
366 timer_setup(&lp->timer, iss_net_timer, 0);
367 lp->timer_val = ISS_NET_TIMER_VALUE;
368 mod_timer(&lp->timer, jiffies + lp->timer_val);
375 struct iss_net_private *lp = netdev_priv(dev);
378 timer_delete_sync(&lp->timer);
379 lp->tp.net_ops->close(lp);
386 struct iss_net_private *lp = netdev_priv(dev);
391 len = lp->tp.net_ops->write(lp, &skb);
394 spin_lock_bh(&lp->lock);
395 lp->stats.tx_packets++;
396 lp->stats.tx_bytes += skb->len;
397 spin_unlock_bh(&lp->lock);
406 spin_lock_bh(&lp->lock);
407 lp->stats.tx_dropped++;
408 spin_unlock_bh(&lp->lock);
424 struct iss_net_private *lp = netdev_priv(dev);
426 spin_lock_bh(&lp->lock);
427 *stats = lp->stats;
428 spin_unlock_bh(&lp->lock);
472 struct iss_net_private *lp =
475 free_netdev(lp->dev);
481 struct iss_net_private *lp;
483 dev = alloc_etherdev(sizeof(*lp));
491 lp = netdev_priv(dev);
492 *lp = (struct iss_net_private) {
497 spin_lock_init(&lp->lock);
507 * Note: more protocols can be added by adding '&& !X_init(lp, eth)'.
510 if (!tuntap_probe(lp, index, init)) {
526 lp->pdev.id = index;
527 lp->pdev.name = DRIVER_NAME;
528 lp->pdev.dev.release = iss_net_pdev_release;
529 if (platform_device_register(&lp->pdev))
531 SET_NETDEV_DEV(dev, &lp->pdev.dev);
534 dev->mtu = lp->mtu;
542 platform_device_unregister(&lp->pdev);
548 timer_setup(&lp->tl, iss_net_user_timer_expire, 0);