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);
159 static int tuntap_open(struct iss_net_private *lp) in tuntap_open() argument
162 char *dev_name = lp->tp.info.tuntap.dev_name; in tuntap_open()
169 lp->dev->name, fd, errno); in tuntap_open()
180 lp->dev->name, dev_name, err, errno); in tuntap_open()
185 lp->tp.info.tuntap.fd = fd; in tuntap_open()
189 static void tuntap_close(struct iss_net_private *lp) in tuntap_close() argument
191 simc_close(lp->tp.info.tuntap.fd); in tuntap_close()
192 lp->tp.info.tuntap.fd = -1; in tuntap_close()
195 static int tuntap_read(struct iss_net_private *lp, struct sk_buff **skb) in tuntap_read() argument
197 return simc_read(lp->tp.info.tuntap.fd, in tuntap_read()
201 static int tuntap_write(struct iss_net_private *lp, struct sk_buff **skb) in tuntap_write() argument
203 return simc_write(lp->tp.info.tuntap.fd, (*skb)->data, (*skb)->len); in tuntap_write()
211 static int tuntap_poll(struct iss_net_private *lp) in tuntap_poll() argument
213 return simc_poll(lp->tp.info.tuntap.fd); in tuntap_poll()
220 static int tuntap_probe(struct iss_net_private *lp, int index, char *init) in tuntap_probe() argument
222 struct net_device *dev = lp->dev; in tuntap_probe()
250 strlcpy(lp->tp.info.tuntap.dev_name, dev_name, in tuntap_probe()
251 sizeof(lp->tp.info.tuntap.dev_name)); in tuntap_probe()
255 lp->mtu = TRANSPORT_TUNTAP_MTU; in tuntap_probe()
257 lp->tp.info.tuntap.fd = -1; in tuntap_probe()
259 lp->tp.open = tuntap_open; in tuntap_probe()
260 lp->tp.close = tuntap_close; in tuntap_probe()
261 lp->tp.read = tuntap_read; in tuntap_probe()
262 lp->tp.write = tuntap_write; in tuntap_probe()
263 lp->tp.protocol = tuntap_protocol; in tuntap_probe()
264 lp->tp.poll = tuntap_poll; in tuntap_probe()
273 struct iss_net_private *lp = netdev_priv(dev); in iss_net_rx() local
279 if (lp->tp.poll(lp) == 0) in iss_net_rx()
286 lp->stats.rx_dropped++; in iss_net_rx()
296 pkt_len = lp->tp.read(lp, &skb); in iss_net_rx()
301 skb->protocol = lp->tp.protocol(skb); in iss_net_rx()
303 lp->stats.rx_bytes += skb->len; in iss_net_rx()
304 lp->stats.rx_packets++; in iss_net_rx()
320 struct iss_net_private *lp; in iss_net_poll() local
322 lp = list_entry(ele, struct iss_net_private, opened_list); in iss_net_poll()
324 if (!netif_running(lp->dev)) in iss_net_poll()
327 spin_lock(&lp->lock); in iss_net_poll()
329 while ((err = iss_net_rx(lp->dev)) > 0) in iss_net_poll()
332 spin_unlock(&lp->lock); in iss_net_poll()
336 lp->dev->name, err); in iss_net_poll()
337 dev_close(lp->dev); in iss_net_poll()
350 struct iss_net_private *lp = (struct iss_net_private *)priv; in iss_net_timer() local
353 spin_lock(&lp->lock); in iss_net_timer()
354 mod_timer(&lp->timer, jiffies + lp->timer_val); in iss_net_timer()
355 spin_unlock(&lp->lock); in iss_net_timer()
361 struct iss_net_private *lp = netdev_priv(dev); in iss_net_open() local
364 spin_lock_bh(&lp->lock); in iss_net_open()
366 err = lp->tp.open(lp); in iss_net_open()
379 spin_unlock_bh(&lp->lock); in iss_net_open()
381 list_add(&lp->opened_list, &opened); in iss_net_open()
383 spin_lock_bh(&lp->lock); in iss_net_open()
385 init_timer(&lp->timer); in iss_net_open()
386 lp->timer_val = ISS_NET_TIMER_VALUE; in iss_net_open()
387 lp->timer.data = (unsigned long) lp; in iss_net_open()
388 lp->timer.function = iss_net_timer; in iss_net_open()
389 mod_timer(&lp->timer, jiffies + lp->timer_val); in iss_net_open()
392 spin_unlock_bh(&lp->lock); in iss_net_open()
398 struct iss_net_private *lp = netdev_priv(dev); in iss_net_close() local
400 spin_lock_bh(&lp->lock); in iss_net_close()
406 del_timer_sync(&lp->timer); in iss_net_close()
408 lp->tp.close(lp); in iss_net_close()
410 spin_unlock_bh(&lp->lock); in iss_net_close()
416 struct iss_net_private *lp = netdev_priv(dev); in iss_net_start_xmit() local
420 spin_lock_bh(&lp->lock); in iss_net_start_xmit()
422 len = lp->tp.write(lp, &skb); in iss_net_start_xmit()
425 lp->stats.tx_packets++; in iss_net_start_xmit()
426 lp->stats.tx_bytes += skb->len; in iss_net_start_xmit()
435 lp->stats.tx_dropped++; in iss_net_start_xmit()
442 spin_unlock_bh(&lp->lock); in iss_net_start_xmit()
451 struct iss_net_private *lp = netdev_priv(dev); in iss_net_get_stats() local
452 return &lp->stats; in iss_net_get_stats()
465 struct iss_net_private *lp = netdev_priv(dev); in iss_net_set_mac() local
470 spin_lock_bh(&lp->lock); in iss_net_set_mac()
472 spin_unlock_bh(&lp->lock); in iss_net_set_mac()
509 struct iss_net_private *lp; in iss_net_configure() local
512 dev = alloc_etherdev(sizeof(*lp)); in iss_net_configure()
520 lp = netdev_priv(dev); in iss_net_configure()
521 *lp = (struct iss_net_private) { in iss_net_configure()
522 .device_list = LIST_HEAD_INIT(lp->device_list), in iss_net_configure()
523 .opened_list = LIST_HEAD_INIT(lp->opened_list), in iss_net_configure()
528 spin_lock_init(&lp->lock); in iss_net_configure()
541 if (!tuntap_probe(lp, index, init)) { in iss_net_configure()
557 list_add(&lp->device_list, &devices); in iss_net_configure()
560 lp->pdev.id = index; in iss_net_configure()
561 lp->pdev.name = DRIVER_NAME; in iss_net_configure()
562 platform_device_register(&lp->pdev); in iss_net_configure()
563 SET_NETDEV_DEV(dev, &lp->pdev.dev); in iss_net_configure()
566 dev->mtu = lp->mtu; in iss_net_configure()
581 init_timer(&lp->tl); in iss_net_configure()
582 lp->tl.function = iss_net_user_timer_expire; in iss_net_configure()