Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/99537 _apply patch failure_ Submitter: Zhang, RobinX Date: Friday, September 24 2021 06:22:28 Applied on: CommitID:2700326085033fd13339a8de31f58a95d1ee9c3f Apply patch set 99537-99538 failed: Checking patch drivers/net/i40e/base/i40e_osdep.h... error: while searching for: rte_write32_wc_relaxed((rte_cpu_to_le_32(value)), reg) #define I40E_WRITE_FLUSH(a) I40E_READ_REG(a, I40E_GLGEN_STAT) #define I40EVF_WRITE_FLUSH(a) I40E_READ_REG(a, I40E_VFGEN_RSTAT) #define I40E_READ_REG(hw, reg) i40e_read_addr(I40E_PCI_REG_ADDR((hw), (reg))) #define I40E_WRITE_REG(hw, reg, value) \ error: patch failed: drivers/net/i40e/base/i40e_osdep.h:162 Checking patch drivers/net/i40e/i40e_ethdev.h... error: while searching for: } config; }; struct i40e_vf_rx_queues { uint64_t rx_dma_addr; uint32_t rx_ring_len; uint32_t buff_size; }; struct i40e_vf_tx_queues { uint64_t tx_dma_addr; uint32_t tx_ring_len; }; /* * Structure to store private data specific for VF instance. */ struct i40e_vf { struct i40e_adapter *adapter; /* The adapter this VF associate to */ struct rte_eth_dev_data *dev_data; /* Pointer to the device data */ uint16_t num_queue_pairs; uint16_t max_pkt_len; /* Maximum packet length */ bool promisc_unicast_enabled; bool promisc_multicast_enabled; rte_spinlock_t cmd_send_lock; uint32_t version_major; /* Major version number */ uint32_t version_minor; /* Minor version number */ uint16_t promisc_flags; /* Promiscuous setting */ uint32_t vlan[I40E_VFTA_SIZE]; /* VLAN bit map */ /* Multicast addrs */ struct rte_ether_addr mc_addrs[I40E_NUM_MACADDR_MAX]; uint16_t mc_addrs_num; /* Multicast mac addresses number */ /* Event from pf */ bool dev_closed; bool link_up; enum virtchnl_link_speed link_speed; bool vf_reset; volatile uint32_t pend_cmd; /* pending command not finished yet */ int32_t cmd_retval; /* return value of the cmd response from PF */ u16 pend_msg; /* flags indicates events from pf not handled yet */ uint8_t *aq_resp; /* buffer to store the adminq response from PF */ /* VSI info */ struct virtchnl_vf_resource *vf_res; /* All VSIs */ struct virtchnl_vsi_resource *vsi_res; /* LAN VSI */ struct i40e_vsi vsi; uint64_t flags; }; #define I40E_MAX_PKT_TYPE 256 #define I40E_FLOW_TYPE_MAX 64 error: patch failed: drivers/net/i40e/i40e_ethdev.h:1229 error: while searching for: /* Common for both PF and VF */ struct i40e_hw hw; /* Specific for PF or VF */ union { struct i40e_pf pf; struct i40e_vf vf; }; /* For vector PMD */ bool rx_bulk_alloc_allowed; error: patch failed: drivers/net/i40e/i40e_ethdev.h:1288 error: while searching for: int total); bool is_device_supported(struct rte_eth_dev *dev, struct rte_pci_driver *drv); bool is_i40e_supported(struct rte_eth_dev *dev); bool is_i40evf_supported(struct rte_eth_dev *dev); void i40e_set_symmetric_hash_enable_per_port(struct i40e_hw *hw, uint8_t enable); int i40e_validate_input_set(enum i40e_filter_pctype pctype, error: patch failed: drivers/net/i40e/i40e_ethdev.h:1461 error: while searching for: #define I40E_DEV_PRIVATE_TO_ADAPTER(adapter) \ ((struct i40e_adapter *)adapter) /* I40EVF_DEV_PRIVATE_TO */ #define I40EVF_DEV_PRIVATE_TO_VF(adapter) \ (&((struct i40e_adapter *)adapter)->vf) static inline struct i40e_vsi * i40e_get_vsi_from_adapter(struct i40e_adapter *adapter) { struct i40e_hw *hw; if (!adapter) return NULL; hw = I40E_DEV_PRIVATE_TO_HW(adapter); if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) { struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(adapter); return &vf->vsi; } else { struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(adapter); return pf->main_vsi; } } #define I40E_DEV_PRIVATE_TO_MAIN_VSI(adapter) \ i40e_get_vsi_from_adapter((struct i40e_adapter *)adapter) error: patch failed: drivers/net/i40e/i40e_ethdev.h:1507 error: while searching for: #define I40E_PF_TO_ADAPTER(pf) \ ((struct i40e_adapter *)pf->adapter) /* I40E_VF_TO */ #define I40E_VF_TO_HW(vf) \ (&(((struct i40e_vf *)vf)->adapter->hw)) static inline void i40e_init_adminq_parameter(struct i40e_hw *hw) { error: patch failed: drivers/net/i40e/i40e_ethdev.h:1549 Checking patch drivers/net/i40e/i40e_ethdev_vf.c... error: drivers/net/i40e/i40e_ethdev_vf.c: does not exist in index Checking patch drivers/net/i40e/i40e_rxtx.c... error: while searching for: const struct rte_eth_rxconf *rx_conf, struct rte_mempool *mp) { struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_adapter *ad = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct i40e_vsi *vsi; struct i40e_pf *pf = NULL; struct i40e_vf *vf = NULL; struct i40e_rx_queue *rxq; const struct rte_memzone *rz; uint32_t ring_size; error: patch failed: drivers/net/i40e/i40e_rxtx.c:1942 error: while searching for: offloads = rx_conf->offloads | dev->data->dev_conf.rxmode.offloads; if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) { vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); vsi = &vf->vsi; if (!vsi) return -EINVAL; reg_idx = queue_idx; } else { pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); vsi = i40e_pf_get_vsi_by_qindex(pf, queue_idx); if (!vsi) return -EINVAL; q_offset = i40e_get_queue_offset_by_qindex(pf, queue_idx); if (q_offset < 0) return -EINVAL; reg_idx = vsi->base_queue + q_offset; } if (nb_desc % I40E_ALIGN_RING_DESC != 0 || (nb_desc > I40E_MAX_RING_DESC) || error: patch failed: drivers/net/i40e/i40e_rxtx.c:1958 error: while searching for: unsigned int socket_id, const struct rte_eth_txconf *tx_conf) { struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vsi *vsi; struct i40e_pf *pf = NULL; struct i40e_vf *vf = NULL; struct i40e_tx_queue *txq; const struct rte_memzone *tz; uint32_t ring_size; error: patch failed: drivers/net/i40e/i40e_rxtx.c:2282 error: while searching for: offloads = tx_conf->offloads | dev->data->dev_conf.txmode.offloads; if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) { vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); vsi = &vf->vsi; reg_idx = queue_idx; } else { pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); vsi = i40e_pf_get_vsi_by_qindex(pf, queue_idx); if (!vsi) return -EINVAL; q_offset = i40e_get_queue_offset_by_qindex(pf, queue_idx); if (q_offset < 0) return -EINVAL; reg_idx = vsi->base_queue + q_offset; } if (nb_desc % I40E_ALIGN_RING_DESC != 0 || (nb_desc > I40E_MAX_RING_DESC) || error: patch failed: drivers/net/i40e/i40e_rxtx.c:2296 Checking patch drivers/net/i40e/meson.build... error: while searching for: sources = files( 'i40e_ethdev.c', 'i40e_rxtx.c', 'i40e_ethdev_vf.c', 'i40e_pf.c', 'i40e_fdir.c', 'i40e_flow.c', error: patch failed: drivers/net/i40e/meson.build:12 Checking patch drivers/net/i40e/rte_pmd_i40e.c... error: while searching for: dev = &rte_eth_devices[port]; if (!is_i40e_supported(dev) && !is_i40evf_supported(dev)) return -ENOTSUP; i40e_set_default_pctype_table(dev); error: patch failed: drivers/net/i40e/rte_pmd_i40e.c:2410 error: while searching for: dev = &rte_eth_devices[port]; if (!is_i40e_supported(dev) && !is_i40evf_supported(dev)) return -ENOTSUP; ad = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); error: patch failed: drivers/net/i40e/rte_pmd_i40e.c:2431 error: while searching for: dev = &rte_eth_devices[port]; if (!is_i40e_supported(dev) && !is_i40evf_supported(dev)) return -ENOTSUP; if (count > I40E_FLOW_TYPE_MAX) error: patch failed: drivers/net/i40e/rte_pmd_i40e.c:2460 Applying patch drivers/net/i40e/base/i40e_osdep.h with 1 reject... Rejected hunk #1. Applying patch drivers/net/i40e/i40e_ethdev.h with 5 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. Rejected hunk #4. Rejected hunk #5. Applying patch drivers/net/i40e/i40e_rxtx.c with 4 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. Rejected hunk #4. Applying patch drivers/net/i40e/meson.build with 1 reject... Rejected hunk #1. Applying patch drivers/net/i40e/rte_pmd_i40e.c with 3 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. diff a/drivers/net/i40e/base/i40e_osdep.h b/drivers/net/i40e/base/i40e_osdep.h (rejected hunks) @@ -162,7 +162,6 @@ static inline uint64_t i40e_read64_addr(volatile void *addr) rte_write32_wc_relaxed((rte_cpu_to_le_32(value)), reg) #define I40E_WRITE_FLUSH(a) I40E_READ_REG(a, I40E_GLGEN_STAT) -#define I40EVF_WRITE_FLUSH(a) I40E_READ_REG(a, I40E_VFGEN_RSTAT) #define I40E_READ_REG(hw, reg) i40e_read_addr(I40E_PCI_REG_ADDR((hw), (reg))) #define I40E_WRITE_REG(hw, reg, value) \ diff a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h (rejected hunks) @@ -1229,55 +1229,6 @@ struct i40e_vsi_vlan_pvid_info { } config; }; -struct i40e_vf_rx_queues { - uint64_t rx_dma_addr; - uint32_t rx_ring_len; - uint32_t buff_size; -}; - -struct i40e_vf_tx_queues { - uint64_t tx_dma_addr; - uint32_t tx_ring_len; -}; - -/* - * Structure to store private data specific for VF instance. - */ -struct i40e_vf { - struct i40e_adapter *adapter; /* The adapter this VF associate to */ - struct rte_eth_dev_data *dev_data; /* Pointer to the device data */ - uint16_t num_queue_pairs; - uint16_t max_pkt_len; /* Maximum packet length */ - bool promisc_unicast_enabled; - bool promisc_multicast_enabled; - - rte_spinlock_t cmd_send_lock; - uint32_t version_major; /* Major version number */ - uint32_t version_minor; /* Minor version number */ - uint16_t promisc_flags; /* Promiscuous setting */ - uint32_t vlan[I40E_VFTA_SIZE]; /* VLAN bit map */ - - /* Multicast addrs */ - struct rte_ether_addr mc_addrs[I40E_NUM_MACADDR_MAX]; - uint16_t mc_addrs_num; /* Multicast mac addresses number */ - - /* Event from pf */ - bool dev_closed; - bool link_up; - enum virtchnl_link_speed link_speed; - bool vf_reset; - volatile uint32_t pend_cmd; /* pending command not finished yet */ - int32_t cmd_retval; /* return value of the cmd response from PF */ - u16 pend_msg; /* flags indicates events from pf not handled yet */ - uint8_t *aq_resp; /* buffer to store the adminq response from PF */ - - /* VSI info */ - struct virtchnl_vf_resource *vf_res; /* All VSIs */ - struct virtchnl_vsi_resource *vsi_res; /* LAN VSI */ - struct i40e_vsi vsi; - uint64_t flags; -}; - #define I40E_MAX_PKT_TYPE 256 #define I40E_FLOW_TYPE_MAX 64 @@ -1288,11 +1239,8 @@ struct i40e_adapter { /* Common for both PF and VF */ struct i40e_hw hw; - /* Specific for PF or VF */ - union { - struct i40e_pf pf; - struct i40e_vf vf; - }; + /* Specific for PF */ + struct i40e_pf pf; /* For vector PMD */ bool rx_bulk_alloc_allowed; @@ -1461,7 +1409,6 @@ int i40e_add_macvlan_filters(struct i40e_vsi *vsi, int total); bool is_device_supported(struct rte_eth_dev *dev, struct rte_pci_driver *drv); bool is_i40e_supported(struct rte_eth_dev *dev); -bool is_i40evf_supported(struct rte_eth_dev *dev); void i40e_set_symmetric_hash_enable_per_port(struct i40e_hw *hw, uint8_t enable); int i40e_validate_input_set(enum i40e_filter_pctype pctype, @@ -1507,26 +1454,15 @@ int i40e_vf_representor_uninit(struct rte_eth_dev *ethdev); #define I40E_DEV_PRIVATE_TO_ADAPTER(adapter) \ ((struct i40e_adapter *)adapter) -/* I40EVF_DEV_PRIVATE_TO */ -#define I40EVF_DEV_PRIVATE_TO_VF(adapter) \ - (&((struct i40e_adapter *)adapter)->vf) - static inline struct i40e_vsi * i40e_get_vsi_from_adapter(struct i40e_adapter *adapter) { - struct i40e_hw *hw; - if (!adapter) return NULL; - hw = I40E_DEV_PRIVATE_TO_HW(adapter); - if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) { - struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(adapter); - return &vf->vsi; - } else { - struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(adapter); - return pf->main_vsi; - } + struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(adapter); + + return pf->main_vsi; } #define I40E_DEV_PRIVATE_TO_MAIN_VSI(adapter) \ i40e_get_vsi_from_adapter((struct i40e_adapter *)adapter) @@ -1549,10 +1485,6 @@ i40e_get_vsi_from_adapter(struct i40e_adapter *adapter) #define I40E_PF_TO_ADAPTER(pf) \ ((struct i40e_adapter *)pf->adapter) -/* I40E_VF_TO */ -#define I40E_VF_TO_HW(vf) \ - (&(((struct i40e_vf *)vf)->adapter->hw)) - static inline void i40e_init_adminq_parameter(struct i40e_hw *hw) { diff a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c (rejected hunks) @@ -1942,12 +1942,10 @@ i40e_dev_rx_queue_setup(struct rte_eth_dev *dev, const struct rte_eth_rxconf *rx_conf, struct rte_mempool *mp) { - struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_adapter *ad = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct i40e_vsi *vsi; struct i40e_pf *pf = NULL; - struct i40e_vf *vf = NULL; struct i40e_rx_queue *rxq; const struct rte_memzone *rz; uint32_t ring_size; @@ -1958,22 +1956,14 @@ i40e_dev_rx_queue_setup(struct rte_eth_dev *dev, offloads = rx_conf->offloads | dev->data->dev_conf.rxmode.offloads; - if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) { - vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - vsi = &vf->vsi; - if (!vsi) - return -EINVAL; - reg_idx = queue_idx; - } else { - pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); - vsi = i40e_pf_get_vsi_by_qindex(pf, queue_idx); - if (!vsi) - return -EINVAL; - q_offset = i40e_get_queue_offset_by_qindex(pf, queue_idx); - if (q_offset < 0) - return -EINVAL; - reg_idx = vsi->base_queue + q_offset; - } + pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); + vsi = i40e_pf_get_vsi_by_qindex(pf, queue_idx); + if (!vsi) + return -EINVAL; + q_offset = i40e_get_queue_offset_by_qindex(pf, queue_idx); + if (q_offset < 0) + return -EINVAL; + reg_idx = vsi->base_queue + q_offset; if (nb_desc % I40E_ALIGN_RING_DESC != 0 || (nb_desc > I40E_MAX_RING_DESC) || @@ -2282,10 +2272,8 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev *dev, unsigned int socket_id, const struct rte_eth_txconf *tx_conf) { - struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vsi *vsi; struct i40e_pf *pf = NULL; - struct i40e_vf *vf = NULL; struct i40e_tx_queue *txq; const struct rte_memzone *tz; uint32_t ring_size; @@ -2296,20 +2284,14 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev *dev, offloads = tx_conf->offloads | dev->data->dev_conf.txmode.offloads; - if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) { - vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - vsi = &vf->vsi; - reg_idx = queue_idx; - } else { - pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); - vsi = i40e_pf_get_vsi_by_qindex(pf, queue_idx); - if (!vsi) - return -EINVAL; - q_offset = i40e_get_queue_offset_by_qindex(pf, queue_idx); - if (q_offset < 0) - return -EINVAL; - reg_idx = vsi->base_queue + q_offset; - } + pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); + vsi = i40e_pf_get_vsi_by_qindex(pf, queue_idx); + if (!vsi) + return -EINVAL; + q_offset = i40e_get_queue_offset_by_qindex(pf, queue_idx); + if (q_offset < 0) + return -EINVAL; + reg_idx = vsi->base_queue + q_offset; if (nb_desc % I40E_ALIGN_RING_DESC != 0 || (nb_desc > I40E_MAX_RING_DESC) || diff a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build (rejected hunks) @@ -12,7 +12,6 @@ objs = [base_objs] sources = files( 'i40e_ethdev.c', 'i40e_rxtx.c', - 'i40e_ethdev_vf.c', 'i40e_pf.c', 'i40e_fdir.c', 'i40e_flow.c', diff a/drivers/net/i40e/rte_pmd_i40e.c b/drivers/net/i40e/rte_pmd_i40e.c (rejected hunks) @@ -2410,8 +2410,7 @@ int rte_pmd_i40e_flow_type_mapping_reset(uint16_t port) dev = &rte_eth_devices[port]; - if (!is_i40e_supported(dev) && - !is_i40evf_supported(dev)) + if (!is_i40e_supported(dev)) return -ENOTSUP; i40e_set_default_pctype_table(dev); @@ -2431,8 +2430,7 @@ int rte_pmd_i40e_flow_type_mapping_get( dev = &rte_eth_devices[port]; - if (!is_i40e_supported(dev) && - !is_i40evf_supported(dev)) + if (!is_i40e_supported(dev)) return -ENOTSUP; ad = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); @@ -2460,8 +2458,7 @@ rte_pmd_i40e_flow_type_mapping_update( dev = &rte_eth_devices[port]; - if (!is_i40e_supported(dev) && - !is_i40evf_supported(dev)) + if (!is_i40e_supported(dev)) return -ENOTSUP; if (count > I40E_FLOW_TYPE_MAX) Checking patch drivers/net/iavf/iavf_ethdev.c... error: while searching for: return ret; } static int iavf_drv_i40evf_check_handler(__rte_unused const char *key, const char *value, __rte_unused void *opaque) { if (strcmp(value, "i40evf")) return -1; return 0; } static int iavf_drv_i40evf_selected(struct rte_devargs *devargs, uint16_t device_id) { struct rte_kvargs *kvlist; int ret = 0; if (device_id != IAVF_DEV_ID_VF && device_id != IAVF_DEV_ID_VF_HV && device_id != IAVF_DEV_ID_X722_VF && device_id != IAVF_DEV_ID_X722_A0_VF) return 0; if (devargs == NULL) return 0; kvlist = rte_kvargs_parse(devargs->args, NULL); if (kvlist == NULL) return 0; if (!rte_kvargs_count(kvlist, RTE_DEVARGS_KEY_DRIVER)) goto exit; /* i40evf driver selected when there's a key-value pair: * driver=i40evf */ if (rte_kvargs_process(kvlist, RTE_DEVARGS_KEY_DRIVER, iavf_drv_i40evf_check_handler, NULL) < 0) goto exit; ret = 1; exit: rte_kvargs_free(kvlist); return ret; } static int eth_iavf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) { if (iavf_dcf_cap_selected(pci_dev->device.devargs) || iavf_drv_i40evf_selected(pci_dev->device.devargs, pci_dev->id.device_id)) return 1; return rte_eth_dev_pci_generic_probe(pci_dev, error: patch failed: drivers/net/iavf/iavf_ethdev.c:2547 error: while searching for: RTE_PMD_REGISTER_PCI(net_iavf, rte_iavf_pmd); RTE_PMD_REGISTER_PCI_TABLE(net_iavf, pci_id_iavf_map); RTE_PMD_REGISTER_KMOD_DEP(net_iavf, "* igb_uio | vfio-pci"); RTE_PMD_REGISTER_PARAM_STRING(net_iavf, "cap=dcf driver=i40evf"); RTE_LOG_REGISTER_SUFFIX(iavf_logtype_init, init, NOTICE); RTE_LOG_REGISTER_SUFFIX(iavf_logtype_driver, driver, NOTICE); #ifdef RTE_ETHDEV_DEBUG_RX error: patch failed: drivers/net/iavf/iavf_ethdev.c:2621 Applying patch drivers/net/iavf/iavf_ethdev.c with 2 rejects... Rejected hunk #1. Rejected hunk #2. diff a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c (rejected hunks) @@ -2547,58 +2547,10 @@ iavf_dcf_cap_selected(struct rte_devargs *devargs) return ret; } -static int -iavf_drv_i40evf_check_handler(__rte_unused const char *key, - const char *value, __rte_unused void *opaque) -{ - if (strcmp(value, "i40evf")) - return -1; - - return 0; -} - -static int -iavf_drv_i40evf_selected(struct rte_devargs *devargs, uint16_t device_id) -{ - struct rte_kvargs *kvlist; - int ret = 0; - - if (device_id != IAVF_DEV_ID_VF && - device_id != IAVF_DEV_ID_VF_HV && - device_id != IAVF_DEV_ID_X722_VF && - device_id != IAVF_DEV_ID_X722_A0_VF) - return 0; - - if (devargs == NULL) - return 0; - - kvlist = rte_kvargs_parse(devargs->args, NULL); - if (kvlist == NULL) - return 0; - - if (!rte_kvargs_count(kvlist, RTE_DEVARGS_KEY_DRIVER)) - goto exit; - - /* i40evf driver selected when there's a key-value pair: - * driver=i40evf - */ - if (rte_kvargs_process(kvlist, RTE_DEVARGS_KEY_DRIVER, - iavf_drv_i40evf_check_handler, NULL) < 0) - goto exit; - - ret = 1; - -exit: - rte_kvargs_free(kvlist); - return ret; -} - static int eth_iavf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) { - if (iavf_dcf_cap_selected(pci_dev->device.devargs) || - iavf_drv_i40evf_selected(pci_dev->device.devargs, - pci_dev->id.device_id)) + if (iavf_dcf_cap_selected(pci_dev->device.devargs)) return 1; return rte_eth_dev_pci_generic_probe(pci_dev, @@ -2621,7 +2573,7 @@ static struct rte_pci_driver rte_iavf_pmd = { RTE_PMD_REGISTER_PCI(net_iavf, rte_iavf_pmd); RTE_PMD_REGISTER_PCI_TABLE(net_iavf, pci_id_iavf_map); RTE_PMD_REGISTER_KMOD_DEP(net_iavf, "* igb_uio | vfio-pci"); -RTE_PMD_REGISTER_PARAM_STRING(net_iavf, "cap=dcf driver=i40evf"); +RTE_PMD_REGISTER_PARAM_STRING(net_iavf, "cap=dcf"); RTE_LOG_REGISTER_SUFFIX(iavf_logtype_init, init, NOTICE); RTE_LOG_REGISTER_SUFFIX(iavf_logtype_driver, driver, NOTICE); #ifdef RTE_ETHDEV_DEBUG_RX Checking patch doc/guides/howto/lm_bond_virtio_sriov.rst... error: while searching for: cat /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs cat /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs rmmod i40evf vm_virtio_vf_one_212_46.sh ~~~~~~~~~~~~~~~~~~~~~~~~~~ error: patch failed: doc/guides/howto/lm_bond_virtio_sriov.rst:392 error: while searching for: cat /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs cat /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs rmmod i40evf vm_virtio_one_migrate.sh ~~~~~~~~~~~~~~~~~~~~~~~~ error: patch failed: doc/guides/howto/lm_bond_virtio_sriov.rst:492 Checking patch doc/guides/nics/features/i40e_vf.ini... error: doc/guides/nics/features/i40e_vf.ini: does not exist in index Checking patch doc/guides/nics/intel_vf.rst... error: while searching for: Therefore, a NIC is logically distributed among multiple virtual machines (as shown in :numref:`figure_single_port_nic`), while still having global data in common to share with the Physical Function and other Virtual Functions. The DPDK fm10kvf, i40evf, igbvf or ixgbevf as a Poll Mode Driver (PMD) serves for the Intel® 82576 Gigabit Ethernet Controller, Intel® Ethernet Controller I350 family, Intel® 82599 10 Gigabit Ethernet Controller NIC, Intel® Fortville 10/40 Gigabit Ethernet Controller NIC's virtual PCI function, or PCIe host-interface of the Intel Ethernet Switch FM10000 Series. error: patch failed: doc/guides/nics/intel_vf.rst:26 error: while searching for: assignment in hypervisor. Take qemu for example, the device assignment should carry the IAVF device id (0x1889) like ``-device vfio-pci,x-pci-device-id=0x1889,host=03:0a.0``. Starting from DPDK 21.05, the default VF driver for Intel® 700 Series Ethernet Controller will be IAVF. No new feature will be added into i40evf except bug fix until it's removed in DPDK 21.11. Between DPDK 21.05 and 21.11, by using the ``devargs`` option ``driver=i40evf``, i40evf PMD still can be used on Intel® 700 Series Ethernet Controller, for example:: -a 81:02.0,driver=i40evf When IAVF is backed by an Intel® E810 device, the "Protocol Extraction" feature which is supported by ice PMD is also available for IAVF PMD. The same devargs with the same parameters can be applied to IAVF PMD, for detail please reference the section ``Protocol extraction for per queue`` of ice.rst. error: patch failed: doc/guides/nics/intel_vf.rst:88 Checking patch doc/guides/rel_notes/deprecation.rst... error: while searching for: consistent with existing outer header checksum status flag naming, which should help in reducing confusion about its usage. * i40e: As there are both i40evf and iavf pmd, the functions of them are duplicated. And now more and more advanced features are developed on iavf. To keep consistent with kernel driver's name (https://patchwork.ozlabs.org/patch/970154/), i40evf is no need to maintain. Starting from 21.05, the default VF driver of i40e will be iavf, but i40evf can still be used if users specify the devarg "driver=i40evf". I40evf will be deleted in DPDK 21.11. * net: ``s_addr`` and ``d_addr`` fields of ``rte_ether_hdr`` structure will be renamed in DPDK 21.11 to avoid conflict with Windows Sockets headers. error: patch failed: doc/guides/rel_notes/deprecation.rst:164 Checking patch doc/guides/rel_notes/release_21_11.rst... error: while searching for: blacklist/whitelist are removed. Users must use the new block/allow list arguments. API Changes ----------- error: patch failed: doc/guides/rel_notes/release_21_11.rst:126 Applying patch doc/guides/howto/lm_bond_virtio_sriov.rst with 2 rejects... Rejected hunk #1. Rejected hunk #2. Applying patch doc/guides/nics/intel_vf.rst with 2 rejects... Rejected hunk #1. Rejected hunk #2. Applying patch doc/guides/rel_notes/deprecation.rst with 1 reject... Rejected hunk #1. Applying patch doc/guides/rel_notes/release_21_11.rst with 1 reject... Rejected hunk #1. diff a/doc/guides/howto/lm_bond_virtio_sriov.rst b/doc/guides/howto/lm_bond_virtio_sriov.rst (rejected hunks) @@ -392,7 +392,7 @@ Set up Virtual Functions on host_server_1 cat /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs cat /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs - rmmod i40evf + rmmod iavf vm_virtio_vf_one_212_46.sh ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -492,7 +492,7 @@ Set up Virtual Functions on host_server_2 cat /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs cat /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs - rmmod i40evf + rmmod iavf vm_virtio_one_migrate.sh ~~~~~~~~~~~~~~~~~~~~~~~~ diff a/doc/guides/nics/intel_vf.rst b/doc/guides/nics/intel_vf.rst (rejected hunks) @@ -26,7 +26,7 @@ Refer to :numref:`figure_single_port_nic`. Therefore, a NIC is logically distributed among multiple virtual machines (as shown in :numref:`figure_single_port_nic`), while still having global data in common to share with the Physical Function and other Virtual Functions. -The DPDK fm10kvf, i40evf, igbvf or ixgbevf as a Poll Mode Driver (PMD) serves for the Intel® 82576 Gigabit Ethernet Controller, +The DPDK fm10kvf, iavf, igbvf or ixgbevf as a Poll Mode Driver (PMD) serves for the Intel® 82576 Gigabit Ethernet Controller, Intel® Ethernet Controller I350 family, Intel® 82599 10 Gigabit Ethernet Controller NIC, Intel® Fortville 10/40 Gigabit Ethernet Controller NIC's virtual PCI function, or PCIe host-interface of the Intel Ethernet Switch FM10000 Series. @@ -88,12 +88,6 @@ For more detail on SR-IOV, please refer to the following documents: assignment in hypervisor. Take qemu for example, the device assignment should carry the IAVF device id (0x1889) like ``-device vfio-pci,x-pci-device-id=0x1889,host=03:0a.0``. - Starting from DPDK 21.05, the default VF driver for Intel® 700 Series Ethernet Controller will be IAVF. No new feature - will be added into i40evf except bug fix until it's removed in DPDK 21.11. Between DPDK 21.05 and 21.11, by using the - ``devargs`` option ``driver=i40evf``, i40evf PMD still can be used on Intel® 700 Series Ethernet Controller, for example:: - - -a 81:02.0,driver=i40evf - When IAVF is backed by an Intel® E810 device, the "Protocol Extraction" feature which is supported by ice PMD is also available for IAVF PMD. The same devargs with the same parameters can be applied to IAVF PMD, for detail please reference the section ``Protocol extraction for per queue`` of ice.rst. diff a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst (rejected hunks) @@ -164,14 +164,6 @@ Deprecation Notices consistent with existing outer header checksum status flag naming, which should help in reducing confusion about its usage. -* i40e: As there are both i40evf and iavf pmd, the functions of them are - duplicated. And now more and more advanced features are developed on iavf. - To keep consistent with kernel driver's name - (https://patchwork.ozlabs.org/patch/970154/), i40evf is no need to maintain. - Starting from 21.05, the default VF driver of i40e will be iavf, but i40evf - can still be used if users specify the devarg "driver=i40evf". I40evf will - be deleted in DPDK 21.11. - * net: ``s_addr`` and ``d_addr`` fields of ``rte_ether_hdr`` structure will be renamed in DPDK 21.11 to avoid conflict with Windows Sockets headers. diff a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst (rejected hunks) @@ -126,6 +126,8 @@ Removed Items blacklist/whitelist are removed. Users must use the new block/allow list arguments. +* i40e: Removed i40evf driver. Due to iavf already became the default VF + driver for i40e devices, so remove i40evf due to it's no need to maintain. API Changes ----------- https://lab.dpdk.org/results/dashboard/patchsets/18927/ UNH-IOL DPDK Community Lab