Lines Matching refs:socket_client
29 static void batadv_socket_add_packet(struct batadv_socket_client *socket_client,
41 struct batadv_socket_client *socket_client; in batadv_socket_open() local
48 socket_client = kmalloc(sizeof(*socket_client), GFP_KERNEL); in batadv_socket_open()
49 if (!socket_client) { in batadv_socket_open()
56 batadv_socket_client_hash[i] = socket_client; in batadv_socket_open()
63 kfree(socket_client); in batadv_socket_open()
68 INIT_LIST_HEAD(&socket_client->queue_list); in batadv_socket_open()
69 socket_client->queue_len = 0; in batadv_socket_open()
70 socket_client->index = i; in batadv_socket_open()
71 socket_client->bat_priv = inode->i_private; in batadv_socket_open()
72 spin_lock_init(&socket_client->lock); in batadv_socket_open()
73 init_waitqueue_head(&socket_client->queue_wait); in batadv_socket_open()
75 file->private_data = socket_client; in batadv_socket_open()
82 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_release() local
86 spin_lock_bh(&socket_client->lock); in batadv_socket_release()
89 list_for_each_safe(list_pos, list_pos_tmp, &socket_client->queue_list) { in batadv_socket_release()
97 batadv_socket_client_hash[socket_client->index] = NULL; in batadv_socket_release()
98 spin_unlock_bh(&socket_client->lock); in batadv_socket_release()
100 kfree(socket_client); in batadv_socket_release()
109 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_read() local
114 if ((file->f_flags & O_NONBLOCK) && (socket_client->queue_len == 0)) in batadv_socket_read()
123 error = wait_event_interruptible(socket_client->queue_wait, in batadv_socket_read()
124 socket_client->queue_len); in batadv_socket_read()
129 spin_lock_bh(&socket_client->lock); in batadv_socket_read()
131 socket_packet = list_first_entry(&socket_client->queue_list, in batadv_socket_read()
134 socket_client->queue_len--; in batadv_socket_read()
136 spin_unlock_bh(&socket_client->lock); in batadv_socket_read()
152 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_write() local
153 struct batadv_priv *bat_priv = socket_client->bat_priv; in batadv_socket_write()
244 icmp_header->uid = socket_client->index; in batadv_socket_write()
249 batadv_socket_add_packet(socket_client, icmp_header, in batadv_socket_write()
261 batadv_socket_add_packet(socket_client, icmp_header, packet_len); in batadv_socket_write()
276 struct batadv_socket_client *socket_client = file->private_data; in batadv_socket_poll() local
278 poll_wait(file, &socket_client->queue_wait, wait); in batadv_socket_poll()
280 if (socket_client->queue_len > 0) in batadv_socket_poll()
321 static void batadv_socket_add_packet(struct batadv_socket_client *socket_client, in batadv_socket_add_packet() argument
342 spin_lock_bh(&socket_client->lock); in batadv_socket_add_packet()
348 spin_unlock_bh(&socket_client->lock); in batadv_socket_add_packet()
353 list_add_tail(&socket_packet->list, &socket_client->queue_list); in batadv_socket_add_packet()
354 socket_client->queue_len++; in batadv_socket_add_packet()
356 if (socket_client->queue_len > 100) { in batadv_socket_add_packet()
357 socket_packet = list_first_entry(&socket_client->queue_list, in batadv_socket_add_packet()
363 socket_client->queue_len--; in batadv_socket_add_packet()
366 spin_unlock_bh(&socket_client->lock); in batadv_socket_add_packet()
368 wake_up(&socket_client->queue_wait); in batadv_socket_add_packet()