Lines Matching refs:path

102 	/* If the path is complete sw is not NULL */
116 static void tb_pci_init_path(struct tb_path *path)
118 path->egress_fc_enable = TB_PATH_SOURCE | TB_PATH_INTERNAL;
119 path->egress_shared_buffer = TB_PATH_NONE;
120 path->ingress_fc_enable = TB_PATH_ALL;
121 path->ingress_shared_buffer = TB_PATH_NONE;
122 path->priority = 3;
123 path->weight = 1;
124 path->drop_packages = 0;
125 path->nfc_credits = 0;
126 path->hops[0].initial_credits = 7;
127 if (path->path_length > 1)
128 path->hops[1].initial_credits =
129 tb_initial_credits(path->hops[1].in_port->sw);
144 struct tb_path *path;
161 path = tb_path_discover(down, TB_PCI_HOPID, NULL, -1,
163 if (!path) {
168 tunnel->paths[TB_PCI_PATH_UP] = path;
171 path = tb_path_discover(tunnel->dst_port, -1, down, TB_PCI_HOPID, NULL,
173 if (!path)
175 tunnel->paths[TB_PCI_PATH_DOWN] = path;
181 "path does not end on a PCIe adapter, cleaning up\n");
186 tb_tunnel_warn(tunnel, "path is not complete, cleaning up\n");
222 struct tb_path *path;
232 path = tb_path_alloc(tb, down, TB_PCI_HOPID, up, TB_PCI_HOPID, 0,
234 if (!path) {
238 tb_pci_init_path(path);
239 tunnel->paths[TB_PCI_PATH_DOWN] = path;
241 path = tb_path_alloc(tb, up, TB_PCI_HOPID, down, TB_PCI_HOPID, 0,
243 if (!path) {
247 tb_pci_init_path(path);
248 tunnel->paths[TB_PCI_PATH_UP] = path;
605 static void tb_dp_init_aux_path(struct tb_path *path)
609 path->egress_fc_enable = TB_PATH_SOURCE | TB_PATH_INTERNAL;
610 path->egress_shared_buffer = TB_PATH_NONE;
611 path->ingress_fc_enable = TB_PATH_ALL;
612 path->ingress_shared_buffer = TB_PATH_NONE;
613 path->priority = 2;
614 path->weight = 1;
616 for (i = 0; i < path->path_length; i++)
617 path->hops[i].initial_credits = 1;
620 static void tb_dp_init_video_path(struct tb_path *path, bool discover)
622 u32 nfc_credits = path->hops[0].in_port->config.nfc_credits;
624 path->egress_fc_enable = TB_PATH_NONE;
625 path->egress_shared_buffer = TB_PATH_NONE;
626 path->ingress_fc_enable = TB_PATH_NONE;
627 path->ingress_shared_buffer = TB_PATH_NONE;
628 path->priority = 1;
629 path->weight = 1;
632 path->nfc_credits = nfc_credits & ADP_CS_4_NFC_BUFFERS_MASK;
638 /* Leave some credits for AUX path */
639 path->nfc_credits = min(max_credits - 2, 12U);
658 struct tb_path *path;
672 path = tb_path_discover(in, TB_DP_VIDEO_HOPID, NULL, -1,
674 if (!path) {
679 tunnel->paths[TB_DP_VIDEO_PATH_OUT] = path;
682 path = tb_path_discover(in, TB_DP_AUX_TX_HOPID, NULL, -1, NULL, "AUX TX");
683 if (!path)
685 tunnel->paths[TB_DP_AUX_PATH_OUT] = path;
688 path = tb_path_discover(tunnel->dst_port, -1, in, TB_DP_AUX_RX_HOPID,
690 if (!path)
692 tunnel->paths[TB_DP_AUX_PATH_IN] = path;
697 tb_port_warn(in, "path does not end on a DP adapter, cleaning up\n");
708 tb_tunnel_warn(tunnel, "path is not complete, cleaning up\n");
744 struct tb_path *path;
763 path = tb_path_alloc(tb, in, TB_DP_VIDEO_HOPID, out, TB_DP_VIDEO_HOPID,
765 if (!path)
767 tb_dp_init_video_path(path, false);
768 paths[TB_DP_VIDEO_PATH_OUT] = path;
770 path = tb_path_alloc(tb, in, TB_DP_AUX_TX_HOPID, out,
772 if (!path)
774 tb_dp_init_aux_path(path);
775 paths[TB_DP_AUX_PATH_OUT] = path;
777 path = tb_path_alloc(tb, out, TB_DP_AUX_RX_HOPID, in,
779 if (!path)
781 tb_dp_init_aux_path(path);
782 paths[TB_DP_AUX_PATH_IN] = path;
809 static void tb_dma_init_path(struct tb_path *path, unsigned int isb,
814 path->egress_fc_enable = efc;
815 path->ingress_fc_enable = TB_PATH_ALL;
816 path->egress_shared_buffer = TB_PATH_NONE;
817 path->ingress_shared_buffer = isb;
818 path->priority = 5;
819 path->weight = 1;
820 path->clear_fc = true;
822 for (i = 0; i < path->path_length; i++)
823 path->hops[i].initial_credits = credits;
846 struct tb_path *path;
859 path = tb_path_alloc(tb, dst, receive_path, nhi, receive_ring, 0, "DMA RX");
860 if (!path) {
864 tb_dma_init_path(path, TB_PATH_NONE, TB_PATH_SOURCE | TB_PATH_INTERNAL,
866 tunnel->paths[TB_DMA_PATH_IN] = path;
868 path = tb_path_alloc(tb, nhi, transmit_ring, dst, transmit_path, 0, "DMA TX");
869 if (!path) {
873 tb_dma_init_path(path, TB_PATH_SOURCE, TB_PATH_ALL, credits);
874 tunnel->paths[TB_DMA_PATH_OUT] = path;
1008 static void tb_usb3_init_path(struct tb_path *path)
1010 path->egress_fc_enable = TB_PATH_SOURCE | TB_PATH_INTERNAL;
1011 path->egress_shared_buffer = TB_PATH_NONE;
1012 path->ingress_fc_enable = TB_PATH_ALL;
1013 path->ingress_shared_buffer = TB_PATH_NONE;
1014 path->priority = 3;
1015 path->weight = 3;
1016 path->drop_packages = 0;
1017 path->nfc_credits = 0;
1018 path->hops[0].initial_credits = 7;
1019 if (path->path_length > 1)
1020 path->hops[1].initial_credits =
1021 tb_initial_credits(path->hops[1].in_port->sw);
1036 struct tb_path *path;
1053 path = tb_path_discover(down, TB_USB3_HOPID, NULL, -1,
1055 if (!path) {
1060 tunnel->paths[TB_USB3_PATH_DOWN] = path;
1063 path = tb_path_discover(tunnel->dst_port, -1, down, TB_USB3_HOPID, NULL,
1065 if (!path)
1067 tunnel->paths[TB_USB3_PATH_UP] = path;
1073 "path does not end on an USB3 adapter, cleaning up\n");
1078 tb_tunnel_warn(tunnel, "path is not complete, cleaning up\n");
1142 struct tb_path *path;
1175 path = tb_path_alloc(tb, down, TB_USB3_HOPID, up, TB_USB3_HOPID, 0,
1177 if (!path) {
1181 tb_usb3_init_path(path);
1182 tunnel->paths[TB_USB3_PATH_DOWN] = path;
1184 path = tb_path_alloc(tb, up, TB_USB3_HOPID, down, TB_USB3_HOPID, 0,
1186 if (!path) {
1190 tb_usb3_init_path(path);
1191 tunnel->paths[TB_USB3_PATH_UP] = path;
1231 * tb_tunnel_is_invalid - check whether an activated path is still valid