Lines Matching refs:sk
90 struct sock *sk = sock->sk; in ieee802154_sock_release() local
92 if (sk) { in ieee802154_sock_release()
93 sock->sk = NULL; in ieee802154_sock_release()
94 sk->sk_prot->close(sk, 0); in ieee802154_sock_release()
102 struct sock *sk = sock->sk; in ieee802154_sock_sendmsg() local
104 return sk->sk_prot->sendmsg(sk, msg, len); in ieee802154_sock_sendmsg()
110 struct sock *sk = sock->sk; in ieee802154_sock_bind() local
112 if (sk->sk_prot->bind) in ieee802154_sock_bind()
113 return sk->sk_prot->bind(sk, uaddr, addr_len); in ieee802154_sock_bind()
121 struct sock *sk = sock->sk; in ieee802154_sock_connect() local
127 return sk->sk_prot->disconnect(sk, flags); in ieee802154_sock_connect()
129 return sk->sk_prot->connect(sk, uaddr, addr_len); in ieee802154_sock_connect()
132 static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, in ieee802154_dev_ioctl() argument
144 dev_load(sock_net(sk), ifr.ifr_name); in ieee802154_dev_ioctl()
145 dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); in ieee802154_dev_ioctl()
163 struct sock *sk = sock->sk; in ieee802154_sock_ioctl() local
167 return sock_get_timestamp(sk, (struct timeval __user *)arg); in ieee802154_sock_ioctl()
169 return sock_get_timestampns(sk, (struct timespec __user *)arg); in ieee802154_sock_ioctl()
172 return ieee802154_dev_ioctl(sk, (struct ifreq __user *)arg, in ieee802154_sock_ioctl()
175 if (!sk->sk_prot->ioctl) in ieee802154_sock_ioctl()
177 return sk->sk_prot->ioctl(sk, cmd, arg); in ieee802154_sock_ioctl()
185 static void raw_hash(struct sock *sk) in raw_hash() argument
188 sk_add_node(sk, &raw_head); in raw_hash()
189 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); in raw_hash()
193 static void raw_unhash(struct sock *sk) in raw_unhash() argument
196 if (sk_del_node_init(sk)) in raw_unhash()
197 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); in raw_unhash()
201 static void raw_close(struct sock *sk, long timeout) in raw_close() argument
203 sk_common_release(sk); in raw_close()
206 static int raw_bind(struct sock *sk, struct sockaddr *_uaddr, int len) in raw_bind() argument
220 lock_sock(sk); in raw_bind()
223 dev = ieee802154_get_dev(sock_net(sk), &addr); in raw_bind()
229 sk->sk_bound_dev_if = dev->ifindex; in raw_bind()
230 sk_dst_reset(sk); in raw_bind()
234 release_sock(sk); in raw_bind()
239 static int raw_connect(struct sock *sk, struct sockaddr *uaddr, in raw_connect() argument
245 static int raw_disconnect(struct sock *sk, int flags) in raw_disconnect() argument
250 static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) in raw_sendmsg() argument
263 lock_sock(sk); in raw_sendmsg()
264 if (!sk->sk_bound_dev_if) in raw_sendmsg()
265 dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154); in raw_sendmsg()
267 dev = dev_get_by_index(sock_net(sk), sk->sk_bound_dev_if); in raw_sendmsg()
268 release_sock(sk); in raw_sendmsg()
287 skb = sock_alloc_send_skb(sk, hlen + tlen + size, in raw_sendmsg()
302 skb->sk = sk; in raw_sendmsg()
321 static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, in raw_recvmsg() argument
328 skb = skb_recv_datagram(sk, flags, noblock, &err); in raw_recvmsg()
342 sock_recv_ts_and_drops(msg, sk, skb); in raw_recvmsg()
347 skb_free_datagram(sk, skb); in raw_recvmsg()
354 static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb) in raw_rcv_skb() argument
360 if (sock_queue_rcv_skb(sk, skb) < 0) { in raw_rcv_skb()
370 struct sock *sk; in ieee802154_raw_deliver() local
373 sk_for_each(sk, &raw_head) { in ieee802154_raw_deliver()
374 bh_lock_sock(sk); in ieee802154_raw_deliver()
375 if (!sk->sk_bound_dev_if || in ieee802154_raw_deliver()
376 sk->sk_bound_dev_if == dev->ifindex) { in ieee802154_raw_deliver()
381 raw_rcv_skb(sk, clone); in ieee802154_raw_deliver()
383 bh_unlock_sock(sk); in ieee802154_raw_deliver()
388 static int raw_getsockopt(struct sock *sk, int level, int optname, in raw_getsockopt() argument
394 static int raw_setsockopt(struct sock *sk, int level, int optname, in raw_setsockopt() argument
446 struct sock sk; member
460 static inline struct dgram_sock *dgram_sk(const struct sock *sk) in dgram_sk() argument
462 return container_of(sk, struct dgram_sock, sk); in dgram_sk()
465 static void dgram_hash(struct sock *sk) in dgram_hash() argument
468 sk_add_node(sk, &dgram_head); in dgram_hash()
469 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); in dgram_hash()
473 static void dgram_unhash(struct sock *sk) in dgram_unhash() argument
476 if (sk_del_node_init(sk)) in dgram_unhash()
477 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); in dgram_unhash()
481 static int dgram_init(struct sock *sk) in dgram_init() argument
483 struct dgram_sock *ro = dgram_sk(sk); in dgram_init()
489 static void dgram_close(struct sock *sk, long timeout) in dgram_close() argument
491 sk_common_release(sk); in dgram_close()
494 static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len) in dgram_bind() argument
498 struct dgram_sock *ro = dgram_sk(sk); in dgram_bind()
502 lock_sock(sk); in dgram_bind()
513 dev = ieee802154_get_dev(sock_net(sk), &haddr); in dgram_bind()
531 release_sock(sk); in dgram_bind()
536 static int dgram_ioctl(struct sock *sk, int cmd, unsigned long arg) in dgram_ioctl() argument
541 int amount = sk_wmem_alloc_get(sk); in dgram_ioctl()
552 spin_lock_bh(&sk->sk_receive_queue.lock); in dgram_ioctl()
553 skb = skb_peek(&sk->sk_receive_queue); in dgram_ioctl()
561 spin_unlock_bh(&sk->sk_receive_queue.lock); in dgram_ioctl()
570 static int dgram_connect(struct sock *sk, struct sockaddr *uaddr, in dgram_connect() argument
574 struct dgram_sock *ro = dgram_sk(sk); in dgram_connect()
583 lock_sock(sk); in dgram_connect()
594 release_sock(sk); in dgram_connect()
598 static int dgram_disconnect(struct sock *sk, int flags) in dgram_disconnect() argument
600 struct dgram_sock *ro = dgram_sk(sk); in dgram_disconnect()
602 lock_sock(sk); in dgram_disconnect()
604 release_sock(sk); in dgram_disconnect()
609 static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) in dgram_sendmsg() argument
615 struct dgram_sock *ro = dgram_sk(sk); in dgram_sendmsg()
631 dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154); in dgram_sendmsg()
633 dev = ieee802154_get_dev(sock_net(sk), &ro->src_addr); in dgram_sendmsg()
651 skb = sock_alloc_send_skb(sk, hlen + tlen + size, in dgram_sendmsg()
689 skb->sk = sk; in dgram_sendmsg()
708 static int dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, in dgram_recvmsg() argument
716 skb = skb_recv_datagram(sk, flags, noblock, &err); in dgram_recvmsg()
731 sock_recv_ts_and_drops(msg, sk, skb); in dgram_recvmsg()
748 skb_free_datagram(sk, skb); in dgram_recvmsg()
755 static int dgram_rcv_skb(struct sock *sk, struct sk_buff *skb) in dgram_rcv_skb() argument
761 if (sock_queue_rcv_skb(sk, skb) < 0) { in dgram_rcv_skb()
790 struct sock *sk, *prev = NULL; in ieee802154_dgram_deliver() local
803 sk_for_each(sk, &dgram_head) { in ieee802154_dgram_deliver()
805 dgram_sk(sk))) { in ieee802154_dgram_deliver()
814 prev = sk; in ieee802154_dgram_deliver()
829 static int dgram_getsockopt(struct sock *sk, int level, int optname, in dgram_getsockopt() argument
832 struct dgram_sock *ro = dgram_sk(sk); in dgram_getsockopt()
873 static int dgram_setsockopt(struct sock *sk, int level, int optname, in dgram_setsockopt() argument
876 struct dgram_sock *ro = dgram_sk(sk); in dgram_setsockopt()
877 struct net *net = sock_net(sk); in dgram_setsockopt()
887 lock_sock(sk); in dgram_setsockopt()
939 release_sock(sk); in dgram_setsockopt()
992 struct sock *sk; in ieee802154_create() local
1015 sk = sk_alloc(net, PF_IEEE802154, GFP_KERNEL, proto, kern); in ieee802154_create()
1016 if (!sk) in ieee802154_create()
1022 sock_init_data(sock, sk); in ieee802154_create()
1024 sk->sk_family = PF_IEEE802154; in ieee802154_create()
1027 sock_set_flag(sk, SOCK_ZAPPED); in ieee802154_create()
1029 if (sk->sk_prot->hash) in ieee802154_create()
1030 sk->sk_prot->hash(sk); in ieee802154_create()
1032 if (sk->sk_prot->init) { in ieee802154_create()
1033 rc = sk->sk_prot->init(sk); in ieee802154_create()
1035 sk_common_release(sk); in ieee802154_create()