Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/113157 _apply patch failure_ Submitter: Chaoyong He Date: Tuesday, June 21 2022 10:33:08 Applied on: CommitID:a1b2afe431d80ab65b2ed9889a61ead335e53299 Apply patch set 113157-113168 failed: Checking patch drivers/net/nfp/nfp_common.h... Hunk #1 succeeded at 104 (offset -7 lines). Hunk #2 succeeded at 122 (offset -7 lines). Hunk #3 succeeded at 154 (offset -7 lines). Hunk #4 succeeded at 162 (offset -7 lines). Hunk #5 succeeded at 422 (offset -24 lines). Checking patch drivers/net/nfp/nfp_ethdev.c... error: while searching for: #include "nfp_cpp_bridge.h" static int nfp_net_pf_read_mac(struct nfp_pf_dev *pf_dev, int port) { struct nfp_eth_table *nfp_eth_table; struct nfp_net_hw *hw = NULL; /* Grab a pointer to the correct physical port */ hw = pf_dev->ports[port]; nfp_eth_table = nfp_eth_read_ports(pf_dev->cpp); nfp_eth_copy_mac((uint8_t *)&hw->mac_addr, (uint8_t *)&nfp_eth_table->ports[port].mac_addr); error: patch failed: drivers/net/nfp/nfp_ethdev.c:39 Hunk #2 succeeded at 86 (offset 22 lines). Hunk #3 succeeded at 94 (offset 22 lines). Hunk #4 succeeded at 106 (offset 22 lines). error: while searching for: struct nfp_net_hw *hw; struct rte_pci_device *pci_dev; struct nfp_pf_dev *pf_dev; int i; if (rte_eal_process_type() != RTE_PROC_PRIMARY) error: patch failed: drivers/net/nfp/nfp_ethdev.c:250 Hunk #6 succeeded at 292 (offset 29 lines). Hunk #7 succeeded at 321 (offset 37 lines). Hunk #8 succeeded at 337 (offset 37 lines). error: while searching for: { struct rte_pci_device *pci_dev; struct nfp_pf_dev *pf_dev; struct nfp_net_hw *hw; struct rte_ether_addr *tmp_ether_addr; uint64_t rx_bar_off = 0; error: patch failed: drivers/net/nfp/nfp_ethdev.c:404 error: while searching for: /* Use backpointer here to the PF of this eth_dev */ pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(eth_dev->data->dev_private); /* NFP can not handle DMA addresses requiring more than 40 bits */ if (rte_mem_check_dma_mask(40)) { RTE_LOG(ERR, PMD, error: patch failed: drivers/net/nfp/nfp_ethdev.c:420 error: while searching for: * Use PF array of physical ports to get pointer to * this specific port */ hw = pf_dev->ports[port]; PMD_INIT_LOG(DEBUG, "Working with physical port number: %d, " "NFP internal port number: %d", port, hw->nfp_idx); error: patch failed: drivers/net/nfp/nfp_ethdev.c:438 Hunk #12 succeeded at 556 (offset -21 lines). error: while searching for: } static int nfp_init_phyports(struct nfp_pf_dev *pf_dev) { int i; int ret = 0; struct nfp_net_hw *hw; struct rte_eth_dev *eth_dev; struct nfp_eth_table *nfp_eth_table; nfp_eth_table = nfp_eth_read_ports(pf_dev->cpp); if (nfp_eth_table == NULL) { PMD_INIT_LOG(ERR, "Error reading NFP ethernet table"); return -EIO; } /* Loop through all physical ports on PF */ for (i = 0; i < pf_dev->total_phyports; i++) { const unsigned int numa_node = rte_socket_id(); char port_name[RTE_ETH_NAME_MAX_LEN]; snprintf(port_name, sizeof(port_name), "%s_port%d", pf_dev->pci_dev->device.name, i); error: patch failed: drivers/net/nfp/nfp_ethdev.c:718 Hunk #14 succeeded at 748 (offset -63 lines). error: while searching for: rte_eth_dev_probing_finish(eth_dev); } /* End loop, all ports on this PF */ ret = 0; goto eth_table_cleanup; port_cleanup: for (i = 0; i < pf_dev->total_phyports; i++) { if (pf_dev->ports[i] && pf_dev->ports[i]->eth_dev) { struct rte_eth_dev *tmp_dev; tmp_dev = pf_dev->ports[i]->eth_dev; rte_eth_dev_release_port(tmp_dev); pf_dev->ports[i] = NULL; } } eth_table_cleanup: free(nfp_eth_table); return ret; } error: patch failed: drivers/net/nfp/nfp_ethdev.c:783 error: while searching for: static int nfp_pf_init(struct rte_pci_device *pci_dev) { int err; int ret = 0; uint64_t addr; int total_ports; struct nfp_cpp *cpp; struct nfp_pf_dev *pf_dev; struct nfp_hwinfo *hwinfo; char name[RTE_ETH_NAME_MAX_LEN]; error: patch failed: drivers/net/nfp/nfp_ethdev.c:804 error: while searching for: if (hwinfo == NULL) { PMD_INIT_LOG(ERR, "Error reading hwinfo table"); ret = -EIO; goto error; } nfp_eth_table = nfp_eth_read_ports(cpp); if (nfp_eth_table == NULL) { PMD_INIT_LOG(ERR, "Error reading NFP ethernet table"); error: patch failed: drivers/net/nfp/nfp_ethdev.c:840 Hunk #18 succeeded at 852 (offset -66 lines). error: while searching for: } /* Populate the newly created PF device */ pf_dev->cpp = cpp; pf_dev->hwinfo = hwinfo; pf_dev->sym_tbl = sym_tbl; pf_dev->total_phyports = total_ports; if (total_ports > 1) pf_dev->multiport = true; pf_dev->pci_dev = pci_dev; /* Map the symbol table */ pf_dev->ctrl_bar = nfp_rtsym_map(pf_dev->sym_tbl, "_pf0_net_bar0", pf_dev->total_phyports * 32768, &pf_dev->ctrl_area); if (pf_dev->ctrl_bar == NULL) { PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for _pf0_net_ctrl_bar"); ret = -EIO; goto pf_cleanup; } PMD_INIT_LOG(DEBUG, "ctrl bar: %p", pf_dev->ctrl_bar); /* configure access to tx/rx vNIC BARs */ switch (pci_dev->id.device_id) { case PCI_DEVICE_ID_NFP3800_PF_NIC: error: patch failed: drivers/net/nfp/nfp_ethdev.c:888 error: while searching for: default: PMD_INIT_LOG(ERR, "nfp_net: no device ID matching"); err = -ENODEV; goto ctrl_area_cleanup; } pf_dev->hw_queues = nfp_cpp_map_area(pf_dev->cpp, 0, 0, error: patch failed: drivers/net/nfp/nfp_ethdev.c:923 error: while searching for: if (pf_dev->hw_queues == NULL) { PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for net.qc"); ret = -EIO; goto ctrl_area_cleanup; } PMD_INIT_LOG(DEBUG, "tx/rx bar address: 0x%p", pf_dev->hw_queues); /* * Initialize and prep physical ports now * This will loop through all physical ports */ ret = nfp_init_phyports(pf_dev); if (ret) { PMD_INIT_LOG(ERR, "Could not create physical ports"); goto hwqueues_cleanup; } error: patch failed: drivers/net/nfp/nfp_ethdev.c:932 Hunk #22 succeeded at 920 (offset -75 lines). Hunk #23 succeeded at 928 (offset -75 lines). error: while searching for: nfp_pf_secondary_init(struct rte_pci_device *pci_dev) { int i; int err; int total_ports; struct nfp_cpp *cpp; struct nfp_net_hw *hw; error: patch failed: drivers/net/nfp/nfp_ethdev.c:977 Hunk #25 succeeded at 979 (offset -78 lines). error: while searching for: if (eth_dev == NULL) { RTE_LOG(ERR, EAL, "secondary process attach failed, ethdev doesn't exist"); return -ENODEV; } hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); error: patch failed: drivers/net/nfp/nfp_ethdev.c:1028 error: while searching for: rte_eth_dev_probing_finish(eth_dev); } /* Register the CPP bridge service for the secondary too */ nfp_register_cpp_service(cpp); return 0; } static int error: patch failed: drivers/net/nfp/nfp_ethdev.c:1041 Applied patch drivers/net/nfp/nfp_common.h cleanly. Applying patch drivers/net/nfp/nfp_ethdev.c with 15 rejects... Rejected hunk #1. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Rejected hunk #5. Hunk #6 applied cleanly. Hunk #7 applied cleanly. Hunk #8 applied cleanly. Rejected hunk #9. Rejected hunk #10. Rejected hunk #11. Hunk #12 applied cleanly. Rejected hunk #13. Hunk #14 applied cleanly. Rejected hunk #15. Rejected hunk #16. Rejected hunk #17. Hunk #18 applied cleanly. Rejected hunk #19. Rejected hunk #20. Rejected hunk #21. Hunk #22 applied cleanly. Hunk #23 applied cleanly. Rejected hunk #24. Hunk #25 applied cleanly. Rejected hunk #26. Rejected hunk #27. diff a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c (rejected hunks) @@ -39,15 +39,15 @@ #include "nfp_cpp_bridge.h" static int -nfp_net_pf_read_mac(struct nfp_pf_dev *pf_dev, int port) +nfp_net_pf_read_mac(struct nfp_app_nic *app_nic, int port) { struct nfp_eth_table *nfp_eth_table; struct nfp_net_hw *hw = NULL; /* Grab a pointer to the correct physical port */ - hw = pf_dev->ports[port]; + hw = app_nic->ports[port]; - nfp_eth_table = nfp_eth_read_ports(pf_dev->cpp); + nfp_eth_table = nfp_eth_read_ports(app_nic->pf_dev->cpp); nfp_eth_copy_mac((uint8_t *)&hw->mac_addr, (uint8_t *)&nfp_eth_table->ports[port].mac_addr); @@ -250,6 +252,7 @@ struct nfp_net_hw *hw; struct rte_pci_device *pci_dev; struct nfp_pf_dev *pf_dev; + struct nfp_app_nic *app_nic; int i; if (rte_eal_process_type() != RTE_PROC_PRIMARY) @@ -404,6 +409,7 @@ { struct rte_pci_device *pci_dev; struct nfp_pf_dev *pf_dev; + struct nfp_app_nic *app_nic; struct nfp_net_hw *hw; struct rte_ether_addr *tmp_ether_addr; uint64_t rx_bar_off = 0; @@ -420,6 +426,9 @@ /* Use backpointer here to the PF of this eth_dev */ pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(eth_dev->data->dev_private); + /* Use backpointer to the CoreNIC app struct */ + app_nic = NFP_APP_PRIV_TO_APP_NIC(pf_dev->app_priv); + /* NFP can not handle DMA addresses requiring more than 40 bits */ if (rte_mem_check_dma_mask(40)) { RTE_LOG(ERR, PMD, @@ -438,7 +447,7 @@ * Use PF array of physical ports to get pointer to * this specific port */ - hw = pf_dev->ports[port]; + hw = app_nic->ports[port]; PMD_INIT_LOG(DEBUG, "Working with physical port number: %d, " "NFP internal port number: %d", port, hw->nfp_idx); @@ -718,25 +727,67 @@ } static int -nfp_init_phyports(struct nfp_pf_dev *pf_dev) +nfp_init_app_nic(struct nfp_pf_dev *pf_dev, + struct nfp_eth_table *nfp_eth_table) { int i; - int ret = 0; + int ret; + int err = 0; + int total_vnics; struct nfp_net_hw *hw; + unsigned int numa_node; struct rte_eth_dev *eth_dev; - struct nfp_eth_table *nfp_eth_table; + struct nfp_app_nic *app_nic; + char port_name[RTE_ETH_NAME_MAX_LEN]; - nfp_eth_table = nfp_eth_read_ports(pf_dev->cpp); - if (nfp_eth_table == NULL) { - PMD_INIT_LOG(ERR, "Error reading NFP ethernet table"); - return -EIO; + PMD_INIT_LOG(INFO, "Total physical ports: %d", nfp_eth_table->count); + + /* Allocate memory for the CoreNIC app */ + app_nic = rte_zmalloc("nfp_app_nic", sizeof(*app_nic), 0); + if (app_nic == NULL) + return -ENOMEM; + + /* Point the app_priv pointer in the PF to the coreNIC app */ + pf_dev->app_priv = app_nic; + + /* Read the number of vNIC's created for the PF */ + total_vnics = nfp_rtsym_read_le(pf_dev->sym_tbl, "nfd_cfg_pf0_num_ports", &err); + if (err || total_vnics <= 0 || total_vnics > 8) { + PMD_INIT_LOG(ERR, "nfd_cfg_pf0_num_ports symbol with wrong value"); + ret = -ENODEV; + goto app_cleanup; } - /* Loop through all physical ports on PF */ - for (i = 0; i < pf_dev->total_phyports; i++) { - const unsigned int numa_node = rte_socket_id(); - char port_name[RTE_ETH_NAME_MAX_LEN]; + /* + * For coreNIC the number of vNICs exposed should be the same as the + * number of physical ports + */ + if (total_vnics != (int)nfp_eth_table->count) { + PMD_INIT_LOG(ERR, "Total physical ports do not match number of vNICs"); + ret = -ENODEV; + goto app_cleanup; + } + /* Populate coreNIC app properties*/ + app_nic->total_phyports = total_vnics; + app_nic->pf_dev = pf_dev; + if (total_vnics > 1) + app_nic->multiport = true; + + /* Map the symbol table */ + pf_dev->ctrl_bar = nfp_rtsym_map(pf_dev->sym_tbl, "_pf0_net_bar0", + app_nic->total_phyports * 32768, &pf_dev->ctrl_area); + if (pf_dev->ctrl_bar == NULL) { + PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for _pf0_net_ctrl_bar"); + ret = -EIO; + goto app_cleanup; + } + + PMD_INIT_LOG(DEBUG, "ctrl bar: %p", pf_dev->ctrl_bar); + + /* Loop through all physical ports on PF */ + numa_node = rte_socket_id(); + for (i = 0; i < app_nic->total_phyports; i++) { snprintf(port_name, sizeof(port_name), "%s_port%d", pf_dev->pci_dev->device.name, i); @@ -783,20 +834,21 @@ rte_eth_dev_probing_finish(eth_dev); } /* End loop, all ports on this PF */ - ret = 0; - goto eth_table_cleanup; + + return 0; port_cleanup: - for (i = 0; i < pf_dev->total_phyports; i++) { - if (pf_dev->ports[i] && pf_dev->ports[i]->eth_dev) { + for (i = 0; i < app_nic->total_phyports; i++) { + if (app_nic->ports[i] && app_nic->ports[i]->eth_dev) { struct rte_eth_dev *tmp_dev; - tmp_dev = pf_dev->ports[i]->eth_dev; + tmp_dev = app_nic->ports[i]->eth_dev; rte_eth_dev_release_port(tmp_dev); - pf_dev->ports[i] = NULL; + app_nic->ports[i] = NULL; } } -eth_table_cleanup: - free(nfp_eth_table); + nfp_cpp_area_free(pf_dev->ctrl_area); +app_cleanup: + rte_free(app_nic); return ret; } @@ -804,11 +856,11 @@ static int nfp_pf_init(struct rte_pci_device *pci_dev) { - int err; - int ret = 0; + int ret; + int err = 0; uint64_t addr; - int total_ports; struct nfp_cpp *cpp; + enum nfp_app_id app_id; struct nfp_pf_dev *pf_dev; struct nfp_hwinfo *hwinfo; char name[RTE_ETH_NAME_MAX_LEN]; @@ -840,9 +892,10 @@ if (hwinfo == NULL) { PMD_INIT_LOG(ERR, "Error reading hwinfo table"); ret = -EIO; - goto error; + goto cpp_cleanup; } + /* Read the number of physical ports from hardware */ nfp_eth_table = nfp_eth_read_ports(cpp); if (nfp_eth_table == NULL) { PMD_INIT_LOG(ERR, "Error reading NFP ethernet table"); @@ -888,27 +935,12 @@ } /* Populate the newly created PF device */ + pf_dev->app_id = app_id; pf_dev->cpp = cpp; pf_dev->hwinfo = hwinfo; pf_dev->sym_tbl = sym_tbl; - pf_dev->total_phyports = total_ports; - - if (total_ports > 1) - pf_dev->multiport = true; - pf_dev->pci_dev = pci_dev; - /* Map the symbol table */ - pf_dev->ctrl_bar = nfp_rtsym_map(pf_dev->sym_tbl, "_pf0_net_bar0", - pf_dev->total_phyports * 32768, &pf_dev->ctrl_area); - if (pf_dev->ctrl_bar == NULL) { - PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for _pf0_net_ctrl_bar"); - ret = -EIO; - goto pf_cleanup; - } - - PMD_INIT_LOG(DEBUG, "ctrl bar: %p", pf_dev->ctrl_bar); - /* configure access to tx/rx vNIC BARs */ switch (pci_dev->id.device_id) { case PCI_DEVICE_ID_NFP3800_PF_NIC: @@ -923,7 +955,7 @@ default: PMD_INIT_LOG(ERR, "nfp_net: no device ID matching"); err = -ENODEV; - goto ctrl_area_cleanup; + goto pf_cleanup; } pf_dev->hw_queues = nfp_cpp_map_area(pf_dev->cpp, 0, 0, @@ -932,18 +964,27 @@ if (pf_dev->hw_queues == NULL) { PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for net.qc"); ret = -EIO; - goto ctrl_area_cleanup; + goto pf_cleanup; } PMD_INIT_LOG(DEBUG, "tx/rx bar address: 0x%p", pf_dev->hw_queues); /* - * Initialize and prep physical ports now - * This will loop through all physical ports + * PF initialization has been done at this point. Call app specific + * init code now */ - ret = nfp_init_phyports(pf_dev); - if (ret) { - PMD_INIT_LOG(ERR, "Could not create physical ports"); + switch (pf_dev->app_id) { + case NFP_APP_CORE_NIC: + PMD_INIT_LOG(INFO, "Initializing coreNIC"); + ret = nfp_init_app_nic(pf_dev, nfp_eth_table); + if (ret) { + PMD_INIT_LOG(ERR, "Could not initialize coreNIC!"); + goto hwqueues_cleanup; + } + break; + default: + PMD_INIT_LOG(ERR, "Unsupported Firmware loaded"); + ret = -EINVAL; goto hwqueues_cleanup; } @@ -977,7 +1018,8 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) { int i; - int err; + int err = 0; + int ret = 0; int total_ports; struct nfp_cpp *cpp; struct nfp_net_hw *hw; @@ -1028,7 +1075,8 @@ if (eth_dev == NULL) { RTE_LOG(ERR, EAL, "secondary process attach failed, ethdev doesn't exist"); - return -ENODEV; + ret = -ENODEV; + break; } hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); @@ -1041,10 +1089,16 @@ rte_eth_dev_probing_finish(eth_dev); } + if (ret) + goto sym_tbl_cleanup; + /* Register the CPP bridge service for the secondary too */ nfp_register_cpp_service(cpp); - return 0; +sym_tbl_cleanup: + free(sym_tbl); + + return ret; } static int Checking patch drivers/net/nfp/nfp_common.h... error: drivers/net/nfp/nfp_common.h: does not match index Checking patch drivers/net/nfp/nfp_ethdev.c... error: drivers/net/nfp/nfp_ethdev.c: does not match index Checking patch drivers/net/nfp/nfp_ethdev.c... error: drivers/net/nfp/nfp_ethdev.c: does not match index Checking patch drivers/net/nfp/flower/nfp_flower.c... Checking patch drivers/net/nfp/flower/nfp_flower.h... Checking patch drivers/net/nfp/meson.build... Checking patch drivers/net/nfp/nfp_cpp_bridge.c... Checking patch drivers/net/nfp/nfp_cpp_bridge.h... Checking patch drivers/net/nfp/nfp_ethdev.c... error: drivers/net/nfp/nfp_ethdev.c: does not match index Applied patch drivers/net/nfp/flower/nfp_flower.c cleanly. Applied patch drivers/net/nfp/flower/nfp_flower.h cleanly. Applied patch drivers/net/nfp/meson.build cleanly. Applied patch drivers/net/nfp/nfp_cpp_bridge.c cleanly. Applied patch drivers/net/nfp/nfp_cpp_bridge.h cleanly. Checking patch drivers/net/nfp/flower/nfp_flower.c... error: drivers/net/nfp/flower/nfp_flower.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.h... error: drivers/net/nfp/flower/nfp_flower.h: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower_ovs_compat.h... Checking patch drivers/net/nfp/nfp_common.h... error: drivers/net/nfp/nfp_common.h: does not match index Applied patch drivers/net/nfp/flower/nfp_flower_ovs_compat.h cleanly. Checking patch drivers/net/nfp/flower/nfp_flower.c... error: drivers/net/nfp/flower/nfp_flower.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.c... error: drivers/net/nfp/flower/nfp_flower.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.h... error: drivers/net/nfp/flower/nfp_flower.h: does not exist in index Checking patch drivers/net/nfp/nfp_rxtx.c... Hunk #1 succeeded at 134 (offset 18 lines). Hunk #2 succeeded at 595 (offset 18 lines). error: while searching for: return 0; } /* Leaving always free descriptors for avoiding wrapping confusion */ static inline uint32_t nfp_net_nfd3_free_tx_desc(struct nfp_net_txq *txq) { if (txq->wr_p >= txq->rd_p) return txq->tx_count - (txq->wr_p - txq->rd_p) - 8; else return txq->rd_p - txq->wr_p - 8; } /* * nfp_net_txq_full - Check if the TX queue free descriptors * is below tx_free_threshold * * @txq: TX queue to check * * This function uses the host copy* of read/write pointers */ static inline uint32_t nfp_net_nfd3_txq_full(struct nfp_net_txq *txq) { return (nfp_net_nfd3_free_tx_desc(txq) < txq->tx_free_thresh); } /* nfp_net_tx_tso - Set TX descriptor for TSO */ static inline void nfp_net_nfd3_tx_tso(struct nfp_net_txq *txq, struct nfp_net_nfd3_tx_desc *txd, error: patch failed: drivers/net/nfp/nfp_rxtx.c:774 Checking patch drivers/net/nfp/nfp_rxtx.h... Hunk #1 succeeded at 274 (offset -56 lines). error: while searching for: uint16_t nfp_net_nfdk_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); #endif /* _NFP_RXTX_H_ */ /* error: patch failed: drivers/net/nfp/nfp_rxtx.h:355 Applying patch drivers/net/nfp/nfp_rxtx.c with 1 reject... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Rejected hunk #3. Applying patch drivers/net/nfp/nfp_rxtx.h with 1 reject... Hunk #1 applied cleanly. Rejected hunk #2. diff a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c (rejected hunks) @@ -774,30 +768,6 @@ return 0; } -/* Leaving always free descriptors for avoiding wrapping confusion */ -static inline -uint32_t nfp_net_nfd3_free_tx_desc(struct nfp_net_txq *txq) -{ - if (txq->wr_p >= txq->rd_p) - return txq->tx_count - (txq->wr_p - txq->rd_p) - 8; - else - return txq->rd_p - txq->wr_p - 8; -} - -/* - * nfp_net_txq_full - Check if the TX queue free descriptors - * is below tx_free_threshold - * - * @txq: TX queue to check - * - * This function uses the host copy* of read/write pointers - */ -static inline -uint32_t nfp_net_nfd3_txq_full(struct nfp_net_txq *txq) -{ - return (nfp_net_nfd3_free_tx_desc(txq) < txq->tx_free_thresh); -} - /* nfp_net_tx_tso - Set TX descriptor for TSO */ static inline void nfp_net_nfd3_tx_tso(struct nfp_net_txq *txq, struct nfp_net_nfd3_tx_desc *txd, diff a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h (rejected hunks) @@ -355,6 +385,7 @@ int nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev, uint16_t nfp_net_nfdk_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); +int nfp_net_tx_free_bufs(struct nfp_net_txq *txq); #endif /* _NFP_RXTX_H_ */ /* Checking patch drivers/net/nfp/flower/nfp_flower.c... error: drivers/net/nfp/flower/nfp_flower.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.h... error: drivers/net/nfp/flower/nfp_flower.h: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower_ctrl.c... Checking patch drivers/net/nfp/flower/nfp_flower_ctrl.h... Checking patch drivers/net/nfp/meson.build... error: drivers/net/nfp/meson.build: does not match index Applied patch drivers/net/nfp/flower/nfp_flower_ctrl.c cleanly. Applied patch drivers/net/nfp/flower/nfp_flower_ctrl.h cleanly. Checking patch drivers/net/nfp/flower/nfp_flower.c... error: drivers/net/nfp/flower/nfp_flower.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.h... error: drivers/net/nfp/flower/nfp_flower.h: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.c... Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... Checking patch drivers/net/nfp/flower/nfp_flower_representor.c... Checking patch drivers/net/nfp/flower/nfp_flower_representor.h... Checking patch drivers/net/nfp/meson.build... error: drivers/net/nfp/meson.build: does not match index Checking patch drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c... Applied patch drivers/net/nfp/flower/nfp_flower_cmsg.c cleanly. Applied patch drivers/net/nfp/flower/nfp_flower_cmsg.h cleanly. Applied patch drivers/net/nfp/flower/nfp_flower_representor.c cleanly. Applied patch drivers/net/nfp/flower/nfp_flower_representor.h cleanly. Applied patch drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c cleanly. Checking patch drivers/net/nfp/nfp_common.c... Checking patch drivers/net/nfp/nfp_ethdev.c... error: drivers/net/nfp/nfp_ethdev.c: does not match index Checking patch drivers/net/nfp/nfp_ethdev_vf.c... error: while searching for: #include "nfpcore/nfp_rtsym.h" #include "nfp_common.h" #include "nfp_rxtx.h" #include "nfp_logs.h" #include "nfp_ctrl.h" static void nfp_netvf_read_mac(struct nfp_net_hw *hw) error: patch failed: drivers/net/nfp/nfp_ethdev_vf.c:19 Checking patch drivers/net/nfp/nfp_rxtx.c... error: drivers/net/nfp/nfp_rxtx.c: does not match index Checking patch drivers/net/nfp/nfp_rxtx.h... error: drivers/net/nfp/nfp_rxtx.h: does not match index Applied patch drivers/net/nfp/nfp_common.c cleanly. Applying patch drivers/net/nfp/nfp_ethdev_vf.c with 1 reject... Rejected hunk #1. diff a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c (rejected hunks) @@ -19,9 +19,9 @@ #include "nfpcore/nfp_rtsym.h" #include "nfp_common.h" +#include "nfp_ctrl.h" #include "nfp_rxtx.h" #include "nfp_logs.h" -#include "nfp_ctrl.h" static void nfp_netvf_read_mac(struct nfp_net_hw *hw) Checking patch drivers/net/nfp/flower/nfp_flower.c... error: drivers/net/nfp/flower/nfp_flower.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.h... error: drivers/net/nfp/flower/nfp_flower.h: does not exist in index https://lab.dpdk.org/results/dashboard/patchsets/22715/ UNH-IOL DPDK Community Lab