- po = get_item((unsigned long) ph->sid, skb->mac.ethernet->h_source);
- if (!po)
- goto drop;
-
- sk = po->sk;
- bh_lock_sock(sk);
-
- /* Socket state is unknown, must put skb into backlog. */
- if (sock_owned_by_user(sk) != 0) {
- sk_add_backlog(sk, skb);
- ret = NET_RX_SUCCESS;
- } else {
- ret = pppoe_rcv_core(sk, skb);
- }
-
- bh_unlock_sock(sk);
- sock_put(sk);
-
- return ret;
+ po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source);
+ if (po != NULL)
+ return sk_receive_skb(sk_pppox(po), skb, 0);