X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=lib%2Flibrte_pdump%2Frte_pdump.c;h=596868374d50878c4798cd8e384efc87d94028e6;hb=bf6e314c5180192fe8beb93846b0170c16240fa5;hp=22ed476916961734bbacc74f76b1a477cbfe978d;hpb=8be94df6e9f5f70516cb86d82dd04fefaa0fe8b3;p=deb_dpdk.git diff --git a/lib/librte_pdump/rte_pdump.c b/lib/librte_pdump/rte_pdump.c index 22ed4769..59686837 100644 --- a/lib/librte_pdump/rte_pdump.c +++ b/lib/librte_pdump/rte_pdump.c @@ -225,29 +225,6 @@ pdump_tx(uint8_t port __rte_unused, uint16_t qidx __rte_unused, return nb_pkts; } -static int -pdump_get_dombdf(char *device_id, char *domBDF, size_t len) -{ - int ret; - struct rte_pci_addr dev_addr = {0}; - - /* identify if device_id is pci address or name */ - ret = eal_parse_pci_DomBDF(device_id, &dev_addr); - if (ret < 0) - return -1; - - if (dev_addr.domain) - ret = snprintf(domBDF, len, "%u:%u:%u.%u", dev_addr.domain, - dev_addr.bus, dev_addr.devid, - dev_addr.function); - else - ret = snprintf(domBDF, len, "%u:%u.%u", dev_addr.bus, - dev_addr.devid, - dev_addr.function); - - return ret; -} - static int pdump_regitser_rx_callbacks(uint16_t end_q, uint8_t port, uint16_t queue, struct rte_ring *ring, struct rte_mempool *mp, @@ -292,7 +269,7 @@ pdump_regitser_rx_callbacks(uint16_t end_q, uint8_t port, uint16_t queue, if (ret < 0) { RTE_LOG(ERR, PDUMP, "failed to remove rx callback, errno=%d\n", - rte_errno); + -ret); return ret; } cbs->cb = NULL; @@ -347,7 +324,7 @@ pdump_regitser_tx_callbacks(uint16_t end_q, uint8_t port, uint16_t queue, if (ret < 0) { RTE_LOG(ERR, PDUMP, "failed to remove tx callback, errno=%d\n", - rte_errno); + -ret); return ret; } cbs->cb = NULL; @@ -449,6 +426,7 @@ pdump_get_socket_path(char *buffer, int bufsz, enum rte_pdump_socktype type) char dpdk_dir[PATH_MAX] = {0}; char dir[PATH_MAX] = {0}; char *dir_home = NULL; + int ret = 0; if (type == RTE_PDUMP_SOCKET_SERVER && server_socket_dir[0] != 0) snprintf(dir, sizeof(dir), "%s", server_socket_dir); @@ -470,12 +448,21 @@ pdump_get_socket_path(char *buffer, int bufsz, enum rte_pdump_socktype type) snprintf(dpdk_dir, sizeof(dpdk_dir), "%s%s", SOCKET_PATH_VAR_RUN, DPDK_DIR); - mkdir(dpdk_dir, 700); + mkdir(dpdk_dir, 0700); snprintf(dir, sizeof(dir), "%s%s", dpdk_dir, SOCKET_DIR); } - mkdir(dir, 700); + ret = mkdir(dir, 0700); + /* if user passed socket path is invalid, return immediately */ + if (ret < 0 && errno != EEXIST) { + RTE_LOG(ERR, PDUMP, + "Failed to create dir:%s:%s\n", dir, + strerror(errno)); + rte_errno = errno; + return -1; + } + if (type == RTE_PDUMP_SOCKET_SERVER) snprintf(buffer, bufsz, SERVER_SOCKET, dir); else @@ -667,8 +654,8 @@ pdump_create_client_socket(struct pdump_request *p) "client socket(): %s:pid(%d):tid(%u), %s:%d\n", strerror(errno), pid, rte_sys_gettid(), __func__, __LINE__); - ret = errno; - return ret; + rte_errno = errno; + return -1; } ret = pdump_get_socket_path(addr.sun_path, sizeof(addr.sun_path), @@ -677,6 +664,7 @@ pdump_create_client_socket(struct pdump_request *p) RTE_LOG(ERR, PDUMP, "Failed to get client socket path: %s:%d\n", __func__, __LINE__); + rte_errno = errno; goto exit; } addr.sun_family = AF_UNIX; @@ -688,7 +676,7 @@ pdump_create_client_socket(struct pdump_request *p) RTE_LOG(ERR, PDUMP, "client bind(): %s, %s:%d\n", strerror(errno), __func__, __LINE__); - ret = errno; + rte_errno = errno; break; } @@ -701,6 +689,7 @@ pdump_create_client_socket(struct pdump_request *p) RTE_LOG(ERR, PDUMP, "Failed to get server socket path: %s:%d\n", __func__, __LINE__); + rte_errno = errno; break; } serv_addr.sun_family = AF_UNIX; @@ -711,7 +700,8 @@ pdump_create_client_socket(struct pdump_request *p) RTE_LOG(ERR, PDUMP, "failed to send to server:%s, %s:%d\n", strerror(errno), __func__, __LINE__); - ret = errno; + rte_errno = errno; + ret = -1; break; } @@ -722,7 +712,8 @@ pdump_create_client_socket(struct pdump_request *p) RTE_LOG(ERR, PDUMP, "failed to recv from server:%s, %s:%d\n", strerror(errno), __func__, __LINE__); - ret = errno; + rte_errno = errno; + ret = -1; break; } ret = server_resp.err_value; @@ -871,7 +862,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue, void *filter) { int ret = 0; - char domBDF[DEVICE_ID_SIZE]; ret = pdump_validate_ring_mp(ring, mp); if (ret < 0) @@ -880,11 +870,7 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue, if (ret < 0) return ret; - if (pdump_get_dombdf(device_id, domBDF, sizeof(domBDF)) > 0) - ret = pdump_prepare_client_request(domBDF, queue, flags, - ENABLE, ring, mp, filter); - else - ret = pdump_prepare_client_request(device_id, queue, flags, + ret = pdump_prepare_client_request(device_id, queue, flags, ENABLE, ring, mp, filter); return ret; @@ -914,17 +900,12 @@ rte_pdump_disable_by_deviceid(char *device_id, uint16_t queue, uint32_t flags) { int ret = 0; - char domBDF[DEVICE_ID_SIZE]; ret = pdump_validate_flags(flags); if (ret < 0) return ret; - if (pdump_get_dombdf(device_id, domBDF, sizeof(domBDF)) > 0) - ret = pdump_prepare_client_request(domBDF, queue, flags, - DISABLE, NULL, NULL, NULL); - else - ret = pdump_prepare_client_request(device_id, queue, flags, + ret = pdump_prepare_client_request(device_id, queue, flags, DISABLE, NULL, NULL, NULL); return ret;