Lines Matching refs:po

184 static int __set_item(struct pppoe_net *pn, struct pppox_sock *po)
186 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote);
191 if (cmp_2_addr(&ret->pppoe_pa, &po->pppoe_pa) &&
192 ret->pppoe_ifindex == po->pppoe_ifindex)
198 po->next = pn->hash_table[hash];
199 pn->hash_table[hash] = po;
233 struct pppox_sock *po;
236 po = __get_item(pn, sid, addr, ifindex);
237 if (po)
238 sock_hold(sk_pppox(po));
241 return po;
288 struct pppox_sock *po = pn->hash_table[i];
291 while (po) {
292 while (po && po->pppoe_dev != dev) {
293 po = po->next;
296 if (!po)
299 sk = sk_pppox(po);
313 if (po->pppoe_dev == dev &&
318 po->pppoe_dev = NULL;
332 po = pn->hash_table[i];
375 struct pppox_sock *po = pppox_sk(sk);
384 ppp_input(&po->chan, skb);
387 &po->pppoe_relay);
420 struct pppox_sock *po;
443 /* Note that get_item does a sock_hold(), so sk_pppox(po)
446 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex);
447 if (!po)
450 return sk_receive_skb(sk_pppox(po), skb, 0);
469 struct pppox_sock *po;
484 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex);
485 if (po) {
486 struct sock *sk = sk_pppox(po);
558 struct pppox_sock *po;
571 po = pppox_sk(sk);
574 dev_put(po->pppoe_dev);
575 po->pppoe_dev = NULL;
587 * protect "po" from concurrent updates
590 delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote,
591 po->pppoe_ifindex);
608 struct pppox_sock *po = pppox_sk(sk);
635 if (stage_session(po->pppoe_pa.sid)) {
638 delete_item(pn, po->pppoe_pa.sid,
639 po->pppoe_pa.remote, po->pppoe_ifindex);
640 if (po->pppoe_dev) {
641 dev_put(po->pppoe_dev);
642 po->pppoe_dev = NULL;
645 memset(sk_pppox(po) + 1, 0,
658 po->pppoe_dev = dev;
659 po->pppoe_ifindex = dev->ifindex;
665 memcpy(&po->pppoe_pa,
670 error = __set_item(pn, po);
675 po->chan.hdrlen = (sizeof(struct pppoe_hdr) +
678 po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2;
679 po->chan.private = sk;
680 po->chan.ops = &pppoe_chan_ops;
682 error = ppp_register_net_channel(dev_net(dev), &po->chan);
684 delete_item(pn, po->pppoe_pa.sid,
685 po->pppoe_pa.remote, po->pppoe_ifindex);
692 po->num = sp->sa_addr.pppoe.sid;
698 if (po->pppoe_dev) {
699 dev_put(po->pppoe_dev);
700 po->pppoe_dev = NULL;
727 struct pppox_sock *po = pppox_sk(sk);
738 if (put_user(po->pppoe_dev->mtu -
755 if (val < (po->pppoe_dev->mtu
785 if (copy_from_user(&po->pppoe_relay,
791 if (po->pppoe_relay.sa_family != AF_PPPOX ||
792 po->pppoe_relay.sa_protocol != PX_PROTO_OE)
797 relay_po = get_item_by_addr(sock_net(sk), &po->pppoe_relay);
828 struct pppox_sock *po = pppox_sk(sk);
844 hdr.sid = po->num;
846 dev = po->pppoe_dev;
880 po->pppoe_pa.remote, NULL, total_len);
900 struct pppox_sock *po = pppox_sk(sk);
901 struct net_device *dev = po->pppoe_dev;
932 ph->sid = po->num;
939 po->pppoe_pa.remote, NULL, data_len);
999 struct pppox_sock *po;
1007 po = v;
1008 dev_name = po->pppoe_pa.dev;
1011 po->pppoe_pa.sid, po->pppoe_pa.remote, dev_name);
1018 struct pppox_sock *po;
1022 po = pn->hash_table[i];
1023 while (po) {
1026 po = po->next;
1031 return po;
1047 struct pppox_sock *po;
1051 po = pppoe_get_idx(pn, 0);
1054 po = v;
1055 if (po->next)
1056 po = po->next;
1058 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote);
1060 po = NULL;
1062 po = pn->hash_table[hash];
1063 if (po)
1069 return po;