MCPcopy Create free account
hub / github.com/F-Stack/f-stack / tap_dev_close

Function tap_dev_close

dpdk/drivers/net/tap/rte_eth_tap.c:1118–1199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1116}
1117
1118static int
1119tap_dev_close(struct rte_eth_dev *dev)
1120{
1121 int i;
1122 struct pmd_internals *internals = dev->data->dev_private;
1123 struct pmd_process_private *process_private = dev->process_private;
1124 struct rx_queue *rxq;
1125
1126 if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
1127 rte_free(dev->process_private);
1128 if (tap_devices_count == 1)
1129 rte_mp_action_unregister(TAP_MP_REQ_START_RXTX);
1130 tap_devices_count--;
1131 return 0;
1132 }
1133
1134 if (!internals->persist)
1135 tap_link_set_down(dev);
1136 if (internals->nlsk_fd != -1) {
1137 tap_flow_flush(dev, NULL);
1138 tap_flow_implicit_flush(internals, NULL);
1139 tap_nl_final(internals->nlsk_fd);
1140 internals->nlsk_fd = -1;
1141 }
1142
1143 for (i = 0; i < RTE_PMD_TAP_MAX_QUEUES; i++) {
1144 if (process_private->rxq_fds[i] != -1) {
1145 rxq = &internals->rxq[i];
1146 close(process_private->rxq_fds[i]);
1147 process_private->rxq_fds[i] = -1;
1148 tap_rxq_pool_free(rxq->pool);
1149 rte_free(rxq->iovecs);
1150 rxq->pool = NULL;
1151 rxq->iovecs = NULL;
1152 }
1153 if (process_private->txq_fds[i] != -1) {
1154 close(process_private->txq_fds[i]);
1155 process_private->txq_fds[i] = -1;
1156 }
1157 }
1158
1159 if (internals->remote_if_index) {
1160 /* Restore initial remote state */
1161 int ret = ioctl(internals->ioctl_sock, SIOCSIFFLAGS,
1162 &internals->remote_initial_flags);
1163 if (ret)
1164 TAP_LOG(ERR, "restore remote state failed: %d", ret);
1165
1166 }
1167
1168 rte_mempool_free(internals->gso_ctx_mp);
1169 internals->gso_ctx_mp = NULL;
1170
1171 if (internals->ka_fd != -1) {
1172 close(internals->ka_fd);
1173 internals->ka_fd = -1;
1174 }
1175

Callers 1

rte_pmd_tap_removeFunction · 0.85

Calls 13

rte_eal_process_typeFunction · 0.85
rte_freeFunction · 0.85
tap_link_set_downFunction · 0.85
tap_flow_flushFunction · 0.85
tap_flow_implicit_flushFunction · 0.85
tap_nl_finalFunction · 0.85
tap_rxq_pool_freeFunction · 0.85
rte_mempool_freeFunction · 0.85
rte_socket_idFunction · 0.85
rte_intr_instance_freeFunction · 0.85
rte_mp_action_unregisterFunction · 0.50
closeFunction · 0.50

Tested by

no test coverage detected