• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/hyperv/hvsock/

Lines Matching refs:pcb

192 __hvs_remove_pcb_from_list(struct hvs_pcb *pcb, unsigned char list)
196 HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: pcb is %p\n", __func__, pcb);
198 if (!pcb)
203 if (p == pcb)
209 if (p == pcb)
210 LIST_REMOVE(pcb, connected_next);
217 struct hvs_pcb *pcb = so2hvspcb(so);
219 HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: pcb is %p\n", __func__, pcb);
221 __hvs_remove_pcb_from_list(pcb, list);
227 struct hvs_pcb *pcb = so2hvspcb(so);
231 pcb, bound_next);
235 pcb, connected_next);
356 struct hvs_pcb *pcb = so2hvspcb(so);
370 if (pcb != NULL)
372 pcb = malloc(sizeof(struct hvs_pcb), M_HVSOCK, M_NOWAIT | M_ZERO);
373 if (pcb == NULL)
376 pcb->so = so;
377 so->so_pcb = (void *)pcb;
385 struct hvs_pcb *pcb;
394 pcb = so2hvspcb(so);
395 if (pcb == NULL) {
401 bzero(pcb, sizeof(*pcb));
402 free(pcb, M_HVSOCK);
413 struct hvs_pcb *pcb = so2hvspcb(so);
424 if (pcb == NULL) {
453 hvs_addr_set(&pcb->local_addr, sa->hvs_port);
454 hvs_addr_set(&pcb->remote_addr, HVADDR_PORT_ANY);
465 struct hvs_pcb *pcb = so2hvspcb(so);
472 if (pcb == NULL)
476 bound_so = hvs_find_socket_on_list(&pcb->local_addr, HVS_LIST_BOUND);
497 struct hvs_pcb *pcb = so2hvspcb(so);
502 if (pcb == NULL)
505 *nam = sodupsockaddr((struct sockaddr *) &pcb->remote_addr,
514 struct hvs_pcb *pcb = so2hvspcb(so);
523 if (pcb == NULL)
548 hvs_addr_set(&pcb->local_addr, 0);
555 pcb->local_addr.hvs_port = i;
557 if (__hvs_find_socket_on_list(&pcb->local_addr,
563 __func__, pcb->local_addr.hvs_port);
572 pcb->vm_srv_id = srv_id_template;
573 set_port_by_srv_id(&pcb->vm_srv_id, pcb->local_addr.hvs_port);
575 pcb->host_srv_id = srv_id_template;
576 set_port_by_srv_id(&pcb->host_srv_id, raddr->hvs_port);
577 hvs_addr_set(&pcb->remote_addr, raddr->hvs_port);
589 hvsock_print_guid(&pcb->vm_srv_id);
591 hvsock_print_guid(&pcb->host_srv_id);
597 vmbus_req_tl_connect(&pcb->vm_srv_id, &pcb->host_srv_id);
605 struct hvs_pcb *pcb;
614 pcb = so2hvspcb(so);
615 if (pcb == NULL) {
639 struct hvs_pcb *pcb = so2hvspcb(so);
651 if (pcb == NULL)
696 (canread = hvsock_canread_check(pcb)) > 0) {
701 pcb->recv_data_off));
703 error = vmbus_chan_recv_peek_call(pcb->chan, to_read,
704 sizeof(struct hvs_pkt_header) + pcb->recv_data_off,
716 pcb->recv_data_len -= to_read;
717 pcb->recv_data_off += to_read;
776 __func__, vmbus_chan_read_available(pcb->chan));
806 struct hvs_pcb *pcb = so2hvspcb(so);
818 if (pcb == NULL)
846 canwrite = hvsock_canwrite_check(pcb);
876 vmbus_chan_write_available(pcb->chan));
887 error = hvsock_send_data(pcb->chan, uio, to_write, sb);
903 struct hvs_pcb *pcb = so2hvspcb(so);
908 if (pcb == NULL)
911 *nam = sodupsockaddr((struct sockaddr *) &pcb->remote_addr, M_NOWAIT);
919 struct hvs_pcb *pcb = so2hvspcb(so);
924 if (pcb == NULL)
927 *nam = sodupsockaddr((struct sockaddr *) &pcb->local_addr, M_NOWAIT);
935 struct hvs_pcb *pcb;
944 pcb = so2hvspcb(so);
945 if (!pcb) {
954 (void) hvsock_send_data(pcb->chan, NULL, 0, NULL);
961 pcb->chan = NULL;
962 pcb->so = NULL;
979 struct hvs_pcb *pcb = so2hvspcb(so);
988 if (pcb == NULL) {
1011 struct hvs_pcb *pcb = so2hvspcb(so);
1017 if (pcb == NULL)
1040 (void) hvsock_send_data(pcb->chan, NULL, 0, sb);
1102 struct hvs_pcb *pcb;
1117 struct hvs_pcb *pcb = (struct hvs_pcb *) context;
1122 "%s: host send us a wakeup on rb data, pcb = %p\n",
1123 __func__, pcb);
1131 so = hsvpcb2so(pcb);
1133 if (pcb->chan != NULL && so != NULL) {
1141 vmbus_chan_read_available(pcb->chan));
1143 if (hvsock_chan_readable(pcb->chan))
1152 canwrite = hvsock_canwrite_check(pcb);
1272 hvsock_canread_check(struct hvs_pcb *pcb)
1279 if (pcb == NULL || pcb->chan == NULL) {
1280 pcb->so->so_error = EIO;
1285 if (pcb->recv_data_len > 0)
1286 return (pcb->recv_data_len);
1288 if (pcb->rb_init)
1290 VMBUS_CHANPKT_GETLEN(pcb->hvs_pkt.chan_pkt_hdr.cph_tlen);
1294 bytes_canread = vmbus_chan_read_available(pcb->chan);
1300 if (pcb->rb_init && bytes_canread == (advance + sizeof(uint64_t))) {
1306 error = vmbus_chan_recv_idxadv(pcb->chan, advance);
1313 pcb->rb_init = false;
1314 pcb->recv_data_len = 0;
1315 pcb->recv_data_off = 0;
1316 bytes_canread = vmbus_chan_read_available(pcb->chan);
1334 error = vmbus_chan_recv_peek(pcb->chan, &pcb->hvs_pkt,
1348 tlen = VMBUS_CHANPKT_GETLEN(pcb->hvs_pkt.chan_pkt_hdr.cph_tlen);
1349 hlen = VMBUS_CHANPKT_GETLEN(pcb->hvs_pkt.chan_pkt_hdr.cph_hlen);
1350 dlen = pcb->hvs_pkt.vmpipe_pkt_hdr.vmpipe_data_size;
1357 pcb->so->so_error = EIO;
1360 if (pcb->rb_init == false)
1361 pcb->rb_init = true;
1372 pcb->so->so_error = ESHUTDOWN;
1378 pcb->recv_data_len = dlen;
1379 pcb->recv_data_off = 0;
1381 return (pcb->recv_data_len);
1385 hvsock_canwrite_check(struct hvs_pcb *pcb)
1390 if (pcb == NULL || pcb->chan == NULL)
1393 writeable = vmbus_chan_write_available(pcb->chan);
1429 struct hvs_pcb *pcb = so2hvspcb(so);
1451 hvsock_chan_cb, pcb);
1481 struct hvs_pcb *new_pcb, *pcb;
1499 * channel and filling out its pcb information.
1517 pcb = so->so_pcb;
1520 hvs_addr_set(&(new_pcb->local_addr), pcb->local_addr.hvs_port);
1533 sc->pcb = new_pcb;
1550 struct hvs_pcb *pcb;
1559 pcb = so->so_pcb;
1560 pcb->chan = chan;
1561 pcb->recv_data_len = 0;
1562 pcb->recv_data_off = 0;
1563 pcb->rb_init = false;
1584 struct hvs_pcb *pcb;
1626 pcb = so->so_pcb;
1627 if (pcb && pcb->so) {
1628 sc->pcb = so2hvspcb(so);
1689 if (sc->pcb != NULL) {
1692 so = hsvpcb2so(sc->pcb);
1701 __hvs_remove_pcb_from_list(sc->pcb,
1737 bzero(sc->pcb, sizeof(struct hvs_pcb));
1738 free(sc->pcb, M_HVSOCK);
1739 sc->pcb = NULL;