static int enicpmd_dev_configure(struct rte_eth_dev *eth_dev) { int ret; int mask; struct enic *enic = pmd_priv(eth_dev); if (rte_eal_process_type() != RTE_PROC_PRIMARY) return -E_RTE_SECONDARY; ENICPMD_FUNC_TRACE(); ret = enic_set_vnic_res(enic); if (ret) { dev_err(enic, "Set vNIC resource num failed, aborting\n"); return ret; } enic->mc_count = 0; enic->hw_ip_checksum = !!(eth_dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_CHECKSUM); /* All vlan offload masks to apply the current settings */ mask = ETH_VLAN_STRIP_MASK | ETH_VLAN_FILTER_MASK | ETH_VLAN_EXTEND_MASK; ret = enicpmd_vlan_offload_set(eth_dev, mask); if (ret) { dev_err(enic, "Failed to configure VLAN offloads\n"); return ret; } /* * Initialize RSS with the default reta and key. If the user key is * given (rx_adv_conf.rss_conf.rss_key), will use that instead of the * default key. */ return enic_init_rss_nic_cfg(enic); }
static int enicpmd_dev_configure(struct rte_eth_dev *eth_dev) { int ret; struct enic *enic = pmd_priv(eth_dev); ENICPMD_FUNC_TRACE(); ret = enic_set_vnic_res(enic); if (ret) { dev_err(enic, "Set vNIC resource num failed, aborting\n"); return ret; } if (eth_dev->data->dev_conf.rxmode.split_hdr_size && eth_dev->data->dev_conf.rxmode.header_split) { /* Enable header-data-split */ enic_set_hdr_split_size(enic, eth_dev->data->dev_conf.rxmode.split_hdr_size); } enicpmd_vlan_offload_set(eth_dev, ETH_VLAN_STRIP_MASK); enic->hw_ip_checksum = eth_dev->data->dev_conf.rxmode.hw_ip_checksum; return 0; }