Lines Matching refs:lp

88 		int (*open)(struct iss_net_private *lp);
89 void (*close)(struct iss_net_private *lp);
90 int (*read)(struct iss_net_private *lp, struct sk_buff **skb);
91 int (*write)(struct iss_net_private *lp, struct sk_buff **skb);
93 int (*poll)(struct iss_net_private *lp);
163 static int tuntap_open(struct iss_net_private *lp) in tuntap_open() argument
166 char *dev_name = lp->tp.info.tuntap.dev_name; in tuntap_open()
173 lp->dev->name, fd, errno); in tuntap_open()
184 lp->dev->name, dev_name, err, errno); in tuntap_open()
189 lp->tp.info.tuntap.fd = fd; in tuntap_open()
193 static void tuntap_close(struct iss_net_private *lp) in tuntap_close() argument
195 simc_close(lp->tp.info.tuntap.fd); in tuntap_close()
196 lp->tp.info.tuntap.fd = -1; in tuntap_close()
199 static int tuntap_read(struct iss_net_private *lp, struct sk_buff **skb) in tuntap_read() argument
201 return simc_read(lp->tp.info.tuntap.fd, in tuntap_read()
205 static int tuntap_write(struct iss_net_private *lp, struct sk_buff **skb) in tuntap_write() argument
207 return simc_write(lp->tp.info.tuntap.fd, (*skb)->data, (*skb)->len); in tuntap_write()
215 static int tuntap_poll(struct iss_net_private *lp) in tuntap_poll() argument
217 return simc_poll(lp->tp.info.tuntap.fd); in tuntap_poll()
224 static int tuntap_probe(struct iss_net_private *lp, int index, char *init) in tuntap_probe() argument
226 struct net_device *dev = lp->dev; in tuntap_probe()
254 strlcpy(lp->tp.info.tuntap.dev_name, dev_name, in tuntap_probe()
255 sizeof(lp->tp.info.tuntap.dev_name)); in tuntap_probe()
259 lp->mtu = TRANSPORT_TUNTAP_MTU; in tuntap_probe()
261 lp->tp.info.tuntap.fd = -1; in tuntap_probe()
263 lp->tp.open = tuntap_open; in tuntap_probe()
264 lp->tp.close = tuntap_close; in tuntap_probe()
265 lp->tp.read = tuntap_read; in tuntap_probe()
266 lp->tp.write = tuntap_write; in tuntap_probe()
267 lp->tp.protocol = tuntap_protocol; in tuntap_probe()
268 lp->tp.poll = tuntap_poll; in tuntap_probe()
277 struct iss_net_private *lp = netdev_priv(dev); in iss_net_rx() local
283 if (lp->tp.poll(lp) == 0) in iss_net_rx()
290 lp->stats.rx_dropped++; in iss_net_rx()
300 pkt_len = lp->tp.read(lp, &skb); in iss_net_rx()
305 skb->protocol = lp->tp.protocol(skb); in iss_net_rx()
307 lp->stats.rx_bytes += skb->len; in iss_net_rx()
308 lp->stats.rx_packets++; in iss_net_rx()
324 struct iss_net_private *lp; in iss_net_poll() local
326 lp = list_entry(ele, struct iss_net_private, opened_list); in iss_net_poll()
328 if (!netif_running(lp->dev)) in iss_net_poll()
331 spin_lock(&lp->lock); in iss_net_poll()
333 while ((err = iss_net_rx(lp->dev)) > 0) in iss_net_poll()
336 spin_unlock(&lp->lock); in iss_net_poll()
340 lp->dev->name, err); in iss_net_poll()
341 dev_close(lp->dev); in iss_net_poll()
354 struct iss_net_private *lp = (struct iss_net_private *)priv; in iss_net_timer() local
357 spin_lock(&lp->lock); in iss_net_timer()
358 mod_timer(&lp->timer, jiffies + lp->timer_val); in iss_net_timer()
359 spin_unlock(&lp->lock); in iss_net_timer()
365 struct iss_net_private *lp = netdev_priv(dev); in iss_net_open() local
368 spin_lock_bh(&lp->lock); in iss_net_open()
370 err = lp->tp.open(lp); in iss_net_open()
383 spin_unlock_bh(&lp->lock); in iss_net_open()
385 list_add(&lp->opened_list, &opened); in iss_net_open()
387 spin_lock_bh(&lp->lock); in iss_net_open()
389 init_timer(&lp->timer); in iss_net_open()
390 lp->timer_val = ISS_NET_TIMER_VALUE; in iss_net_open()
391 lp->timer.data = (unsigned long) lp; in iss_net_open()
392 lp->timer.function = iss_net_timer; 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 init_timer(&lp->tl); in iss_net_configure()
586 lp->tl.function = iss_net_user_timer_expire; in iss_net_configure()