Lines Matching refs:cf_sk

56 static int rx_flow_is_on(struct caifsock *cf_sk)
59 (void *) &cf_sk->flow_state);
62 static int tx_flow_is_on(struct caifsock *cf_sk)
65 (void *) &cf_sk->flow_state);
68 static void set_rx_flow_off(struct caifsock *cf_sk)
71 (void *) &cf_sk->flow_state);
74 static void set_rx_flow_on(struct caifsock *cf_sk)
77 (void *) &cf_sk->flow_state);
80 static void set_tx_flow_off(struct caifsock *cf_sk)
83 (void *) &cf_sk->flow_state);
86 static void set_tx_flow_on(struct caifsock *cf_sk)
89 (void *) &cf_sk->flow_state);
94 struct caifsock *cf_sk;
95 cf_sk = container_of(sk, struct caifsock, sk);
96 mutex_lock(&cf_sk->readlock);
101 struct caifsock *cf_sk;
102 cf_sk = container_of(sk, struct caifsock, sk);
103 mutex_unlock(&cf_sk->readlock);
106 static int sk_rcvbuf_lowwater(struct caifsock *cf_sk)
109 return cf_sk->sk.sk_rcvbuf / 4;
114 struct caifsock *cf_sk;
115 cf_sk = container_of(sk, struct caifsock, sk);
116 if (cf_sk->layer.dn && cf_sk->layer.dn->modemcmd)
117 cf_sk->layer.dn->modemcmd(cf_sk->layer.dn, mode);
129 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
133 (unsigned int)sk->sk_rcvbuf && rx_flow_is_on(cf_sk)) {
135 atomic_read(&cf_sk->sk.sk_rmem_alloc),
136 sk_rcvbuf_lowwater(cf_sk));
137 set_rx_flow_off(cf_sk);
145 if (!sk_rmem_schedule(sk, skb, skb->truesize) && rx_flow_is_on(cf_sk)) {
146 set_rx_flow_off(cf_sk);
167 struct caifsock *cf_sk;
170 cf_sk = container_of(layr, struct caifsock, layer);
173 if (unlikely(cf_sk->sk.sk_state != CAIF_CONNECTED)) {
177 caif_queue_rcv_skb(&cf_sk->sk, skb);
183 struct caifsock *cf_sk = container_of(layr, struct caifsock, layer);
184 sock_hold(&cf_sk->sk);
189 struct caifsock *cf_sk = container_of(layr, struct caifsock, layer);
190 sock_put(&cf_sk->sk);
198 struct caifsock *cf_sk = container_of(layr, struct caifsock, layer);
202 set_tx_flow_on(cf_sk);
203 cf_sk->sk.sk_state_change(&cf_sk->sk);
208 set_tx_flow_off(cf_sk);
209 cf_sk->sk.sk_state_change(&cf_sk->sk);
214 caif_client_register_refcnt(&cf_sk->layer,
216 cf_sk->sk.sk_state = CAIF_CONNECTED;
217 set_tx_flow_on(cf_sk);
218 cf_sk->sk.sk_shutdown = 0;
219 cf_sk->sk.sk_state_change(&cf_sk->sk);
224 cf_sk->sk.sk_state = CAIF_DISCONNECTED;
225 cf_sk->sk.sk_state_change(&cf_sk->sk);
230 cf_sk->sk.sk_err = ECONNREFUSED;
231 cf_sk->sk.sk_state = CAIF_DISCONNECTED;
232 cf_sk->sk.sk_shutdown = SHUTDOWN_MASK;
237 set_tx_flow_on(cf_sk);
238 cf_sk->sk.sk_state_change(&cf_sk->sk);
243 cf_sk->sk.sk_shutdown = SHUTDOWN_MASK;
244 cf_sk->sk.sk_err = ECONNRESET;
245 set_rx_flow_on(cf_sk);
246 cf_sk->sk.sk_error_report(&cf_sk->sk);
256 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
258 if (rx_flow_is_on(cf_sk))
261 if (atomic_read(&sk->sk_rmem_alloc) <= sk_rcvbuf_lowwater(cf_sk)) {
262 set_rx_flow_on(cf_sk);
464 static long caif_wait_for_flow_on(struct caifsock *cf_sk,
467 struct sock *sk = &cf_sk->sk;
471 if (tx_flow_is_on(cf_sk) &&
472 (!wait_writeable || sock_writeable(&cf_sk->sk)))
488 if (cf_sk->sk.sk_state != CAIF_CONNECTED)
500 static int transmit_skb(struct sk_buff *skb, struct caifsock *cf_sk,
507 cfpkt_set_prio(pkt, cf_sk->sk.sk_priority);
509 if (cf_sk->layer.dn == NULL) {
514 return cf_sk->layer.dn->transmit(cf_sk->layer.dn, pkt);
522 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
528 caif_assert(cf_sk);
554 if (cf_sk->sk.sk_state != CAIF_CONNECTED ||
561 if (len > cf_sk->maxframe && cf_sk->sk.sk_protocol != CAIFPROTO_RFM)
564 buffer_size = len + cf_sk->headroom + cf_sk->tailroom;
572 skb_reserve(skb, cf_sk->headroom);
578 ret = transmit_skb(skb, cf_sk, noblock, timeo);
598 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
612 timeo = caif_wait_for_flow_on(cf_sk, 1, timeo, &err);
621 if (size > cf_sk->maxframe)
622 size = cf_sk->maxframe;
632 size + cf_sk->headroom +
633 cf_sk->tailroom,
639 skb_reserve(skb, cf_sk->headroom);
654 err = transmit_skb(skb, cf_sk,
677 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
680 if (cf_sk->sk.sk_socket->state != SS_UNCONNECTED)
691 lock_sock(&(cf_sk->sk));
692 cf_sk->conn_req.link_selector = linksel;
693 release_sock(&cf_sk->sk);
699 if (cf_sk->sk.sk_protocol != CAIFPROTO_UTIL)
701 lock_sock(&(cf_sk->sk));
702 if (ol > sizeof(cf_sk->conn_req.param.data) ||
703 copy_from_sockptr(&cf_sk->conn_req.param.data, ov, ol)) {
704 release_sock(&cf_sk->sk);
707 cf_sk->conn_req.param.size = ol;
708 release_sock(&cf_sk->sk);
749 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
792 caif_disconnect_client(sock_net(sk), &cf_sk->layer);
793 caif_free_client(&cf_sk->layer);
806 sk_stream_kill_queues(&cf_sk->sk);
812 memcpy(&cf_sk->conn_req.sockaddr, uaddr,
821 if (cf_sk->sk.sk_priority > CAIF_PRIO_MAX)
822 cf_sk->conn_req.priority = CAIF_PRIO_MAX;
823 else if (cf_sk->sk.sk_priority < CAIF_PRIO_MIN)
824 cf_sk->conn_req.priority = CAIF_PRIO_MIN;
826 cf_sk->conn_req.priority = cf_sk->sk.sk_priority;
829 cf_sk->conn_req.ifindex = cf_sk->sk.sk_bound_dev_if;
831 cf_sk->layer.receive = caif_sktrecv_cb;
833 err = caif_connect_client(sock_net(sk), &cf_sk->conn_req,
834 &cf_sk->layer, &ifindex, &headroom, &tailroom);
837 cf_sk->sk.sk_socket->state = SS_UNCONNECTED;
838 cf_sk->sk.sk_state = CAIF_DISCONNECTED;
849 cf_sk->headroom = LL_RESERVED_SPACE_EXTRA(dev, headroom);
853 cf_sk->tailroom = tailroom;
854 cf_sk->maxframe = mtu - (headroom + tailroom);
855 if (cf_sk->maxframe < 1) {
902 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
907 set_tx_flow_off(cf_sk);
919 WARN_ON(IS_ERR(cf_sk->debugfs_socket_dir));
920 debugfs_remove_recursive(cf_sk->debugfs_socket_dir);
922 lock_sock(&(cf_sk->sk));
926 caif_disconnect_client(sock_net(sk), &cf_sk->layer);
927 cf_sk->sk.sk_socket->state = SS_DISCONNECTING;
931 sk_stream_kill_queues(&cf_sk->sk);
943 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
965 if (sock_writeable(sk) && tx_flow_is_on(cf_sk))
1014 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
1022 sk_stream_kill_queues(&cf_sk->sk);
1024 caif_free_client(&cf_sk->layer);
1031 struct caifsock *cf_sk = NULL;
1065 cf_sk = container_of(sk, struct caifsock, sk);
1086 lock_sock(&(cf_sk->sk));
1092 mutex_init(&cf_sk->readlock); /* single task reading lock */
1093 cf_sk->layer.ctrlcmd = caif_ctrl_cb;
1094 cf_sk->sk.sk_socket->state = SS_UNCONNECTED;
1095 cf_sk->sk.sk_state = CAIF_DISCONNECTED;
1097 set_tx_flow_off(cf_sk);
1098 set_rx_flow_on(cf_sk);
1101 cf_sk->conn_req.link_selector = CAIF_LINK_LOW_LATENCY;
1102 cf_sk->conn_req.protocol = protocol;
1103 release_sock(&cf_sk->sk);