Lines Matching refs:po

177 static int __set_item(struct pppoe_net *pn, struct pppox_sock *po)
179 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote);
184 if (cmp_2_addr(&ret->pppoe_pa, &po->pppoe_pa) &&
185 ret->pppoe_ifindex == po->pppoe_ifindex)
191 po->next = pn->hash_table[hash];
192 pn->hash_table[hash] = po;
226 struct pppox_sock *po;
229 po = __get_item(pn, sid, addr, ifindex);
230 if (po)
231 sock_hold(sk_pppox(po));
234 return po;
281 struct pppox_sock *po = pn->hash_table[i];
284 while (po) {
285 while (po && po->pppoe_dev != dev) {
286 po = po->next;
289 if (!po)
292 sk = sk_pppox(po);
306 if (po->pppoe_dev == dev &&
310 po->pppoe_dev = NULL;
324 po = pn->hash_table[i];
367 struct pppox_sock *po = pppox_sk(sk);
379 ppp_input(&po->chan, skb);
382 &po->pppoe_relay);
417 struct pppox_sock *po;
444 /* Note that get_item does a sock_hold(), so sk_pppox(po)
447 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex);
448 if (!po)
451 return sk_receive_skb(sk_pppox(po), skb, 0);
461 struct pppox_sock *po = container_of(work, struct pppox_sock,
463 struct sock *sk = sk_pppox(po);
466 if (po->pppoe_dev) {
467 dev_put(po->pppoe_dev);
468 po->pppoe_dev = NULL;
486 struct pppox_sock *po;
504 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex);
505 if (po)
506 if (!schedule_work(&po->proto.pppoe.padt_work))
507 sock_put(sk_pppox(po));
564 struct pppox_sock *po;
577 po = pppox_sk(sk);
579 if (po->pppoe_dev) {
580 dev_put(po->pppoe_dev);
581 po->pppoe_dev = NULL;
593 * protect "po" from concurrent updates
596 delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote,
597 po->pppoe_ifindex);
614 struct pppox_sock *po = pppox_sk(sk);
645 if (stage_session(po->pppoe_pa.sid)) {
648 delete_item(pn, po->pppoe_pa.sid,
649 po->pppoe_pa.remote, po->pppoe_ifindex);
650 if (po->pppoe_dev) {
651 dev_put(po->pppoe_dev);
652 po->pppoe_dev = NULL;
655 po->pppoe_ifindex = 0;
656 memset(&po->pppoe_pa, 0, sizeof(po->pppoe_pa));
657 memset(&po->pppoe_relay, 0, sizeof(po->pppoe_relay));
658 memset(&po->chan, 0, sizeof(po->chan));
659 po->next = NULL;
660 po->num = 0;
673 po->pppoe_dev = dev;
674 po->pppoe_ifindex = dev->ifindex;
680 memcpy(&po->pppoe_pa,
685 error = __set_item(pn, po);
690 po->chan.hdrlen = (sizeof(struct pppoe_hdr) +
693 po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2;
694 po->chan.private = sk;
695 po->chan.ops = &pppoe_chan_ops;
697 error = ppp_register_net_channel(dev_net(dev), &po->chan);
699 delete_item(pn, po->pppoe_pa.sid,
700 po->pppoe_pa.remote, po->pppoe_ifindex);
707 po->num = sp->sa_addr.pppoe.sid;
713 if (po->pppoe_dev) {
714 dev_put(po->pppoe_dev);
715 po->pppoe_dev = NULL;
740 struct pppox_sock *po = pppox_sk(sk);
751 if (put_user(po->pppoe_dev->mtu -
768 if (val < (po->pppoe_dev->mtu
798 if (copy_from_user(&po->pppoe_relay,
804 if (po->pppoe_relay.sa_family != AF_PPPOX ||
805 po->pppoe_relay.sa_protocol != PX_PROTO_OE)
810 relay_po = get_item_by_addr(sock_net(sk), &po->pppoe_relay);
841 struct pppox_sock *po = pppox_sk(sk);
858 hdr.sid = po->num;
860 dev = po->pppoe_dev;
894 po->pppoe_pa.remote, NULL, total_len);
914 struct pppox_sock *po = pppox_sk(sk);
915 struct net_device *dev = po->pppoe_dev;
946 ph->sid = po->num;
953 po->pppoe_pa.remote, NULL, data_len);
980 struct pppox_sock *po = pppox_sk(sk);
981 struct net_device *dev = po->pppoe_dev;
989 path->encap.id = be16_to_cpu(po->num);
990 memcpy(path->encap.h_dest, po->pppoe_pa.remote, ETH_ALEN);
991 memcpy(ctx->daddr, po->pppoe_pa.remote, ETH_ALEN);
1036 struct pppox_sock *po;
1044 po = v;
1045 dev_name = po->pppoe_pa.dev;
1048 po->pppoe_pa.sid, po->pppoe_pa.remote, dev_name);
1055 struct pppox_sock *po;
1059 po = pn->hash_table[i];
1060 while (po) {
1063 po = po->next;
1068 return po;
1084 struct pppox_sock *po;
1088 po = pppoe_get_idx(pn, 0);
1091 po = v;
1092 if (po->next)
1093 po = po->next;
1095 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote);
1097 po = NULL;
1099 po = pn->hash_table[hash];
1100 if (po)
1106 return po;