Lines Matching refs:ro

117 	struct raw_sock *ro = raw_sk(sk);  in raw_rcv()  local
123 if (!ro->recv_own_msgs && oskb->sk == sk) in raw_rcv()
127 if (!ro->fd_frames && oskb->len != CAN_MTU) in raw_rcv()
131 if (this_cpu_ptr(ro->uniq)->skb == oskb && in raw_rcv()
132 this_cpu_ptr(ro->uniq)->skbcnt == can_skb_prv(oskb)->skbcnt) { in raw_rcv()
133 if (ro->join_filters) { in raw_rcv()
134 this_cpu_inc(ro->uniq->join_rx_count); in raw_rcv()
136 if (this_cpu_ptr(ro->uniq)->join_rx_count < ro->count) in raw_rcv()
142 this_cpu_ptr(ro->uniq)->skb = oskb; in raw_rcv()
143 this_cpu_ptr(ro->uniq)->skbcnt = can_skb_prv(oskb)->skbcnt; in raw_rcv()
144 this_cpu_ptr(ro->uniq)->join_rx_count = 1; in raw_rcv()
146 if (ro->join_filters && ro->count > 1) in raw_rcv()
241 struct raw_sock *ro = raw_sk(sk); in raw_disable_allfilters() local
243 raw_disable_filters(net, dev, sk, ro->filter, ro->count); in raw_disable_allfilters()
244 raw_disable_errfilter(net, dev, sk, ro->err_mask); in raw_disable_allfilters()
250 struct raw_sock *ro = raw_sk(sk); in raw_enable_allfilters() local
253 err = raw_enable_filters(net, dev, sk, ro->filter, ro->count); in raw_enable_allfilters()
255 err = raw_enable_errfilter(net, dev, sk, ro->err_mask); in raw_enable_allfilters()
257 raw_disable_filters(net, dev, sk, ro->filter, in raw_enable_allfilters()
258 ro->count); in raw_enable_allfilters()
268 struct raw_sock *ro = container_of(nb, struct raw_sock, notifier); in raw_notifier() local
269 struct sock *sk = &ro->sk; in raw_notifier()
277 if (ro->ifindex != dev->ifindex) in raw_notifier()
284 if (ro->bound) in raw_notifier()
287 if (ro->count > 1) in raw_notifier()
288 kfree(ro->filter); in raw_notifier()
290 ro->ifindex = 0; in raw_notifier()
291 ro->bound = 0; in raw_notifier()
292 ro->count = 0; in raw_notifier()
312 struct raw_sock *ro = raw_sk(sk); in raw_init() local
314 ro->bound = 0; in raw_init()
315 ro->ifindex = 0; in raw_init()
318 ro->dfilter.can_id = 0; in raw_init()
319 ro->dfilter.can_mask = MASK_ALL; in raw_init()
320 ro->filter = &ro->dfilter; in raw_init()
321 ro->count = 1; in raw_init()
324 ro->loopback = 1; in raw_init()
325 ro->recv_own_msgs = 0; in raw_init()
326 ro->fd_frames = 0; in raw_init()
327 ro->join_filters = 0; in raw_init()
330 ro->uniq = alloc_percpu(struct uniqframe); in raw_init()
331 if (unlikely(!ro->uniq)) in raw_init()
335 ro->notifier.notifier_call = raw_notifier; in raw_init()
337 register_netdevice_notifier(&ro->notifier); in raw_init()
345 struct raw_sock *ro; in raw_release() local
350 ro = raw_sk(sk); in raw_release()
352 unregister_netdevice_notifier(&ro->notifier); in raw_release()
357 if (ro->bound) { in raw_release()
358 if (ro->ifindex) { in raw_release()
361 dev = dev_get_by_index(sock_net(sk), ro->ifindex); in raw_release()
371 if (ro->count > 1) in raw_release()
372 kfree(ro->filter); in raw_release()
374 ro->ifindex = 0; in raw_release()
375 ro->bound = 0; in raw_release()
376 ro->count = 0; in raw_release()
377 free_percpu(ro->uniq); in raw_release()
392 struct raw_sock *ro = raw_sk(sk); in raw_bind() local
404 if (ro->bound && addr->can_ifindex == ro->ifindex) in raw_bind()
436 if (ro->bound) { in raw_bind()
438 if (ro->ifindex) { in raw_bind()
442 ro->ifindex); in raw_bind()
452 ro->ifindex = ifindex; in raw_bind()
453 ro->bound = 1; in raw_bind()
473 struct raw_sock *ro = raw_sk(sk); in raw_getname() local
480 addr->can_ifindex = ro->ifindex; in raw_getname()
489 struct raw_sock *ro = raw_sk(sk); in raw_setsockopt() local
522 if (ro->bound && ro->ifindex) in raw_setsockopt()
523 dev = dev_get_by_index(sock_net(sk), ro->ifindex); in raw_setsockopt()
525 if (ro->bound) { in raw_setsockopt()
540 raw_disable_filters(sock_net(sk), dev, sk, ro->filter, in raw_setsockopt()
541 ro->count); in raw_setsockopt()
545 if (ro->count > 1) in raw_setsockopt()
546 kfree(ro->filter); in raw_setsockopt()
551 ro->dfilter = sfilter; in raw_setsockopt()
552 filter = &ro->dfilter; in raw_setsockopt()
554 ro->filter = filter; in raw_setsockopt()
555 ro->count = count; in raw_setsockopt()
576 if (ro->bound && ro->ifindex) in raw_setsockopt()
577 dev = dev_get_by_index(sock_net(sk), ro->ifindex); in raw_setsockopt()
580 if (ro->bound) { in raw_setsockopt()
590 ro->err_mask); in raw_setsockopt()
594 ro->err_mask = err_mask; in raw_setsockopt()
605 if (optlen != sizeof(ro->loopback)) in raw_setsockopt()
608 if (copy_from_sockptr(&ro->loopback, optval, optlen)) in raw_setsockopt()
614 if (optlen != sizeof(ro->recv_own_msgs)) in raw_setsockopt()
617 if (copy_from_sockptr(&ro->recv_own_msgs, optval, optlen)) in raw_setsockopt()
623 if (optlen != sizeof(ro->fd_frames)) in raw_setsockopt()
626 if (copy_from_sockptr(&ro->fd_frames, optval, optlen)) in raw_setsockopt()
632 if (optlen != sizeof(ro->join_filters)) in raw_setsockopt()
635 if (copy_from_sockptr(&ro->join_filters, optval, optlen)) in raw_setsockopt()
650 struct raw_sock *ro = raw_sk(sk); in raw_getsockopt() local
665 if (ro->count > 0) { in raw_getsockopt()
666 int fsize = ro->count * sizeof(struct can_filter); in raw_getsockopt()
670 if (copy_to_user(optval, ro->filter, len)) in raw_getsockopt()
684 val = &ro->err_mask; in raw_getsockopt()
690 val = &ro->loopback; in raw_getsockopt()
696 val = &ro->recv_own_msgs; in raw_getsockopt()
702 val = &ro->fd_frames; in raw_getsockopt()
708 val = &ro->join_filters; in raw_getsockopt()
725 struct raw_sock *ro = raw_sk(sk); in raw_sendmsg() local
742 ifindex = ro->ifindex; in raw_sendmsg()
750 if (ro->fd_frames && dev->mtu == CANFD_MTU) { in raw_sendmsg()
777 err = can_send(skb, ro->loopback); in raw_sendmsg()