[Intel-wired-lan] [PATCH net v1] iavf: Fix adopting new combined setting

kernel test robot lkp at intel.com
Wed Oct 27 23:11:33 UTC 2021


Hi Michal,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net/master]

url:    https://github.com/0day-ci/linux/commits/Michal-Maloszewski/iavf-Fix-adopting-new-combined-setting/20211027-235410
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git 440ffcdd9db4758f1503a25fb49a8e15ca83d6bc
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/d8f58ff85a3ec0d3ae2ff0779cceee3fb1c947b7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Michal-Maloszewski/iavf-Fix-adopting-new-combined-setting/20211027-235410
        git checkout d8f58ff85a3ec0d3ae2ff0779cceee3fb1c947b7
        # save the attached .config to linux build tree
        mkdir build_dir
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/net/ethernet/intel/iavf/ lib/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   drivers/net/ethernet/intel/iavf/iavf_main.c: In function 'iavf_reset_task':
>> drivers/net/ethernet/intel/iavf/iavf_main.c:2213:24: error: 'IAVF_FLAG_REINIT_MSIX_NEEDED' undeclared (first use in this function); did you mean 'IAVF_FLAG_REINIT_ITR_NEEDED'?
    2213 |  if ((adapter->flags & IAVF_FLAG_REINIT_MSIX_NEEDED) ||
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                        IAVF_FLAG_REINIT_ITR_NEEDED
   drivers/net/ethernet/intel/iavf/iavf_main.c:2213:24: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/net/ethernet/intel/iavf/iavf_main.c:2288:3: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
    2288 |   if (err)
         |   ^~
   drivers/net/ethernet/intel/iavf/iavf_main.c:2291:4: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    2291 |    adapter->flags &= ~IAVF_FLAG_REINIT_ITR_NEEDED;
         |    ^~~~~~~
   cc1: all warnings being treated as errors


vim +2213 drivers/net/ethernet/intel/iavf/iavf_main.c

  2088	
  2089	/**
  2090	 * iavf_reset_task - Call-back task to handle hardware reset
  2091	 * @work: pointer to work_struct
  2092	 *
  2093	 * During reset we need to shut down and reinitialize the admin queue
  2094	 * before we can use it to communicate with the PF again. We also clear
  2095	 * and reinit the rings because that context is lost as well.
  2096	 **/
  2097	static void iavf_reset_task(struct work_struct *work)
  2098	{
  2099		struct iavf_adapter *adapter = container_of(work,
  2100							      struct iavf_adapter,
  2101							      reset_task);
  2102		struct virtchnl_vf_resource *vfres = adapter->vf_res;
  2103		struct net_device *netdev = adapter->netdev;
  2104		struct iavf_hw *hw = &adapter->hw;
  2105		struct iavf_mac_filter *f, *ftmp;
  2106		struct iavf_vlan_filter *vlf;
  2107		struct iavf_cloud_filter *cf;
  2108		u32 reg_val;
  2109		int i = 0, err;
  2110		bool running;
  2111	
  2112		/* When device is being removed it doesn't make sense to run the reset
  2113		 * task, just return in such a case.
  2114		 */
  2115		if (mutex_is_locked(&adapter->remove_lock))
  2116			return;
  2117	
  2118		if (iavf_lock_timeout(&adapter->crit_lock, 200)) {
  2119			schedule_work(&adapter->reset_task);
  2120			return;
  2121		}
  2122		while (!mutex_trylock(&adapter->client_lock))
  2123			usleep_range(500, 1000);
  2124		if (CLIENT_ENABLED(adapter)) {
  2125			adapter->flags &= ~(IAVF_FLAG_CLIENT_NEEDS_OPEN |
  2126					    IAVF_FLAG_CLIENT_NEEDS_CLOSE |
  2127					    IAVF_FLAG_CLIENT_NEEDS_L2_PARAMS |
  2128					    IAVF_FLAG_SERVICE_CLIENT_REQUESTED);
  2129			cancel_delayed_work_sync(&adapter->client_task);
  2130			iavf_notify_client_close(&adapter->vsi, true);
  2131		}
  2132		iavf_misc_irq_disable(adapter);
  2133		if (adapter->flags & IAVF_FLAG_RESET_NEEDED) {
  2134			adapter->flags &= ~IAVF_FLAG_RESET_NEEDED;
  2135			/* Restart the AQ here. If we have been reset but didn't
  2136			 * detect it, or if the PF had to reinit, our AQ will be hosed.
  2137			 */
  2138			iavf_shutdown_adminq(hw);
  2139			iavf_init_adminq(hw);
  2140			iavf_request_reset(adapter);
  2141		}
  2142		adapter->flags |= IAVF_FLAG_RESET_PENDING;
  2143	
  2144		/* poll until we see the reset actually happen */
  2145		for (i = 0; i < IAVF_RESET_WAIT_DETECTED_COUNT; i++) {
  2146			reg_val = rd32(hw, IAVF_VF_ARQLEN1) &
  2147				  IAVF_VF_ARQLEN1_ARQENABLE_MASK;
  2148			if (!reg_val)
  2149				break;
  2150			usleep_range(5000, 10000);
  2151		}
  2152		if (i == IAVF_RESET_WAIT_DETECTED_COUNT) {
  2153			dev_info(&adapter->pdev->dev, "Never saw reset\n");
  2154			goto continue_reset; /* act like the reset happened */
  2155		}
  2156	
  2157		/* wait until the reset is complete and the PF is responding to us */
  2158		for (i = 0; i < IAVF_RESET_WAIT_COMPLETE_COUNT; i++) {
  2159			/* sleep first to make sure a minimum wait time is met */
  2160			msleep(IAVF_RESET_WAIT_MS);
  2161	
  2162			reg_val = rd32(hw, IAVF_VFGEN_RSTAT) &
  2163				  IAVF_VFGEN_RSTAT_VFR_STATE_MASK;
  2164			if (reg_val == VIRTCHNL_VFR_VFACTIVE)
  2165				break;
  2166		}
  2167	
  2168		pci_set_master(adapter->pdev);
  2169	
  2170		if (i == IAVF_RESET_WAIT_COMPLETE_COUNT) {
  2171			dev_err(&adapter->pdev->dev, "Reset never finished (%x)\n",
  2172				reg_val);
  2173			iavf_disable_vf(adapter);
  2174			mutex_unlock(&adapter->client_lock);
  2175			return; /* Do not attempt to reinit. It's dead, Jim. */
  2176		}
  2177	
  2178	continue_reset:
  2179		/* We don't use netif_running() because it may be true prior to
  2180		 * ndo_open() returning, so we can't assume it means all our open
  2181		 * tasks have finished, since we're not holding the rtnl_lock here.
  2182		 */
  2183		running = ((adapter->state == __IAVF_RUNNING) ||
  2184			   (adapter->state == __IAVF_RESETTING));
  2185	
  2186		if (running) {
  2187			netif_carrier_off(netdev);
  2188			netif_tx_stop_all_queues(netdev);
  2189			adapter->link_up = false;
  2190			iavf_napi_disable_all(adapter);
  2191		}
  2192		iavf_irq_disable(adapter);
  2193	
  2194		adapter->state = __IAVF_RESETTING;
  2195		adapter->flags &= ~IAVF_FLAG_RESET_PENDING;
  2196	
  2197		/* free the Tx/Rx rings and descriptors, might be better to just
  2198		 * re-use them sometime in the future
  2199		 */
  2200		iavf_free_all_rx_resources(adapter);
  2201		iavf_free_all_tx_resources(adapter);
  2202	
  2203		adapter->flags |= IAVF_FLAG_QUEUES_DISABLED;
  2204		/* kill and reinit the admin queue */
  2205		iavf_shutdown_adminq(hw);
  2206		adapter->current_op = VIRTCHNL_OP_UNKNOWN;
  2207		err = iavf_init_adminq(hw);
  2208		if (err)
  2209			dev_info(&adapter->pdev->dev, "Failed to init adminq: %d\n",
  2210				 err);
  2211		adapter->aq_required = 0;
  2212	
> 2213		if ((adapter->flags & IAVF_FLAG_REINIT_MSIX_NEEDED) ||
  2214		    (adapter->flags & IAVF_FLAG_REINIT_ITR_NEEDED)) {
  2215			err = iavf_reinit_interrupt_scheme(adapter);
  2216			if (err)
  2217				goto reset_err;
  2218		}
  2219	
  2220		if (RSS_AQ(adapter)) {
  2221			adapter->aq_required |= IAVF_FLAG_AQ_CONFIGURE_RSS;
  2222		} else {
  2223			err = iavf_init_rss(adapter);
  2224			if (err)
  2225				goto reset_err;
  2226		}
  2227	
  2228		adapter->aq_required |= IAVF_FLAG_AQ_GET_CONFIG;
  2229		adapter->aq_required |= IAVF_FLAG_AQ_MAP_VECTORS;
  2230	
  2231		spin_lock_bh(&adapter->mac_vlan_list_lock);
  2232	
  2233		/* Delete filter for the current MAC address, it could have
  2234		 * been changed by the PF via administratively set MAC.
  2235		 * Will be re-added via VIRTCHNL_OP_GET_VF_RESOURCES.
  2236		 */
  2237		list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) {
  2238			if (ether_addr_equal(f->macaddr, adapter->hw.mac.addr)) {
  2239				list_del(&f->list);
  2240				kfree(f);
  2241			}
  2242		}
  2243		/* re-add all MAC filters */
  2244		list_for_each_entry(f, &adapter->mac_filter_list, list) {
  2245			f->add = true;
  2246		}
  2247		/* re-add all VLAN filters */
  2248		list_for_each_entry(vlf, &adapter->vlan_filter_list, list) {
  2249			vlf->add = true;
  2250		}
  2251	
  2252		spin_unlock_bh(&adapter->mac_vlan_list_lock);
  2253	
  2254		/* check if TCs are running and re-add all cloud filters */
  2255		spin_lock_bh(&adapter->cloud_filter_list_lock);
  2256		if ((vfres->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_ADQ) &&
  2257		    adapter->num_tc) {
  2258			list_for_each_entry(cf, &adapter->cloud_filter_list, list) {
  2259				cf->add = true;
  2260			}
  2261		}
  2262		spin_unlock_bh(&adapter->cloud_filter_list_lock);
  2263	
  2264		adapter->aq_required |= IAVF_FLAG_AQ_ADD_MAC_FILTER;
  2265		adapter->aq_required |= IAVF_FLAG_AQ_ADD_VLAN_FILTER;
  2266		adapter->aq_required |= IAVF_FLAG_AQ_ADD_CLOUD_FILTER;
  2267		iavf_misc_irq_enable(adapter);
  2268	
  2269		mod_delayed_work(iavf_wq, &adapter->watchdog_task, 2);
  2270	
  2271		/* We were running when the reset started, so we need to restore some
  2272		 * state here.
  2273		 */
  2274		if (running) {
  2275			/* allocate transmit descriptors */
  2276			err = iavf_setup_all_tx_resources(adapter);
  2277			if (err)
  2278				goto reset_err;
  2279	
  2280			/* allocate receive descriptors */
  2281			err = iavf_setup_all_rx_resources(adapter);
  2282			if (err)
  2283				goto reset_err;
  2284	
  2285		if ((adapter->flags & IAVF_FLAG_REINIT_MSIX_NEEDED) ||
  2286		    (adapter->flags & IAVF_FLAG_REINIT_ITR_NEEDED)) {
  2287			err = iavf_request_traffic_irqs(adapter, netdev->name);
> 2288			if (err)
  2289				goto reset_err;
  2290	
  2291				adapter->flags &= ~IAVF_FLAG_REINIT_ITR_NEEDED;
  2292			}
  2293	
  2294			iavf_configure(adapter);
  2295	
  2296			iavf_up_complete(adapter);
  2297	
  2298			iavf_irq_enable(adapter, true);
  2299		} else {
  2300			adapter->state = __IAVF_DOWN;
  2301			wake_up(&adapter->down_waitqueue);
  2302		}
  2303	
  2304		adapter->flags &= ~IAVF_FLAG_REINIT_ITR_NEEDED;
  2305		mutex_unlock(&adapter->client_lock);
  2306		mutex_unlock(&adapter->crit_lock);
  2307	
  2308		return;
  2309	reset_err:
  2310		mutex_unlock(&adapter->client_lock);
  2311		mutex_unlock(&adapter->crit_lock);
  2312		dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n");
  2313		iavf_close(netdev);
  2314	}
  2315	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 66087 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20211028/609c8fd3/attachment-0001.bin>


More information about the Intel-wired-lan mailing list