All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <error27@gmail.com>
To: Jeff Chen <jeff.chen_1@nxp.com>
Cc: linux-wireless@vger.kernel.org
Subject: [bug report] wifi: nxp: add nxpwifi driver for IW61x
Date: Wed, 12 Aug 2026 11:19:17 +0300	[thread overview]
Message-ID: <anwshVbQWXXHTJpa@stanley.mountain> (raw)

Hello Jeff Chen,

Commit 73b01e57ed3e ("wifi: nxp: add nxpwifi driver for IW61x") from
Jun 5, 2026 (linux-next), leads to the following Smatch static
checker warning:

	drivers/net/wireless/nxp/nxpwifi/main.c:627 _nxpwifi_fw_dpc()
	warn: missing error code here? 'IS_ERR()' failed. 'ret' = '0'

drivers/net/wireless/nxp/nxpwifi/main.c
    552 static int _nxpwifi_fw_dpc(const struct firmware *firmware, void *context)
    553 {
    554         int ret = 0;
    555         char fmt[64];
    556         struct nxpwifi_adapter *adapter = context;
    557         struct nxpwifi_fw_image fw;
    558         bool init_failed = false;
    559         struct wireless_dev *wdev;
    560         struct completion *fw_done = adapter->fw_done;
    561 
    562         if (!firmware) {
    563                 nxpwifi_dbg(adapter, ERROR,
    564                             "Failed to get firmware %s\n", adapter->fw_name);
    565                 ret = -EINVAL;
    566                 goto err_dnld_fw;
    567         }
    568 
    569         memset(&fw, 0, sizeof(struct nxpwifi_fw_image));
    570         adapter->firmware = firmware;
    571         fw.fw_buf = (u8 *)adapter->firmware->data;
    572         fw.fw_len = adapter->firmware->size;
    573 
    574         if (adapter->if_ops.dnld_fw)
    575                 ret = adapter->if_ops.dnld_fw(adapter, &fw);
    576         else
    577                 ret = nxpwifi_dnld_fw(adapter, &fw);
    578 
    579         if (ret)
    580                 goto err_dnld_fw;
    581 
    582         nxpwifi_dbg(adapter, MSG, "WLAN FW is active\n");
    583 
    584         /* Load optional calibration data */
    585         ret = request_firmware(&adapter->cal_data, cal_data_name, adapter->dev);
    586         if (ret) {
    587                 nxpwifi_dbg(adapter, INFO, "no %s, using default cal\n",
    588                             cal_data_name);
    589                 adapter->cal_data = NULL;
    590         }
    591 
    592         /* enable host interrupt after fw dnld is successful */
    593         if (adapter->if_ops.enable_int) {
    594                 ret = adapter->if_ops.enable_int(adapter);
    595                 if (ret)
    596                         goto err_dnld_fw;
    597         }
    598 
    599         ret = nxpwifi_init_fw(adapter);
    600         if (ret)
    601                 goto err_init_fw;
    602 
    603         maybe_quirk_fw_disable_ds(adapter);
    604 
    605         if (!adapter->wiphy) {
    606                 if (nxpwifi_register_cfg80211(adapter)) {
    607                         nxpwifi_dbg(adapter, ERROR,
    608                                     "cannot register with cfg80211\n");
    609                         goto err_init_fw;

error code not set.

    610                 }
    611         }
    612 
    613         if (nxpwifi_init_channel_scan_gap(adapter)) {
    614                 nxpwifi_dbg(adapter, ERROR,
    615                             "could not init channel stats table\n");
    616                 goto err_init_chan_scan;

not set.
    617         }
    618 
    619         rtnl_lock();
    620         /* Create station interface by default */
    621         wdev = nxpwifi_add_virtual_intf(adapter->wiphy, "mlan%d", NET_NAME_ENUM,
    622                                         NL80211_IFTYPE_STATION, NULL);
    623         if (IS_ERR(wdev)) {
    624                 nxpwifi_dbg(adapter, ERROR,
    625                             "cannot create default STA interface\n");
    626                 rtnl_unlock();
--> 627                 goto err_add_intf;


not set.

    628         }
    629 
    630         wdev = nxpwifi_add_virtual_intf(adapter->wiphy, "uap%d", NET_NAME_ENUM,
    631                                         NL80211_IFTYPE_AP, NULL);
    632         if (IS_ERR(wdev)) {
    633                 nxpwifi_dbg(adapter, ERROR,
    634                             "cannot create AP interface\n");
    635                 rtnl_unlock();
    636                 goto err_add_intf;

error code not set.

    637         }
    638 
    639         rtnl_unlock();
    640 
    641         nxpwifi_drv_get_driver_version(adapter, fmt, sizeof(fmt) - 1);
    642         nxpwifi_dbg(adapter, MSG, "driver_version = %s\n", fmt);
    643         adapter->is_up = true;
    644         goto done;
    645 
    646 err_add_intf:
    647         vfree(adapter->chan_stats);
    648 err_init_chan_scan:
    649         wiphy_unregister(adapter->wiphy);
    650         wiphy_free(adapter->wiphy);
    651 err_init_fw:
    652         if (adapter->if_ops.disable_int)
    653                 adapter->if_ops.disable_int(adapter);
    654 err_dnld_fw:
    655         nxpwifi_dbg(adapter, ERROR,
    656                     "info: %s: unregister device\n", __func__);
    657         if (adapter->if_ops.unregister_dev)
    658                 adapter->if_ops.unregister_dev(adapter);
    659 
    660         set_bit(NXPWIFI_SURPRISE_REMOVED, &adapter->work_flags);
    661         nxpwifi_terminate_workqueue(adapter);
    662 
    663         if (adapter->hw_status == NXPWIFI_HW_STATUS_READY) {
    664                 pr_debug("info: %s: shutdown nxpwifi\n", __func__);
    665                 nxpwifi_shutdown_drv(adapter);
    666                 nxpwifi_free_cmd_buffers(adapter);
    667         }
    668 
    669         init_failed = true;
    670 done:
    671         if (adapter->cal_data) {
    672                 release_firmware(adapter->cal_data);
    673                 adapter->cal_data = NULL;
    674         }
    675         if (adapter->firmware) {
    676                 release_firmware(adapter->firmware);
    677                 adapter->firmware = NULL;
    678         }
    679         if (init_failed)
    680                 nxpwifi_free_adapter(adapter);
    681 
    682         /* Tell all current and future waiters we're finished */
    683         complete_all(fw_done);
    684 
    685         return ret;
    686 }

This email is a free service from the Smatch-CI project [smatch.sf.net].

regards,
dan carpenter

             reply	other threads:[~2026-08-12  8:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-12  8:19 Dan Carpenter [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-08-12  8:11 [bug report] wifi: nxp: add nxpwifi driver for IW61x Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=anwshVbQWXXHTJpa@stanley.mountain \
    --to=error27@gmail.com \
    --cc=jeff.chen_1@nxp.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.