Lines Matching refs:sk
92 struct sock *sk = sock->sk; in ieee802154_sock_release() local
94 if (sk) { in ieee802154_sock_release()
95 sock->sk = NULL; in ieee802154_sock_release()
96 sk->sk_prot->close(sk, 0); in ieee802154_sock_release()
104 struct sock *sk = sock->sk; in ieee802154_sock_sendmsg() local
106 return sk->sk_prot->sendmsg(sk, msg, len); in ieee802154_sock_sendmsg()
112 struct sock *sk = sock->sk; in ieee802154_sock_bind() local
114 if (sk->sk_prot->bind) in ieee802154_sock_bind()
115 return sk->sk_prot->bind(sk, uaddr, addr_len); in ieee802154_sock_bind()
123 struct sock *sk = sock->sk; in ieee802154_sock_connect() local
129 return sk->sk_prot->disconnect(sk, flags); in ieee802154_sock_connect()
131 return sk->sk_prot->connect(sk, uaddr, addr_len); in ieee802154_sock_connect()
134 static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, in ieee802154_dev_ioctl() argument
146 dev_load(sock_net(sk), ifr.ifr_name); in ieee802154_dev_ioctl()
147 dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); in ieee802154_dev_ioctl()
165 struct sock *sk = sock->sk; in ieee802154_sock_ioctl() local
169 return sock_get_timestamp(sk, (struct timeval __user *)arg); in ieee802154_sock_ioctl()
171 return sock_get_timestampns(sk, (struct timespec __user *)arg); in ieee802154_sock_ioctl()
174 return ieee802154_dev_ioctl(sk, (struct ifreq __user *)arg, in ieee802154_sock_ioctl()
177 if (!sk->sk_prot->ioctl) in ieee802154_sock_ioctl()
179 return sk->sk_prot->ioctl(sk, cmd, arg); in ieee802154_sock_ioctl()
187 static void raw_hash(struct sock *sk) in raw_hash() argument
190 sk_add_node(sk, &raw_head); in raw_hash()
191 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); in raw_hash()
195 static void raw_unhash(struct sock *sk) in raw_unhash() argument
198 if (sk_del_node_init(sk)) in raw_unhash()
199 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); in raw_unhash()
203 static void raw_close(struct sock *sk, long timeout) in raw_close() argument
205 sk_common_release(sk); in raw_close()
208 static int raw_bind(struct sock *sk, struct sockaddr *_uaddr, int len) in raw_bind() argument
222 lock_sock(sk); in raw_bind()
225 dev = ieee802154_get_dev(sock_net(sk), &addr); in raw_bind()
236 sk->sk_bound_dev_if = dev->ifindex; in raw_bind()
237 sk_dst_reset(sk); in raw_bind()
242 release_sock(sk); in raw_bind()
247 static int raw_connect(struct sock *sk, struct sockaddr *uaddr, in raw_connect() argument
253 static int raw_disconnect(struct sock *sk, int flags) in raw_disconnect() argument
258 static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) in raw_sendmsg() argument
271 lock_sock(sk); in raw_sendmsg()
272 if (!sk->sk_bound_dev_if) in raw_sendmsg()
273 dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154); in raw_sendmsg()
275 dev = dev_get_by_index(sock_net(sk), sk->sk_bound_dev_if); in raw_sendmsg()
276 release_sock(sk); in raw_sendmsg()
295 skb = sock_alloc_send_skb(sk, hlen + tlen + size, in raw_sendmsg()
310 skb->sk = sk; in raw_sendmsg()
329 static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, in raw_recvmsg() argument
336 skb = skb_recv_datagram(sk, flags, noblock, &err); in raw_recvmsg()
350 sock_recv_ts_and_drops(msg, sk, skb); in raw_recvmsg()
355 skb_free_datagram(sk, skb); in raw_recvmsg()
362 static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb) in raw_rcv_skb() argument
368 if (sock_queue_rcv_skb(sk, skb) < 0) { in raw_rcv_skb()
378 struct sock *sk; in ieee802154_raw_deliver() local
381 sk_for_each(sk, &raw_head) { in ieee802154_raw_deliver()
382 bh_lock_sock(sk); in ieee802154_raw_deliver()
383 if (!sk->sk_bound_dev_if || in ieee802154_raw_deliver()
384 sk->sk_bound_dev_if == dev->ifindex) { in ieee802154_raw_deliver()
389 raw_rcv_skb(sk, clone); in ieee802154_raw_deliver()
391 bh_unlock_sock(sk); in ieee802154_raw_deliver()
396 static int raw_getsockopt(struct sock *sk, int level, int optname, in raw_getsockopt() argument
402 static int raw_setsockopt(struct sock *sk, int level, int optname, in raw_setsockopt() argument
454 struct sock sk; member
468 static inline struct dgram_sock *dgram_sk(const struct sock *sk) in dgram_sk() argument
470 return container_of(sk, struct dgram_sock, sk); in dgram_sk()
473 static void dgram_hash(struct sock *sk) in dgram_hash() argument
476 sk_add_node(sk, &dgram_head); in dgram_hash()
477 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); in dgram_hash()
481 static void dgram_unhash(struct sock *sk) in dgram_unhash() argument
484 if (sk_del_node_init(sk)) in dgram_unhash()
485 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); in dgram_unhash()
489 static int dgram_init(struct sock *sk) in dgram_init() argument
491 struct dgram_sock *ro = dgram_sk(sk); in dgram_init()
497 static void dgram_close(struct sock *sk, long timeout) in dgram_close() argument
499 sk_common_release(sk); in dgram_close()
502 static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len) in dgram_bind() argument
506 struct dgram_sock *ro = dgram_sk(sk); in dgram_bind()
510 lock_sock(sk); in dgram_bind()
521 dev = ieee802154_get_dev(sock_net(sk), &haddr); in dgram_bind()
539 release_sock(sk); in dgram_bind()
544 static int dgram_ioctl(struct sock *sk, int cmd, unsigned long arg) in dgram_ioctl() argument
549 int amount = sk_wmem_alloc_get(sk); in dgram_ioctl()
560 spin_lock_bh(&sk->sk_receive_queue.lock); in dgram_ioctl()
561 skb = skb_peek(&sk->sk_receive_queue); in dgram_ioctl()
569 spin_unlock_bh(&sk->sk_receive_queue.lock); in dgram_ioctl()
578 static int dgram_connect(struct sock *sk, struct sockaddr *uaddr, in dgram_connect() argument
582 struct dgram_sock *ro = dgram_sk(sk); in dgram_connect()
591 lock_sock(sk); in dgram_connect()
602 release_sock(sk); in dgram_connect()
606 static int dgram_disconnect(struct sock *sk, int flags) in dgram_disconnect() argument
608 struct dgram_sock *ro = dgram_sk(sk); in dgram_disconnect()
610 lock_sock(sk); in dgram_disconnect()
612 release_sock(sk); in dgram_disconnect()
617 static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) in dgram_sendmsg() argument
623 struct dgram_sock *ro = dgram_sk(sk); in dgram_sendmsg()
639 dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154); in dgram_sendmsg()
641 dev = ieee802154_get_dev(sock_net(sk), &ro->src_addr); in dgram_sendmsg()
659 skb = sock_alloc_send_skb(sk, hlen + tlen + size, in dgram_sendmsg()
697 skb->sk = sk; in dgram_sendmsg()
716 static int dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, in dgram_recvmsg() argument
724 skb = skb_recv_datagram(sk, flags, noblock, &err); in dgram_recvmsg()
739 sock_recv_ts_and_drops(msg, sk, skb); in dgram_recvmsg()
756 skb_free_datagram(sk, skb); in dgram_recvmsg()
763 static int dgram_rcv_skb(struct sock *sk, struct sk_buff *skb) in dgram_rcv_skb() argument
769 if (sock_queue_rcv_skb(sk, skb) < 0) { in dgram_rcv_skb()
798 struct sock *sk, *prev = NULL; in ieee802154_dgram_deliver() local
811 sk_for_each(sk, &dgram_head) { in ieee802154_dgram_deliver()
813 dgram_sk(sk))) { in ieee802154_dgram_deliver()
822 prev = sk; in ieee802154_dgram_deliver()
837 static int dgram_getsockopt(struct sock *sk, int level, int optname, in dgram_getsockopt() argument
840 struct dgram_sock *ro = dgram_sk(sk); in dgram_getsockopt()
881 static int dgram_setsockopt(struct sock *sk, int level, int optname, in dgram_setsockopt() argument
884 struct dgram_sock *ro = dgram_sk(sk); in dgram_setsockopt()
885 struct net *net = sock_net(sk); in dgram_setsockopt()
895 lock_sock(sk); in dgram_setsockopt()
947 release_sock(sk); in dgram_setsockopt()
1000 struct sock *sk; in ieee802154_create() local
1023 sk = sk_alloc(net, PF_IEEE802154, GFP_KERNEL, proto); in ieee802154_create()
1024 if (!sk) in ieee802154_create()
1030 sock_init_data(sock, sk); in ieee802154_create()
1032 sk->sk_family = PF_IEEE802154; in ieee802154_create()
1035 sock_set_flag(sk, SOCK_ZAPPED); in ieee802154_create()
1037 if (sk->sk_prot->hash) in ieee802154_create()
1038 sk->sk_prot->hash(sk); in ieee802154_create()
1040 if (sk->sk_prot->init) { in ieee802154_create()
1041 rc = sk->sk_prot->init(sk); in ieee802154_create()
1043 sk_common_release(sk); in ieee802154_create()