Lines Matching refs:socket_client
57 static void batadv_socket_add_packet(struct batadv_socket_client *socket_client,
72 struct batadv_socket_client *socket_client; in batadv_socket_open() local
79 socket_client = kmalloc(sizeof(*socket_client), GFP_KERNEL); in batadv_socket_open()
80 if (!socket_client) { in batadv_socket_open()
87 batadv_socket_client_hash[i] = socket_client; in batadv_socket_open()
94 kfree(socket_client); in batadv_socket_open()
99 INIT_LIST_HEAD(&socket_client->queue_list); in batadv_socket_open()
100 socket_client->queue_len = 0; in batadv_socket_open()
101 socket_client->index = i; in batadv_socket_open()
102 socket_client->bat_priv = inode->i_private; in batadv_socket_open()
103 spin_lock_init(&socket_client->lock); in batadv_socket_open()
104 init_waitqueue_head(&socket_client->queue_wait); in batadv_socket_open()
106 file->private_data = socket_client; in batadv_socket_open()
136 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_read() local
141 if ((file->f_flags & O_NONBLOCK) && socket_client->queue_len == 0) in batadv_socket_read()
150 error = wait_event_interruptible(socket_client->queue_wait, in batadv_socket_read()
151 socket_client->queue_len); in batadv_socket_read()
156 spin_lock_bh(&socket_client->lock); in batadv_socket_read()
158 socket_packet = list_first_entry(&socket_client->queue_list, in batadv_socket_read()
161 socket_client->queue_len--; in batadv_socket_read()
163 spin_unlock_bh(&socket_client->lock); in batadv_socket_read()
179 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_write() local
180 struct batadv_priv *bat_priv = socket_client->bat_priv; in batadv_socket_write()
271 icmp_header->uid = socket_client->index; in batadv_socket_write()
276 batadv_socket_add_packet(socket_client, icmp_header, in batadv_socket_write()
288 batadv_socket_add_packet(socket_client, icmp_header, packet_len); in batadv_socket_write()
303 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_poll() local
305 poll_wait(file, &socket_client->queue_wait, wait); in batadv_socket_poll()
307 if (socket_client->queue_len > 0) in batadv_socket_poll()
354 static void batadv_socket_add_packet(struct batadv_socket_client *socket_client, in batadv_socket_add_packet() argument
375 spin_lock_bh(&socket_client->lock); in batadv_socket_add_packet()
381 spin_unlock_bh(&socket_client->lock); in batadv_socket_add_packet()
386 list_add_tail(&socket_packet->list, &socket_client->queue_list); in batadv_socket_add_packet()
387 socket_client->queue_len++; in batadv_socket_add_packet()
389 if (socket_client->queue_len > 100) { in batadv_socket_add_packet()
390 socket_packet = list_first_entry(&socket_client->queue_list, in batadv_socket_add_packet()
396 socket_client->queue_len--; in batadv_socket_add_packet()
399 spin_unlock_bh(&socket_client->lock); in batadv_socket_add_packet()
401 wake_up(&socket_client->queue_wait); in batadv_socket_add_packet()