Lines Matching refs:lp
90 int (*open)(struct iss_net_private *lp);
91 void (*close)(struct iss_net_private *lp);
92 int (*read)(struct iss_net_private *lp, struct sk_buff **skb);
93 int (*write)(struct iss_net_private *lp, struct sk_buff **skb);
95 int (*poll)(struct iss_net_private *lp);
165 static int tuntap_open(struct iss_net_private *lp) in tuntap_open() argument
168 char *dev_name = lp->tp.info.tuntap.dev_name; in tuntap_open()
175 lp->dev->name, fd, errno); in tuntap_open()
186 lp->dev->name, dev_name, err, errno); in tuntap_open()
191 lp->tp.info.tuntap.fd = fd; in tuntap_open()
195 static void tuntap_close(struct iss_net_private *lp) in tuntap_close() argument
197 simc_close(lp->tp.info.tuntap.fd); in tuntap_close()
198 lp->tp.info.tuntap.fd = -1; in tuntap_close()
201 static int tuntap_read(struct iss_net_private *lp, struct sk_buff **skb) in tuntap_read() argument
203 return simc_read(lp->tp.info.tuntap.fd, in tuntap_read()
207 static int tuntap_write(struct iss_net_private *lp, struct sk_buff **skb) in tuntap_write() argument
209 return simc_write(lp->tp.info.tuntap.fd, (*skb)->data, (*skb)->len); in tuntap_write()
217 static int tuntap_poll(struct iss_net_private *lp) in tuntap_poll() argument
219 return simc_poll(lp->tp.info.tuntap.fd); in tuntap_poll()
226 static int tuntap_probe(struct iss_net_private *lp, int index, char *init) in tuntap_probe() argument
228 struct net_device *dev = lp->dev; in tuntap_probe()
256 strlcpy(lp->tp.info.tuntap.dev_name, dev_name, in tuntap_probe()
257 sizeof(lp->tp.info.tuntap.dev_name)); in tuntap_probe()
261 lp->mtu = TRANSPORT_TUNTAP_MTU; in tuntap_probe()
263 lp->tp.info.tuntap.fd = -1; in tuntap_probe()
265 lp->tp.open = tuntap_open; in tuntap_probe()
266 lp->tp.close = tuntap_close; in tuntap_probe()
267 lp->tp.read = tuntap_read; in tuntap_probe()
268 lp->tp.write = tuntap_write; in tuntap_probe()
269 lp->tp.protocol = tuntap_protocol; in tuntap_probe()
270 lp->tp.poll = tuntap_poll; in tuntap_probe()
279 struct iss_net_private *lp = netdev_priv(dev); in iss_net_rx() local
285 if (lp->tp.poll(lp) == 0) in iss_net_rx()
292 lp->stats.rx_dropped++; in iss_net_rx()
302 pkt_len = lp->tp.read(lp, &skb); in iss_net_rx()
307 skb->protocol = lp->tp.protocol(skb); in iss_net_rx()
309 lp->stats.rx_bytes += skb->len; in iss_net_rx()
310 lp->stats.rx_packets++; in iss_net_rx()
326 struct iss_net_private *lp; in iss_net_poll() local
328 lp = list_entry(ele, struct iss_net_private, opened_list); in iss_net_poll()
330 if (!netif_running(lp->dev)) in iss_net_poll()
333 spin_lock(&lp->lock); in iss_net_poll()
335 while ((err = iss_net_rx(lp->dev)) > 0) in iss_net_poll()
338 spin_unlock(&lp->lock); in iss_net_poll()
342 lp->dev->name, err); in iss_net_poll()
343 dev_close(lp->dev); in iss_net_poll()
356 struct iss_net_private *lp = from_timer(lp, t, timer); in iss_net_timer() local
359 spin_lock(&lp->lock); in iss_net_timer()
360 mod_timer(&lp->timer, jiffies + lp->timer_val); in iss_net_timer()
361 spin_unlock(&lp->lock); in iss_net_timer()
367 struct iss_net_private *lp = netdev_priv(dev); in iss_net_open() local
370 spin_lock_bh(&lp->lock); in iss_net_open()
372 err = lp->tp.open(lp); in iss_net_open()
385 spin_unlock_bh(&lp->lock); in iss_net_open()
387 list_add(&lp->opened_list, &opened); in iss_net_open()
389 spin_lock_bh(&lp->lock); in iss_net_open()
391 timer_setup(&lp->timer, iss_net_timer, 0); in iss_net_open()
392 lp->timer_val = ISS_NET_TIMER_VALUE; in iss_net_open()
393 mod_timer(&lp->timer, jiffies + lp->timer_val); in iss_net_open()
396 spin_unlock_bh(&lp->lock); in iss_net_open()
402 struct iss_net_private *lp = netdev_priv(dev); in iss_net_close() local
404 spin_lock_bh(&lp->lock); in iss_net_close()
410 del_timer_sync(&lp->timer); in iss_net_close()
412 lp->tp.close(lp); in iss_net_close()
414 spin_unlock_bh(&lp->lock); in iss_net_close()
420 struct iss_net_private *lp = netdev_priv(dev); in iss_net_start_xmit() local
424 spin_lock_bh(&lp->lock); in iss_net_start_xmit()
426 len = lp->tp.write(lp, &skb); in iss_net_start_xmit()
429 lp->stats.tx_packets++; in iss_net_start_xmit()
430 lp->stats.tx_bytes += skb->len; in iss_net_start_xmit()
439 lp->stats.tx_dropped++; in iss_net_start_xmit()
446 spin_unlock_bh(&lp->lock); in iss_net_start_xmit()
455 struct iss_net_private *lp = netdev_priv(dev); in iss_net_get_stats() local
456 return &lp->stats; in iss_net_get_stats()
469 struct iss_net_private *lp = netdev_priv(dev); in iss_net_set_mac() local
474 spin_lock_bh(&lp->lock); in iss_net_set_mac()
476 spin_unlock_bh(&lp->lock); in iss_net_set_mac()
513 struct iss_net_private *lp; in iss_net_configure() local
516 dev = alloc_etherdev(sizeof(*lp)); in iss_net_configure()
524 lp = netdev_priv(dev); in iss_net_configure()
525 *lp = (struct iss_net_private) { in iss_net_configure()
526 .device_list = LIST_HEAD_INIT(lp->device_list), in iss_net_configure()
527 .opened_list = LIST_HEAD_INIT(lp->opened_list), in iss_net_configure()
532 spin_lock_init(&lp->lock); in iss_net_configure()
545 if (!tuntap_probe(lp, index, init)) { in iss_net_configure()
561 list_add(&lp->device_list, &devices); in iss_net_configure()
564 lp->pdev.id = index; in iss_net_configure()
565 lp->pdev.name = DRIVER_NAME; in iss_net_configure()
566 platform_device_register(&lp->pdev); in iss_net_configure()
567 SET_NETDEV_DEV(dev, &lp->pdev.dev); in iss_net_configure()
570 dev->mtu = lp->mtu; in iss_net_configure()
585 timer_setup(&lp->tl, iss_net_user_timer_expire, 0); in iss_net_configure()