• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/net/

Lines Matching defs:pch

243 static void ppp_channel_push(struct channel *pch);
245 struct channel *pch);
252 struct channel *pch);
268 static int ppp_connect_channel(struct channel *pch, int unit);
269 static int ppp_disconnect_channel(struct channel *pch);
270 static void ppp_destroy_channel(struct channel *pch);
779 struct channel *pch = PF_TO_CHANNEL(pf);
786 err = ppp_connect_channel(pch, unit);
790 err = ppp_disconnect_channel(pch);
794 down_read(&pch->chan_sem);
795 chan = pch->chan;
799 up_read(&pch->chan_sem);
1411 struct channel *pch;
1434 pch = list_entry(list, struct channel, clist);
1441 if (pch->chan->ops == &async_ops && ppp->n_channels == 2) {
1443 pch = list_entry(list, struct channel, clist);
1447 spin_lock_bh(&pch->downl);
1448 if (pch->chan) {
1449 if (pch->chan->ops->start_xmit(pch->chan, skb))
1456 spin_unlock_bh(&pch->downl);
1485 struct channel *pch;
1493 list_for_each_entry(pch, &ppp->channels, clist) {
1494 navail += pch->avail = (pch->chan != NULL);
1495 if (pch->avail) {
1496 if (skb_queue_empty(&pch->file.xq) ||
1497 !pch->had_frag) {
1498 pch->avail = 2;
1501 if (!pch->had_frag && i < ppp->nxchan)
1555 pch = list_entry(list, struct channel, clist);
1557 if (!pch->avail)
1564 if (pch->avail == 1) {
1569 pch->avail = 1;
1573 spin_lock_bh(&pch->downl);
1574 if (pch->chan == NULL) {
1576 spin_unlock_bh(&pch->downl);
1577 pch->avail = 0;
1592 mtu = pch->chan->mtu + 2 - hdrlen;
1632 chan = pch->chan;
1633 if (!skb_queue_empty(&pch->file.xq) ||
1635 skb_queue_tail(&pch->file.xq, frag);
1636 pch->had_frag = 1;
1641 spin_unlock_bh(&pch->downl);
1651 spin_unlock_bh(&pch->downl);
1664 ppp_channel_push(struct channel *pch)
1669 spin_lock_bh(&pch->downl);
1670 if (pch->chan != 0) {
1671 while (!skb_queue_empty(&pch->file.xq)) {
1672 skb = skb_dequeue(&pch->file.xq);
1673 if (!pch->chan->ops->start_xmit(pch->chan, skb)) {
1675 skb_queue_head(&pch->file.xq, skb);
1681 skb_queue_purge(&pch->file.xq);
1683 spin_unlock_bh(&pch->downl);
1685 if (skb_queue_empty(&pch->file.xq)) {
1686 read_lock_bh(&pch->upl);
1687 ppp = pch->ppp;
1690 read_unlock_bh(&pch->upl);
1703 ppp_do_recv(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
1708 ppp_receive_frame(ppp, skb, pch);
1717 struct channel *pch = chan->ppp;
1720 if (pch == 0 || skb->len == 0) {
1726 read_lock_bh(&pch->upl);
1727 if (pch->ppp == 0 || proto >= 0xc000 || proto == PPP_CCPFRAG) {
1729 skb_queue_tail(&pch->file.rq, skb);
1731 while (pch->file.rq.qlen > PPP_MAX_RQLEN
1732 && (skb = skb_dequeue(&pch->file.rq)) != 0)
1734 wake_up_interruptible(&pch->file.rwait);
1736 ppp_do_recv(pch->ppp, skb, pch);
1738 read_unlock_bh(&pch->upl);
1745 struct channel *pch = chan->ppp;
1748 if (pch == 0)
1751 read_lock_bh(&pch->upl);
1752 if (pch->ppp != 0) {
1757 ppp_do_recv(pch->ppp, skb, pch);
1760 read_unlock_bh(&pch->upl);
1768 ppp_receive_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
1773 ppp_receive_mp_frame(ppp, skb, pch);
2003 ppp_receive_mp_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
2039 pch->lastseq = seq;
2240 struct channel *pch;
2242 pch = kzalloc(sizeof(struct channel), GFP_KERNEL);
2243 if (pch == 0)
2245 pch->ppp = NULL;
2246 pch->chan = chan;
2247 chan->ppp = pch;
2248 init_ppp_file(&pch->file, CHANNEL);
2249 pch->file.hdrlen = chan->hdrlen;
2251 pch->lastseq = -1;
2253 init_rwsem(&pch->chan_sem);
2254 spin_lock_init(&pch->downl);
2255 rwlock_init(&pch->upl);
2257 pch->file.index = ++last_channel_index;
2258 list_add(&pch->list, &new_channels);
2269 struct channel *pch = chan->ppp;
2271 if (pch != 0)
2272 return pch->file.index;
2281 struct channel *pch = chan->ppp;
2284 if (pch != 0) {
2285 read_lock_bh(&pch->upl);
2286 if (pch->ppp != 0)
2287 unit = pch->ppp->file.index;
2288 read_unlock_bh(&pch->upl);
2300 struct channel *pch = chan->ppp;
2302 if (pch == 0)
2310 down_write(&pch->chan_sem);
2311 spin_lock_bh(&pch->downl);
2312 pch->chan = NULL;
2313 spin_unlock_bh(&pch->downl);
2314 up_write(&pch->chan_sem);
2315 ppp_disconnect_channel(pch);
2317 list_del(&pch->list);
2319 pch->file.dead = 1;
2320 wake_up_interruptible(&pch->file.rwait);
2321 if (atomic_dec_and_test(&pch->file.refcnt))
2322 ppp_destroy_channel(pch);
2332 struct channel *pch = chan->ppp;
2334 if (pch == 0)
2336 ppp_channel_push(pch);
2828 struct channel *pch;
2830 list_for_each_entry(pch, &new_channels, list) {
2831 if (pch->file.index == unit) {
2832 list_move(&pch->list, &all_channels);
2833 return pch;
2836 list_for_each_entry(pch, &all_channels, list) {
2837 if (pch->file.index == unit)
2838 return pch;
2847 ppp_connect_channel(struct channel *pch, int unit)
2857 write_lock_bh(&pch->upl);
2859 if (pch->ppp != 0)
2863 if (pch->file.hdrlen > ppp->file.hdrlen)
2864 ppp->file.hdrlen = pch->file.hdrlen;
2865 hdrlen = pch->file.hdrlen + 2; /* for protocol bytes */
2868 list_add_tail(&pch->clist, &ppp->channels);
2870 pch->ppp = ppp;
2876 write_unlock_bh(&pch->upl);
2886 ppp_disconnect_channel(struct channel *pch)
2891 write_lock_bh(&pch->upl);
2892 ppp = pch->ppp;
2893 pch->ppp = NULL;
2894 write_unlock_bh(&pch->upl);
2898 list_del(&pch->clist);
2912 static void ppp_destroy_channel(struct channel *pch)
2916 if (!pch->file.dead) {
2919 pch);
2922 skb_queue_purge(&pch->file.xq);
2923 skb_queue_purge(&pch->file.rq);
2924 kfree(pch);