From nobody Fri Jun 03 14:52:08 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3EBB21B5438C; Fri, 3 Jun 2022 14:52:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LF5Sn0x8rz3MqH; Fri, 3 Jun 2022 14:52:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654267929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xVG51uyg+egFsjuTzRa4KG5pNxgT9GJIosc0lBVuunU=; b=WoFzytR3I1g9NmT3WoLd+vSsExSCY/Ll2XHmEuxqweCJmWxPhxqXs3A/+9W6hxd1kFUyS8 kBS7L6RiSA4ZFFp2yIfzUKs5QeyfcwmjU3lFvZjEMrxSE4KMH0J97q2P0Qk4jxGjHzViDP 38ieNAF2UN2kyoiM11c7WaxFSuOxtpX/f2mze1MShrAzr7gUgz0QHtSOgllx7DZsD2oFf+ 4HTrIwlNIvPr51uXz65xoBO2h61qSzCvcEdht8hB80hUMsrs3J3X0sAHeQ/vLWtWOV4mZj 0qH5VYRQxwmeOASlmeaSqrovuPAJ8ommVaMifJ+EWqLWiqiI1NxBNL6KBpF8rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 00D7A31A4; Fri, 3 Jun 2022 14:52:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 253Eq8pQ072178; Fri, 3 Jun 2022 14:52:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 253Eq8hh072177; Fri, 3 Jun 2022 14:52:08 GMT (envelope-from git) Date: Fri, 3 Jun 2022 14:52:08 GMT Message-Id: <202206031452.253Eq8hh072177@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 645886d028c8 - main - iwlwifi: add sysctl to dump PCI IDs/ names / firmware-prefixes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 645886d028c85b3cb9fb36e96b1edc661cf4c0d8 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654267929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xVG51uyg+egFsjuTzRa4KG5pNxgT9GJIosc0lBVuunU=; b=c9XHeM6KRB6D9Ro8kq8ry/A3A63YSmR1fvOzWbrA6zjaoBsoaUL+0Dg+P4ffAkppxjV5A7 /WPeofh4zMYdRN8oGB2+HMlfOk01fw1ucNjNgpI8Agr1Zmd3cXL6qDvT+6ZsbkjgOXpwqz GSwDEuZ2CwqcS0HHEm/ffgzZKHb7vrpYO5xIuBumV7Upogkg+GENXD8KK7jgE1V24uFQ81 X2ug02jSDDucJFWmOX7UFVwClR/Ep6qSP/ivlGu6wSzIU+7JUpCDCQUf2/n79SrQ5sLfsw HDNK8AH9EJc3Fgsxsf2gpAqfI6qJeMQZt8O2z3EtQNh1wRx2Wc8P4PAxKASXGw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1654267929; a=rsa-sha256; cv=none; b=BDLaOKP2IMFmVyRU/x3+pittXPsIk8VgJxESjpPHmqTz6i90H1dj+JA205jtav1VPNZLIP zqLfHmlByKZlQGh9XJOeknkx2L0n71yTnFdcgjMtd11XuhRQW4VcDWMpOe5xl1FsF1Fg64 6QA8agE5/R0rI5TB+U3RZQ9OVNzuuGgrRfbWXQWj6Mqr45bxbeChUOxEIDo5wf72Pg9wMP Tvs6vz9Z8OkA1eP4BxEACxLwtb78XD81PkA9MlfY/CtabXbfcpPHdsXmegUTB56+dkv6Jy kuaktRbuYWDzuu+LEdtKiUV8onKQ/tuNWOaLRqqs+CNFCQxqyaaxQtTeHXywkg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=645886d028c85b3cb9fb36e96b1edc661cf4c0d8 commit 645886d028c85b3cb9fb36e96b1edc661cf4c0d8 Author: Bjoern A. Zeeb AuthorDate: 2022-05-18 16:05:49 +0000 Commit: Bjoern A. Zeeb CommitDate: 2022-06-03 14:50:15 +0000 iwlwifi: add sysctl to dump PCI IDs/ names / firmware-prefixes Add a FreeBSD-specifc SYSCTL_PROC to dump the list of PCI IDs / name / firmware-prefix which can be post-processed for man pages (iwlwifi.4 and iwlwififw.4) or the wiki. The output still yields duplicates depending on by what information you need so one may wants to filter them out (try not to use sort/uniq). Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/contrib/dev/iwlwifi/pcie/drv.c | 62 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/sys/contrib/dev/iwlwifi/pcie/drv.c b/sys/contrib/dev/iwlwifi/pcie/drv.c index 536a40f1e5cc..6b9ce03850ec 100644 --- a/sys/contrib/dev/iwlwifi/pcie/drv.c +++ b/sys/contrib/dev/iwlwifi/pcie/drv.c @@ -1767,3 +1767,65 @@ void iwl_pci_unregister_driver(void) { pci_unregister_driver(&iwl_pci_driver); } + +#if defined(__FreeBSD__) +static int +sysctl_iwlwifi_pci_ids_name(SYSCTL_HANDLER_ARGS) +{ + const struct pci_device_id *id; + struct sbuf *sb; + int error, i; + + error = sysctl_wire_old_buffer(req, 0); + if (error != 0) + return (error); + sb = sbuf_new_for_sysctl(NULL, NULL, 512, req); + if (sb == NULL) + return (ENOMEM); + + id = iwl_hw_card_ids; + while (id != NULL && id->vendor != 0) { + + if ((id->driver_data & TRANS_CFG_MARKER) != 0) { + /* Skip and print them below. */ + + } else if (id->driver_data != 0) { + const struct iwl_cfg *cfg; + + cfg = (void *)(id->driver_data & ~TRANS_CFG_MARKER); + sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\n", + id->vendor, id->device, id->subvendor, id->subdevice, + cfg->name, cfg->fw_name_pre); + } else { + sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\n", + id->vendor, id->device, id->subvendor, id->subdevice, + "",""); + } + id++; + } + + for (i = 0; i < ARRAY_SIZE(iwl_dev_info_table); i++) { + const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i]; + const char *name; + + if (dev_info->name) + name = dev_info->name; + else if (dev_info->cfg && dev_info->cfg->name) + name = dev_info->cfg->name; + else + name = ""; + + sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\n", + PCI_VENDOR_ID_INTEL, dev_info->device, PCI_ANY_ID, dev_info->subdevice, + name, dev_info->cfg->fw_name_pre); + } + + error = sbuf_finish(sb); + sbuf_delete(sb); + + return (error); +} +SYSCTL_PROC(LINUXKPI_PARAM_PARENT, OID_AUTO, LINUXKPI_PARAM_NAME(pci_ids_name), + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_SKIP | CTLFLAG_MPSAFE, NULL, 0, + sysctl_iwlwifi_pci_ids_name, "", "iwlwifi PCI IDs and names"); +#endif