Lines Matching refs:mux

58 	struct kcm_mux *mux = psock->mux;  in kcm_abort_tx_psock()  local
62 spin_lock_bh(&mux->lock); in kcm_abort_tx_psock()
65 spin_unlock_bh(&mux->lock); in kcm_abort_tx_psock()
86 spin_unlock_bh(&mux->lock); in kcm_abort_tx_psock()
93 static void kcm_update_rx_mux_stats(struct kcm_mux *mux, in kcm_update_rx_mux_stats() argument
96 STRP_STATS_ADD(mux->stats.rx_bytes, in kcm_update_rx_mux_stats()
99 mux->stats.rx_msgs += in kcm_update_rx_mux_stats()
105 static void kcm_update_tx_mux_stats(struct kcm_mux *mux, in kcm_update_tx_mux_stats() argument
108 KCM_STATS_ADD(mux->stats.tx_bytes, in kcm_update_tx_mux_stats()
110 mux->stats.tx_msgs += in kcm_update_tx_mux_stats()
124 struct kcm_mux *mux = kcm->mux; in kcm_rcv_ready() local
131 while (unlikely((skb = __skb_dequeue(&mux->rx_hold_queue)))) { in kcm_rcv_ready()
134 skb_queue_head(&mux->rx_hold_queue, skb); in kcm_rcv_ready()
140 while (!list_empty(&mux->psocks_ready)) { in kcm_rcv_ready()
141 psock = list_first_entry(&mux->psocks_ready, struct kcm_psock, in kcm_rcv_ready()
164 &kcm->mux->kcm_rx_waiters); in kcm_rcv_ready()
173 struct kcm_mux *mux = kcm->mux; in kcm_rfree() local
184 spin_lock_bh(&mux->rx_lock); in kcm_rfree()
186 spin_unlock_bh(&mux->rx_lock); in kcm_rfree()
220 static void requeue_rx_msgs(struct kcm_mux *mux, struct sk_buff_head *head) in requeue_rx_msgs() argument
230 if (list_empty(&mux->kcm_rx_waiters)) { in requeue_rx_msgs()
231 skb_queue_tail(&mux->rx_hold_queue, skb); in requeue_rx_msgs()
235 kcm = list_first_entry(&mux->kcm_rx_waiters, in requeue_rx_msgs()
256 struct kcm_mux *mux = psock->mux; in reserve_rx_kcm() local
264 spin_lock_bh(&mux->rx_lock); in reserve_rx_kcm()
267 spin_unlock_bh(&mux->rx_lock); in reserve_rx_kcm()
271 kcm_update_rx_mux_stats(mux, psock); in reserve_rx_kcm()
273 if (list_empty(&mux->kcm_rx_waiters)) { in reserve_rx_kcm()
277 &mux->psocks_ready); in reserve_rx_kcm()
278 spin_unlock_bh(&mux->rx_lock); in reserve_rx_kcm()
282 kcm = list_first_entry(&mux->kcm_rx_waiters, in reserve_rx_kcm()
292 spin_unlock_bh(&mux->rx_lock); in reserve_rx_kcm()
309 struct kcm_mux *mux = psock->mux; in unreserve_rx_kcm() local
314 spin_lock_bh(&mux->rx_lock); in unreserve_rx_kcm()
326 spin_unlock_bh(&mux->rx_lock); in unreserve_rx_kcm()
337 requeue_rx_msgs(mux, &kcm->sk.sk_receive_queue); in unreserve_rx_kcm()
344 spin_unlock_bh(&mux->rx_lock); in unreserve_rx_kcm()
415 struct kcm_mux *mux; in psock_write_space() local
423 mux = psock->mux; in psock_write_space()
425 spin_lock_bh(&mux->lock); in psock_write_space()
432 spin_unlock_bh(&mux->lock); in psock_write_space()
442 struct kcm_mux *mux = kcm->mux; in reserve_psock() local
457 spin_lock_bh(&mux->lock); in reserve_psock()
465 spin_unlock_bh(&mux->lock); in reserve_psock()
469 if (!list_empty(&mux->psocks_avail)) { in reserve_psock()
470 psock = list_first_entry(&mux->psocks_avail, in reserve_psock()
483 &mux->kcm_tx_waiters); in reserve_psock()
487 spin_unlock_bh(&mux->lock); in reserve_psock()
495 struct kcm_mux *mux = psock->mux; in psock_now_avail() local
498 if (list_empty(&mux->kcm_tx_waiters)) { in psock_now_avail()
500 &mux->psocks_avail); in psock_now_avail()
502 kcm = list_first_entry(&mux->kcm_tx_waiters, in psock_now_avail()
524 struct kcm_mux *mux = kcm->mux; in unreserve_psock() local
526 spin_lock_bh(&mux->lock); in unreserve_psock()
531 spin_unlock_bh(&mux->lock); in unreserve_psock()
537 kcm_update_tx_mux_stats(mux, psock); in unreserve_psock()
549 mux->psocks_cnt--; in unreserve_psock()
557 spin_unlock_bh(&mux->lock); in unreserve_psock()
564 spin_unlock_bh(&mux->lock); in unreserve_psock()
569 struct kcm_mux *mux = kcm->mux; in kcm_report_tx_retry() local
571 spin_lock_bh(&mux->lock); in kcm_report_tx_retry()
572 KCM_STATS_INCR(mux->stats.tx_retries); in kcm_report_tx_retry()
573 spin_unlock_bh(&mux->lock); in kcm_report_tx_retry()
1189 struct kcm_mux *mux = kcm->mux; in kcm_recv_disable() local
1194 spin_lock_bh(&mux->rx_lock); in kcm_recv_disable()
1206 requeue_rx_msgs(mux, &kcm->sk.sk_receive_queue); in kcm_recv_disable()
1209 spin_unlock_bh(&mux->rx_lock); in kcm_recv_disable()
1215 struct kcm_mux *mux = kcm->mux; in kcm_recv_enable() local
1220 spin_lock_bh(&mux->rx_lock); in kcm_recv_enable()
1225 spin_unlock_bh(&mux->rx_lock); in kcm_recv_enable()
1293 static void init_kcm_sock(struct kcm_sock *kcm, struct kcm_mux *mux) in init_kcm_sock() argument
1306 kcm->mux = mux; in init_kcm_sock()
1307 spin_lock_bh(&mux->lock); in init_kcm_sock()
1309 head = &mux->kcm_socks; in init_kcm_sock()
1310 list_for_each_entry(tkcm, &mux->kcm_socks, kcm_sock_list) { in init_kcm_sock()
1320 mux->kcm_socks_cnt++; in init_kcm_sock()
1321 spin_unlock_bh(&mux->lock); in init_kcm_sock()
1325 spin_lock_bh(&mux->rx_lock); in init_kcm_sock()
1327 spin_unlock_bh(&mux->rx_lock); in init_kcm_sock()
1334 struct kcm_mux *mux = kcm->mux; in kcm_attach() local
1371 psock->mux = mux; in kcm_attach()
1407 spin_lock_bh(&mux->lock); in kcm_attach()
1408 head = &mux->psocks; in kcm_attach()
1409 list_for_each_entry(tpsock, &mux->psocks, psock_list) { in kcm_attach()
1419 KCM_STATS_INCR(mux->stats.psock_attach); in kcm_attach()
1420 mux->psocks_cnt++; in kcm_attach()
1422 spin_unlock_bh(&mux->lock); in kcm_attach()
1466 struct kcm_mux *mux = psock->mux; in kcm_unattach() local
1486 spin_lock_bh(&mux->rx_lock); in kcm_unattach()
1495 KCM_STATS_INCR(mux->stats.rx_ready_drops); in kcm_unattach()
1498 spin_unlock_bh(&mux->rx_lock); in kcm_unattach()
1509 spin_lock_bh(&mux->lock); in kcm_unattach()
1511 aggregate_psock_stats(&psock->stats, &mux->aggregate_psock_stats); in kcm_unattach()
1512 save_strp_stats(&psock->strp, &mux->aggregate_strp_stats); in kcm_unattach()
1514 KCM_STATS_INCR(mux->stats.psock_unattach); in kcm_unattach()
1521 KCM_STATS_INCR(mux->stats.psock_unattach_rsvd); in kcm_unattach()
1522 spin_unlock_bh(&mux->lock); in kcm_unattach()
1530 spin_lock_bh(&mux->lock); in kcm_unattach()
1542 spin_unlock_bh(&mux->lock); in kcm_unattach()
1548 mux->psocks_cnt--; in kcm_unattach()
1549 spin_unlock_bh(&mux->lock); in kcm_unattach()
1562 struct kcm_mux *mux = kcm->mux; in kcm_unattach_ioctl() local
1580 spin_lock_bh(&mux->lock); in kcm_unattach_ioctl()
1582 list_for_each_entry(psock, &mux->psocks, psock_list) { in kcm_unattach_ioctl()
1595 spin_unlock_bh(&mux->lock); in kcm_unattach_ioctl()
1604 spin_unlock_bh(&mux->lock); in kcm_unattach_ioctl()
1639 init_kcm_sock(kcm_sk(newsk), kcm_sk(osock->sk)->mux); in kcm_clone()
1702 struct kcm_mux *mux = container_of(rcu, in free_mux() local
1705 kmem_cache_free(kcm_muxp, mux); in free_mux()
1708 static void release_mux(struct kcm_mux *mux) in release_mux() argument
1710 struct kcm_net *knet = mux->knet; in release_mux()
1715 &mux->psocks, psock_list) { in release_mux()
1720 if (WARN_ON(mux->psocks_cnt)) in release_mux()
1723 __skb_queue_purge(&mux->rx_hold_queue); in release_mux()
1726 aggregate_mux_stats(&mux->stats, &knet->aggregate_mux_stats); in release_mux()
1727 aggregate_psock_stats(&mux->aggregate_psock_stats, in release_mux()
1729 aggregate_strp_stats(&mux->aggregate_strp_stats, in release_mux()
1731 list_del_rcu(&mux->kcm_mux_list); in release_mux()
1735 call_rcu(&mux->rcu, free_mux); in release_mux()
1740 struct kcm_mux *mux = kcm->mux; in kcm_done() local
1744 spin_lock_bh(&mux->rx_lock); in kcm_done()
1750 spin_unlock_bh(&mux->rx_lock); in kcm_done()
1760 requeue_rx_msgs(mux, &sk->sk_receive_queue); in kcm_done()
1762 spin_unlock_bh(&mux->rx_lock); in kcm_done()
1768 spin_lock_bh(&mux->lock); in kcm_done()
1771 mux->kcm_socks_cnt--; in kcm_done()
1772 socks_cnt = mux->kcm_socks_cnt; in kcm_done()
1774 spin_unlock_bh(&mux->lock); in kcm_done()
1778 release_mux(mux); in kcm_done()
1793 struct kcm_mux *mux; in kcm_release() local
1800 mux = kcm->mux; in kcm_release()
1820 spin_lock_bh(&mux->lock); in kcm_release()
1828 spin_unlock_bh(&mux->lock); in kcm_release()
1906 struct kcm_mux *mux; in kcm_create() local
1927 mux = kmem_cache_zalloc(kcm_muxp, GFP_KERNEL); in kcm_create()
1928 if (!mux) { in kcm_create()
1933 spin_lock_init(&mux->lock); in kcm_create()
1934 spin_lock_init(&mux->rx_lock); in kcm_create()
1935 INIT_LIST_HEAD(&mux->kcm_socks); in kcm_create()
1936 INIT_LIST_HEAD(&mux->kcm_rx_waiters); in kcm_create()
1937 INIT_LIST_HEAD(&mux->kcm_tx_waiters); in kcm_create()
1939 INIT_LIST_HEAD(&mux->psocks); in kcm_create()
1940 INIT_LIST_HEAD(&mux->psocks_ready); in kcm_create()
1941 INIT_LIST_HEAD(&mux->psocks_avail); in kcm_create()
1943 mux->knet = knet; in kcm_create()
1947 list_add_rcu(&mux->kcm_mux_list, &knet->mux_list); in kcm_create()
1951 skb_queue_head_init(&mux->rx_hold_queue); in kcm_create()
1955 init_kcm_sock(kcm_sk(sk), mux); in kcm_create()