Lines Matching refs:vsocket

64 	struct vhost_user_socket *vsocket;  member
83 static int create_unix_socket(struct vhost_user_socket *vsocket);
84 static int vhost_user_start_client(struct vhost_user_socket *vsocket);
202 vhost_user_add_connection(int fd, struct vhost_user_socket *vsocket) in vhost_user_add_connection() argument
210 if (vsocket == NULL) in vhost_user_add_connection()
224 size = strnlen(vsocket->path, PATH_MAX); in vhost_user_add_connection()
225 vhost_set_ifname(vid, vsocket->path, size); in vhost_user_add_connection()
227 vhost_set_builtin_virtio_net(vid, vsocket->use_builtin_virtio_net); in vhost_user_add_connection()
229 vhost_attach_vdpa_device(vid, vsocket->vdpa_dev); in vhost_user_add_connection()
231 if (vsocket->extbuf) in vhost_user_add_connection()
234 if (vsocket->linearbuf) in vhost_user_add_connection()
237 if (vsocket->async_copy) { in vhost_user_add_connection()
246 if (vsocket->notify_ops->new_connection) { in vhost_user_add_connection()
247 ret = vsocket->notify_ops->new_connection(vid); in vhost_user_add_connection()
257 conn->vsocket = vsocket; in vhost_user_add_connection()
266 if (vsocket->notify_ops->destroy_connection) in vhost_user_add_connection()
267 vsocket->notify_ops->destroy_connection(conn->vid); in vhost_user_add_connection()
272 pthread_mutex_lock(&vsocket->conn_mutex); in vhost_user_add_connection()
273 TAILQ_INSERT_TAIL(&vsocket->conn_list, conn, next); in vhost_user_add_connection()
274 pthread_mutex_unlock(&vsocket->conn_mutex); in vhost_user_add_connection()
290 struct vhost_user_socket *vsocket = dat; in vhost_user_server_new_connection() local
297 vhost_user_add_connection(fd, vsocket); in vhost_user_server_new_connection()
304 struct vhost_user_socket *vsocket = conn->vsocket; in vhost_user_read_cb() local
317 if (vsocket->notify_ops->destroy_connection) in vhost_user_read_cb()
318 vsocket->notify_ops->destroy_connection(conn->vid); in vhost_user_read_cb()
322 if (vsocket->reconnect) { in vhost_user_read_cb()
323 create_unix_socket(vsocket); in vhost_user_read_cb()
324 vhost_user_start_client(vsocket); in vhost_user_read_cb()
327 pthread_mutex_lock(&vsocket->conn_mutex); in vhost_user_read_cb()
328 TAILQ_REMOVE(&vsocket->conn_list, conn, next); in vhost_user_read_cb()
329 pthread_mutex_unlock(&vsocket->conn_mutex); in vhost_user_read_cb()
336 create_unix_socket(struct vhost_user_socket *vsocket) in create_unix_socket() argument
339 struct sockaddr_un *un = &vsocket->un; in create_unix_socket()
345 vsocket->is_server ? "server" : "client", fd); in create_unix_socket()
347 if (!vsocket->is_server && fcntl(fd, F_SETFL, O_NONBLOCK)) { in create_unix_socket()
357 strncpy(un->sun_path, vsocket->path, sizeof(un->sun_path)); in create_unix_socket()
360 vsocket->socket_fd = fd; in create_unix_socket()
365 vhost_user_start_server(struct vhost_user_socket *vsocket) in vhost_user_start_server() argument
368 int fd = vsocket->socket_fd; in vhost_user_start_server()
369 const char *path = vsocket->path; in vhost_user_start_server()
381 ret = bind(fd, (struct sockaddr *)&vsocket->un, sizeof(vsocket->un)); in vhost_user_start_server()
395 NULL, vsocket); in vhost_user_start_server()
413 struct vhost_user_socket *vsocket; member
481 "%s: connected\n", reconn->vsocket->path); in vhost_user_client_reconnect()
482 vhost_user_add_connection(reconn->fd, reconn->vsocket); in vhost_user_client_reconnect()
521 vhost_user_start_client(struct vhost_user_socket *vsocket) in vhost_user_start_client() argument
524 int fd = vsocket->socket_fd; in vhost_user_start_client()
525 const char *path = vsocket->path; in vhost_user_start_client()
528 ret = vhost_user_connect_nonblock(fd, (struct sockaddr *)&vsocket->un, in vhost_user_start_client()
529 sizeof(vsocket->un)); in vhost_user_start_client()
531 vhost_user_add_connection(fd, vsocket); in vhost_user_start_client()
539 if (ret == -2 || !vsocket->reconnect) { in vhost_user_start_client()
552 reconn->un = vsocket->un; in vhost_user_start_client()
554 reconn->vsocket = vsocket; in vhost_user_start_client()
571 struct vhost_user_socket *vsocket = vhost_user.vsockets[i]; in find_vhost_user_socket() local
573 if (!strcmp(vsocket->path, path)) in find_vhost_user_socket()
574 return vsocket; in find_vhost_user_socket()
584 struct vhost_user_socket *vsocket; in rte_vhost_driver_attach_vdpa_device() local
590 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_attach_vdpa_device()
591 if (vsocket) in rte_vhost_driver_attach_vdpa_device()
592 vsocket->vdpa_dev = dev; in rte_vhost_driver_attach_vdpa_device()
595 return vsocket ? 0 : -1; in rte_vhost_driver_attach_vdpa_device()
601 struct vhost_user_socket *vsocket; in rte_vhost_driver_detach_vdpa_device() local
604 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_detach_vdpa_device()
605 if (vsocket) in rte_vhost_driver_detach_vdpa_device()
606 vsocket->vdpa_dev = NULL; in rte_vhost_driver_detach_vdpa_device()
609 return vsocket ? 0 : -1; in rte_vhost_driver_detach_vdpa_device()
615 struct vhost_user_socket *vsocket; in rte_vhost_driver_get_vdpa_device() local
619 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_get_vdpa_device()
620 if (vsocket) in rte_vhost_driver_get_vdpa_device()
621 dev = vsocket->vdpa_dev; in rte_vhost_driver_get_vdpa_device()
630 struct vhost_user_socket *vsocket; in rte_vhost_driver_disable_features() local
633 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_disable_features()
640 if (vsocket) in rte_vhost_driver_disable_features()
641 vsocket->features &= ~features; in rte_vhost_driver_disable_features()
644 return vsocket ? 0 : -1; in rte_vhost_driver_disable_features()
650 struct vhost_user_socket *vsocket; in rte_vhost_driver_enable_features() local
653 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_enable_features()
654 if (vsocket) { in rte_vhost_driver_enable_features()
655 if ((vsocket->supported_features & features) != features) { in rte_vhost_driver_enable_features()
663 vsocket->features |= features; in rte_vhost_driver_enable_features()
667 return vsocket ? 0 : -1; in rte_vhost_driver_enable_features()
673 struct vhost_user_socket *vsocket; in rte_vhost_driver_set_features() local
676 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_set_features()
677 if (vsocket) { in rte_vhost_driver_set_features()
678 vsocket->supported_features = features; in rte_vhost_driver_set_features()
679 vsocket->features = features; in rte_vhost_driver_set_features()
684 vsocket->use_builtin_virtio_net = false; in rte_vhost_driver_set_features()
688 return vsocket ? 0 : -1; in rte_vhost_driver_set_features()
694 struct vhost_user_socket *vsocket; in rte_vhost_driver_get_features() local
700 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_get_features()
701 if (!vsocket) { in rte_vhost_driver_get_features()
708 vdpa_dev = vsocket->vdpa_dev; in rte_vhost_driver_get_features()
710 *features = vsocket->features; in rte_vhost_driver_get_features()
722 *features = vsocket->features & vdpa_features; in rte_vhost_driver_get_features()
733 struct vhost_user_socket *vsocket; in rte_vhost_driver_set_protocol_features() local
736 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_set_protocol_features()
737 if (vsocket) in rte_vhost_driver_set_protocol_features()
738 vsocket->protocol_features = protocol_features; in rte_vhost_driver_set_protocol_features()
740 return vsocket ? 0 : -1; in rte_vhost_driver_set_protocol_features()
747 struct vhost_user_socket *vsocket; in rte_vhost_driver_get_protocol_features() local
753 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_get_protocol_features()
754 if (!vsocket) { in rte_vhost_driver_get_protocol_features()
761 vdpa_dev = vsocket->vdpa_dev; in rte_vhost_driver_get_protocol_features()
763 *protocol_features = vsocket->protocol_features; in rte_vhost_driver_get_protocol_features()
776 *protocol_features = vsocket->protocol_features in rte_vhost_driver_get_protocol_features()
787 struct vhost_user_socket *vsocket; in rte_vhost_driver_get_queue_num() local
793 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_get_queue_num()
794 if (!vsocket) { in rte_vhost_driver_get_queue_num()
801 vdpa_dev = vsocket->vdpa_dev; in rte_vhost_driver_get_queue_num()
823 vhost_user_socket_mem_free(struct vhost_user_socket *vsocket) in vhost_user_socket_mem_free() argument
825 if (vsocket && vsocket->path) { in vhost_user_socket_mem_free()
826 free(vsocket->path); in vhost_user_socket_mem_free()
827 vsocket->path = NULL; in vhost_user_socket_mem_free()
830 if (vsocket) { in vhost_user_socket_mem_free()
831 free(vsocket); in vhost_user_socket_mem_free()
832 vsocket = NULL; in vhost_user_socket_mem_free()
845 struct vhost_user_socket *vsocket; in rte_vhost_driver_register() local
858 vsocket = malloc(sizeof(struct vhost_user_socket)); in rte_vhost_driver_register()
859 if (!vsocket) in rte_vhost_driver_register()
861 memset(vsocket, 0, sizeof(struct vhost_user_socket)); in rte_vhost_driver_register()
862 vsocket->path = strdup(path); in rte_vhost_driver_register()
863 if (vsocket->path == NULL) { in rte_vhost_driver_register()
866 vhost_user_socket_mem_free(vsocket); in rte_vhost_driver_register()
869 TAILQ_INIT(&vsocket->conn_list); in rte_vhost_driver_register()
870 ret = pthread_mutex_init(&vsocket->conn_mutex, NULL); in rte_vhost_driver_register()
876 vsocket->vdpa_dev = NULL; in rte_vhost_driver_register()
877 vsocket->extbuf = flags & RTE_VHOST_USER_EXTBUF_SUPPORT; in rte_vhost_driver_register()
878 vsocket->linearbuf = flags & RTE_VHOST_USER_LINEARBUF_SUPPORT; in rte_vhost_driver_register()
879 vsocket->async_copy = flags & RTE_VHOST_USER_ASYNC_COPY; in rte_vhost_driver_register()
881 if (vsocket->async_copy && in rte_vhost_driver_register()
902 vsocket->use_builtin_virtio_net = true; in rte_vhost_driver_register()
903 vsocket->supported_features = VIRTIO_NET_SUPPORTED_FEATURES; in rte_vhost_driver_register()
904 vsocket->features = VIRTIO_NET_SUPPORTED_FEATURES; in rte_vhost_driver_register()
905 vsocket->protocol_features = VHOST_USER_PROTOCOL_FEATURES; in rte_vhost_driver_register()
907 if (vsocket->async_copy) { in rte_vhost_driver_register()
908 vsocket->supported_features &= ~(1ULL << VHOST_F_LOG_ALL); in rte_vhost_driver_register()
909 vsocket->features &= ~(1ULL << VHOST_F_LOG_ALL); in rte_vhost_driver_register()
919 if (vsocket->linearbuf && !vsocket->extbuf) { in rte_vhost_driver_register()
928 vsocket->supported_features &= ~seg_offload_features; in rte_vhost_driver_register()
929 vsocket->features &= ~seg_offload_features; in rte_vhost_driver_register()
933 vsocket->supported_features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM); in rte_vhost_driver_register()
934 vsocket->features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM); in rte_vhost_driver_register()
938 vsocket->protocol_features &= in rte_vhost_driver_register()
950 vsocket->reconnect = !(flags & RTE_VHOST_USER_NO_RECONNECT); in rte_vhost_driver_register()
951 if (vsocket->reconnect && reconn_tid == 0) { in rte_vhost_driver_register()
956 vsocket->is_server = true; in rte_vhost_driver_register()
958 ret = create_unix_socket(vsocket); in rte_vhost_driver_register()
963 vhost_user.vsockets[vhost_user.vsocket_cnt++] = vsocket; in rte_vhost_driver_register()
969 if (pthread_mutex_destroy(&vsocket->conn_mutex)) { in rte_vhost_driver_register()
974 vhost_user_socket_mem_free(vsocket); in rte_vhost_driver_register()
982 vhost_user_remove_reconnect(struct vhost_user_socket *vsocket) in vhost_user_remove_reconnect() argument
993 if (reconn->vsocket == vsocket) { in vhost_user_remove_reconnect()
1022 struct vhost_user_socket *vsocket = vhost_user.vsockets[i]; in rte_vhost_driver_unregister() local
1024 if (!strcmp(vsocket->path, path)) { in rte_vhost_driver_unregister()
1025 pthread_mutex_lock(&vsocket->conn_mutex); in rte_vhost_driver_unregister()
1026 for (conn = TAILQ_FIRST(&vsocket->conn_list); in rte_vhost_driver_unregister()
1040 &vsocket->conn_mutex); in rte_vhost_driver_unregister()
1050 TAILQ_REMOVE(&vsocket->conn_list, conn, next); in rte_vhost_driver_unregister()
1053 pthread_mutex_unlock(&vsocket->conn_mutex); in rte_vhost_driver_unregister()
1055 if (vsocket->is_server) { in rte_vhost_driver_unregister()
1062 vsocket->socket_fd) == -1) { in rte_vhost_driver_unregister()
1067 close(vsocket->socket_fd); in rte_vhost_driver_unregister()
1069 } else if (vsocket->reconnect) { in rte_vhost_driver_unregister()
1070 vhost_user_remove_reconnect(vsocket); in rte_vhost_driver_unregister()
1073 pthread_mutex_destroy(&vsocket->conn_mutex); in rte_vhost_driver_unregister()
1074 vhost_user_socket_mem_free(vsocket); in rte_vhost_driver_unregister()
1096 struct vhost_user_socket *vsocket; in rte_vhost_driver_callback_register() local
1099 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_callback_register()
1100 if (vsocket) in rte_vhost_driver_callback_register()
1101 vsocket->notify_ops = ops; in rte_vhost_driver_callback_register()
1104 return vsocket ? 0 : -1; in rte_vhost_driver_callback_register()
1110 struct vhost_user_socket *vsocket; in vhost_driver_callback_get() local
1113 vsocket = find_vhost_user_socket(path); in vhost_driver_callback_get()
1116 return vsocket ? vsocket->notify_ops : NULL; in vhost_driver_callback_get()
1122 struct vhost_user_socket *vsocket; in rte_vhost_driver_start() local
1126 vsocket = find_vhost_user_socket(path); in rte_vhost_driver_start()
1129 if (!vsocket) in rte_vhost_driver_start()
1155 if (vsocket->is_server) in rte_vhost_driver_start()
1156 return vhost_user_start_server(vsocket); in rte_vhost_driver_start()
1158 return vhost_user_start_client(vsocket); in rte_vhost_driver_start()