From patchwork Thu Jun 15 19:24:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281678 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4019374 for ; Thu, 15 Jun 2023 19:24:24 +0000 (UTC) Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-30c4c1fd511so7747450f8f.1 for ; Thu, 15 Jun 2023 12:24:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857062; x=1689449062; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=84doOLHYP9Wo8DpVqIzQZkQaC3mDx/ZwVQyuzJc8ZKk=; b=MSuyAy0DCiOwNB4HCmt0Ctkk+wWH5cTsKKyTx5BiSefeGgbCVgxIRkY2ww+FWrRFwE Y15yLhBpm9+7AvtC2DraNMIObQKiwwcvnW0ntkp+ND9Lv2uxg9ibalA97xZ6Y4VHanmT xI6o+B/Pt5StMYKgz4L9/Y/eEldOpOt3Vqigd8E0ZWdn/ukCZqXiK5zDpcIDfckvTByg ptzzhAqBrN65VbJW1LFvnjZRNRJExtRfdsBa/XUJzBh2P1uhpMJU3qc5+rJX7eqrf9J5 idlb6SXOpFsEqdcooirygBj8QedhsjvPaG0amaE+tBVYgM+jXHqcp1tZqJZRbO0BfJWQ x78g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857062; x=1689449062; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=84doOLHYP9Wo8DpVqIzQZkQaC3mDx/ZwVQyuzJc8ZKk=; b=WnJtszWojrkAmt4piUsqGv9dn+qTsw+YJrxuimV0n6kf+PilqOjkTe++8JGjpy5Ul1 F5Yc3O7bMJRCxyHfebchE+ohVGUS1TzyQyA52vqtaJUBwwkv3skf7DmGq2wzx9csV/kU kZSFPaUU82xp5oGdHAQTJ1y3nPbxrO+vycaF9KHOzyMA/bi8C/UCvPD63fAGSBpaWWpD UqHlLBb14EkYtoKUWSq132bA+G7/BR6OffChTVV2gqHHWbN8tmz8HD+m1rAmdxFZoTwP IPOZlownLLJ+mRucuMr2Ci99DIGAn4wBcPoPx/3C78Zcm6xE1Cnn3iWn/SWz1X1EyKqe caEg== X-Gm-Message-State: AC+VfDxH2+KtN9Hq6s1QPIq5xdVTCQrGdKmv9VXCnuPnDmF/1mJb8YvP +undv4omDOPZngtQYB2pu+qibXV4tOpfiw== X-Google-Smtp-Source: ACHHUZ6XYEPDnvMsm6ngE1tP+umU986ssMALONs+Rab65yvtwr58LsTj6qm60Mwok0UuCR7FUuMBLg== X-Received: by 2002:a5d:5254:0:b0:309:3bb5:7968 with SMTP id k20-20020a5d5254000000b003093bb57968mr12273024wrc.16.1686857062134; Thu, 15 Jun 2023 12:24:22 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:21 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 1/7] wiphy: store driver flags directly in wiphy object Date: Thu, 15 Jun 2023 12:24:09 -0700 Message-Id: <20230615192415.1718516-1-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Rather than keep a pointer to the driver_info entry copy the flags into the wiphy object. This preps for supporting driver flags via a configuration file, specifically allowing for entries that are a subset of others. For example: { "rtl88*", DEFAULT_IF }, { "rtl88x2bu", FORCE_PAE }, Before it was not possible to add entires like this since only the last entry match would get set. Now DEFAULT_IF would get set to all matches, and FORCE_PAE to only rtl88x2bu. This isn't especially important for the static list since it could be modified to work correctly, but will be needed when parsing flags from a configuration file that may contain duplicates or subsets of the static list. --- src/wiphy.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/wiphy.c b/src/wiphy.c index d06b2447..ca8a4958 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -111,7 +111,7 @@ struct wiphy { char *model_str; char *vendor_str; char *driver_str; - const struct driver_info *driver_info; + uint32_t driver_flags; struct watchlist state_watches; uint8_t extended_capabilities[EXT_CAP_LEN + 2]; /* max bitmap size + IE header */ uint8_t *iftype_extended_capabilities[NUM_NL80211_IFTYPES]; @@ -685,8 +685,7 @@ bool wiphy_uses_default_if(struct wiphy *wiphy) if (!wiphy_get_driver(wiphy)) return true; - if (wiphy->driver_info && - wiphy->driver_info->flags & DEFAULT_IF) + if (wiphy->driver_flags & DEFAULT_IF) return true; return false; @@ -697,8 +696,7 @@ bool wiphy_control_port_enabled(struct wiphy *wiphy) const struct l_settings *settings = iwd_get_config(); bool enabled; - if (wiphy->driver_info && - wiphy->driver_info->flags & FORCE_PAE) { + if (wiphy->driver_flags & FORCE_PAE) { l_info("Not using Control Port due to driver quirks: %s", wiphy_get_driver(wiphy)); return false; @@ -1885,7 +1883,7 @@ static bool wiphy_get_driver_name(struct wiphy *wiphy) for (i = 0; i < L_ARRAY_SIZE(driver_infos); i++) if (!fnmatch(driver_infos[i].prefix, wiphy->driver_str, 0)) - wiphy->driver_info = &driver_infos[i]; + wiphy->driver_flags |= driver_infos[i].flags; return true; } From patchwork Thu Jun 15 19:24:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281679 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 49BBCEADD for ; Thu, 15 Jun 2023 19:24:26 +0000 (UTC) Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-3f8cc04c287so22169535e9.0 for ; Thu, 15 Jun 2023 12:24:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857064; x=1689449064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tPDc8LA4GJO2DBtnVUJ5IxKGVLHeuelJLE5azTwo03A=; b=q35YQvyNeoNPNa04M26bQU0Bebz+liJ5zdhv2TLJksszNsjnoj6tVnKt5lUtb+glwq ceuzWSubudm64RSFYswffV3WXBcplFfIB9IvwWVtScxxNVi4SIB/+ILcDxMHcbRNn8ec GEvy6BjfjIL382JMZ5xI4RcxBxlVHop4mNB8i8JC1bSsgAn+YqS8BeNDT7XJzy8UdxbP GtK4m0Q5eDyBAYauLT57r76u6n3Xtfycb1L/gyPOoAX+SrpNKcnA6bxsK//J8qNozBuM DRO7qaSH+wUXbEHU86gaALfkk5M1m8wG/4CSXCHY/ZzOJ5SRrx3Z3Vc23Pp/LKR60+8O 6x2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857064; x=1689449064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tPDc8LA4GJO2DBtnVUJ5IxKGVLHeuelJLE5azTwo03A=; b=Sdli5Di/C6RhV6nRQoQefhceOanINv35P/73bHtgcTa46jdfCnNm2ZFYKwdWWhF7rR LSvJlK+8MzzpZIjROhKNWYVgaDBDRhdJiUoKzxLRN5qJMcyiq4cyB5JszN9p47IvHRtA HsaYr6W42FAvnnMRwnvFVhdyUkUfmCPDnwcKZULvqxKoCmjb+4V4qMMOf0n7k7Hg1OP/ +Nzv9aOTR1o69+s2Bx0LEzJEA+wqhBufBcV+r63DeFC1cUcvhal7Ly/2cY5KwDKl9/5Q qwkOYn9fhG8LkQyDPdvDD1xbuopb06BRZwX67taQVtezrn08O6Yows9DwtbNnhDCINhB IEzQ== X-Gm-Message-State: AC+VfDx/tQblx5KPyATuCFJC2etO8nBUgfuc+W6OhId41kJJ3HvSRZ+w /mk8pTSzZ50OBJq/yyfNC/QdUjYLyJN5aQ== X-Google-Smtp-Source: ACHHUZ7aVJ+y0iOeFGO+a/Rxf2mMDkaazZw+hye2PwMXMicjiblYN30uKX3kWDarCxukj/xC2BhHRA== X-Received: by 2002:a1c:4b19:0:b0:3f4:23b9:eed2 with SMTP id y25-20020a1c4b19000000b003f423b9eed2mr96011wma.38.1686857064141; Thu, 15 Jun 2023 12:24:24 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:23 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 2/7] wiphy: allow for user-defined driver flags Date: Thu, 15 Jun 2023 12:24:10 -0700 Message-Id: <20230615192415.1718516-2-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230615192415.1718516-1-prestwoj@gmail.com> References: <20230615192415.1718516-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The driver_infos list in wiphy.c is hard coded and, naturally, not configurable from a user perspective. As drivers are updated or added users may be left with their system being broken until the driver is added, IWD released, and packaged. This adds the ability to define driver flags inside main.conf under the "DriverFlags" group. Keys in this group correspond to values in enum driver_flag and values are a list of glob matches for specific drivers: [DriverFlags] DefaultInterface=rtl81*,rtl87*,rtl88*,rtw_*,brcmfmac,bcmsdh_sdmmc ForcePae=buggy_pae_* --- src/wiphy.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/wiphy.c b/src/wiphy.c index ca8a4958..6f8f6826 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -73,6 +73,11 @@ enum driver_flag { FORCE_PAE = 0x2, }; +struct driver_flag_name { + const char *name; + enum driver_flag flag; +}; + struct driver_info { const char *prefix; unsigned int flags; @@ -93,6 +98,11 @@ static const struct driver_info driver_infos[] = { { "bcmsdh_sdmmc", DEFAULT_IF }, }; +static const struct driver_flag_name driver_flag_names[] = { + { "DefaultInterface", DEFAULT_IF }, + { "ForcePae", FORCE_PAE }, +}; + struct wiphy { uint32_t id; char name[20]; @@ -1868,6 +1878,9 @@ static bool wiphy_get_driver_name(struct wiphy *wiphy) char driver_path[256]; ssize_t len; unsigned int i; + unsigned int j; + const struct l_settings *config = iwd_get_config(); + char **flag_list; driver_link = l_strdup_printf("/sys/class/ieee80211/%s/device/driver", wiphy->name); @@ -1885,6 +1898,24 @@ static bool wiphy_get_driver_name(struct wiphy *wiphy) if (!fnmatch(driver_infos[i].prefix, wiphy->driver_str, 0)) wiphy->driver_flags |= driver_infos[i].flags; + /* Check for any user-defined driver flags */ + if (!l_settings_has_group(config, "DriverFlags")) + return true; + + for (i = 0; i < L_ARRAY_SIZE(driver_flag_names); i++) { + flag_list = l_settings_get_string_list(config, "DriverFlags", + driver_flag_names[i].name, ','); + if (!flag_list) + continue; + + for (j = 0; flag_list[j]; j++) + if (!fnmatch(flag_list[j], wiphy->driver_str, 0)) + wiphy->driver_flags |= + driver_flag_names[i].flag; + + l_strv_free(flag_list); + } + return true; } From patchwork Thu Jun 15 19:24:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281680 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86681EADD for ; Thu, 15 Jun 2023 19:24:28 +0000 (UTC) Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-3f8d0d68530so24218285e9.0 for ; Thu, 15 Jun 2023 12:24:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857066; x=1689449066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KprZVBr41QPG6SMt/nydVp5LwmeTRftvUPqw1XBlt/E=; b=mjiDNoQeE0K8/xVfJm0k0aL/OcorizeHlReIIrT1PC7ZuBUdwG2u4EcT0szyiwTV7m 3xBqHcEVgqBd5iynfkLHy5xPMk2IpP/wxQYOZlRfqIMq7dtiiFE2uw3w/dYzdJBl22PW GAUPYwiFnz0E3bpAfuhMx51/1pcD4LPQIsWTY0RLJ0WvwDqmqvJjUakKbwXgvKHkahLy T3oaGYCb/MutMQLEBb2JZkZFwjfOFLcg6ML6MfFMxf92zb+FfNwfNZJTkFQK/YQNP3d0 c9FA5GlTF0VWqxUvpWbJFrG+MYyvYZFicEMcqvRgaUIoyR8520tl3FJfIgtK2048KMLj VOEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857066; x=1689449066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KprZVBr41QPG6SMt/nydVp5LwmeTRftvUPqw1XBlt/E=; b=bqT6kJ5vzk047aWcMp8h//JfPzB++8SEaxRo9eSQ/tI8YaXrhVr6ZIONUGczra5jOh Y3ad0hBUzZDq7QEjzm9/0lfpFPDWa0Rs5bjqe0BuB0895vzyf41xnRndisZfzEbfehxt kvWmoeaWhexiGLuBIRpk+20fA3jijNWvc/mW4S9FFO6MUC8HWYbE1blPx/CpydcIvTFI e0qi4uQISHK8dDOfyDt/h4J85TCyf52Zp4DDbmN/dsEF6Zwstv8Uk1bR6DKKAHSoR6oD 2zgulheAh8R0kNj7Ai8lbkNC/5CIDv3LLdorgxXiTNDYkmFMYchvPARNsbWHPDXJ2PBL 2Qbw== X-Gm-Message-State: AC+VfDyMZbee4bbgrETV6aGotxs3tMFWB1MOISqWGWv41uRS5JI/+rNF hwaiXJPkGN9/h6EI28+ieQBbPF2ubExSxw== X-Google-Smtp-Source: ACHHUZ6AczzJgn0jukYSUoArzTr5J2j1NqT4WAwXAJKUHqNocyexzS1v8DS8jQOGUTLa8kZtX9Ltbg== X-Received: by 2002:a1c:ed0b:0:b0:3f7:948f:ad1c with SMTP id l11-20020a1ced0b000000b003f7948fad1cmr181688wmh.6.1686857065948; Thu, 15 Jun 2023 12:24:25 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:25 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 3/7] doc: document [DriverFlags] group settings Date: Thu, 15 Jun 2023 12:24:11 -0700 Message-Id: <20230615192415.1718516-3-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230615192415.1718516-1-prestwoj@gmail.com> References: <20230615192415.1718516-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --- src/iwd.config.rst | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/iwd.config.rst b/src/iwd.config.rst index b3dc22d4..190f2c69 100644 --- a/src/iwd.config.rst +++ b/src/iwd.config.rst @@ -378,6 +378,32 @@ The group ``[IPv4]`` contains settings related to IPv4 network configuration. will limit the number of access points that can be running simultaneously on different interfaces. +DriverFlags +----------- + +The group ``[DriverFlags]`` contains special flags associated with drivers that +are buggy or just don't behave similar enough to the majority of other drivers. + +.. list-table:: + :header-rows: 0 + :stub-columns: 0 + :widths: 20 80 + :align: left + + * - DefaultInterface + - Values: comma-separated list of drivers or glob matches + + If a driver in use matches one in this list IWD will not attempt to + remove and re-create the default interface. + + * - ForcePae + - Values: comma-separated list of drivers or glob matches + + If a driver in use matches one in this list ControlPortOverNL80211 will + not be used, and PAE will be used instead. Some drivers do not properly + support ControlPortOverNL80211 even though they advertise support for it. + + SEE ALSO ======== From patchwork Thu Jun 15 19:24:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281681 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 85A18EADD for ; Thu, 15 Jun 2023 19:24:30 +0000 (UTC) Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-4f62cf9755eso11005128e87.1 for ; Thu, 15 Jun 2023 12:24:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857068; x=1689449068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DpzGjz3SnXJ3mkGar/4yJDlsZpn6nugyqrpOCjaDC9Q=; b=Nlaf/EJfvZ5iqebqmVGNq20b8E/vaCCE+k6QtSmdoXBSmRs2+IxJpYz+9UE+ybitP/ VJlgtndYixw6poizjkvQhoH5ZtiR3Q/RIgOtCxqlEx8GO7ieGVgfgYJt+aJwE9Zgbfbc 0nPHbqEEt1E02ednfqagdqsGyzhmXMDSyDupFoGEyb1Cy0l43h407JW0IQwDy/c4u+OF 0FTNZmoiareasmAZrNaQ4zqt3uUgObjlfiR21bxNJTFT7g+JA7UAgfev0PWt6OWXIOSL DJD5MCgaeWEO4idsht/nAXOCzYtuYw8OksRRvQ3G40k+JTrCJxnT4GAJkYj+CuDxwSrt IS6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857068; x=1689449068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DpzGjz3SnXJ3mkGar/4yJDlsZpn6nugyqrpOCjaDC9Q=; b=K035zxQ7sDCwjXd/7djMwKTq+g3Ugmy701BX12vxAaeUBRBdwsdwQuST6aK4DaVcJy dXTcT04RgQmmVnvx+dWUNjCRIfbCu9HsTin6ElNw43X5IeffpLt+5GXkgoH0EqDNQ01z tOJ24/ZLybI4idr3MmWQ3jxAJ6htKMueHUcjpcqGo9ZGZSIMFX4V36Ir3Z5tLjKCdXxa d/c3Bl7LMAlzvssmIA6ZxIPoGmVO8T93cEzu3sepcDPbiEE/QunL0K9LsR7vM8PGWmwz LvvYq0vsw9VH7NpCz2PB+azuxB/cDiLyNAITpcC8zKLSkuyV3o2by7u87lGQXhyC39Vg 5wFQ== X-Gm-Message-State: AC+VfDzVPvCX8s4rrnTCnvIJ8dsf1tuB0ykv5LabryHxlCVsjNIQ004C XYrpoavlXMptgKp8SmjSlQx/5oajrUJHCQ== X-Google-Smtp-Source: ACHHUZ5DZ5z857ccmUtO2kmFiPEx5eyXj/ZFo6t0802WOxoDLGjO7khsojzKtWtRf+QcC2uh98jy2A== X-Received: by 2002:a19:5e57:0:b0:4f6:29cf:c0dd with SMTP id z23-20020a195e57000000b004f629cfc0ddmr6779607lfi.8.1686857067742; Thu, 15 Jun 2023 12:24:27 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:27 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 4/7] wiphy: add [DriverFlags].PowerSaveDisable flag Date: Thu, 15 Jun 2023 12:24:12 -0700 Message-Id: <20230615192415.1718516-4-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230615192415.1718516-1-prestwoj@gmail.com> References: <20230615192415.1718516-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Certain drivers do not handle power save very well resulting in missed frames, firmware crashes, or other bad behavior. Its easy enough to disable power save via iw, iwconfig, etc but since IWD removes and creates the interface on startup it blows away any previous power save setting. The setting must be done *after* IWD creates the interface which can be done, but needs to be via some external daemon monitoring IWD's state. For minimal systems, e.g. without NetworkManager, it becomes difficult and annoying to persistently disable power save. For this reason a new driver flag POWER_SAVE_DISABLE is being added. This can then be referenced when creating the interfaces and if set, disable power save. --- src/wiphy.c | 13 +++++++++++++ src/wiphy.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/wiphy.c b/src/wiphy.c index 6f8f6826..2c09d47a 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -71,6 +71,7 @@ static unsigned int wiphy_dump_id; enum driver_flag { DEFAULT_IF = 0x1, FORCE_PAE = 0x2, + POWER_SAVE_DISABLE = 0x4, }; struct driver_flag_name { @@ -101,6 +102,7 @@ static const struct driver_info driver_infos[] = { static const struct driver_flag_name driver_flag_names[] = { { "DefaultInterface", DEFAULT_IF }, { "ForcePae", FORCE_PAE }, + { "PowerSaveDisable", POWER_SAVE_DISABLE }, }; struct wiphy { @@ -723,6 +725,17 @@ bool wiphy_control_port_enabled(struct wiphy *wiphy) return enabled; } +bool wiphy_disable_power_save(struct wiphy *wiphy) +{ + if (wiphy->driver_flags & POWER_SAVE_DISABLE) { + l_info("Disabling power save due to driver quirks: %s", + wiphy_get_driver(wiphy)); + return true; + } + + return false; +} + const uint8_t *wiphy_get_permanent_address(struct wiphy *wiphy) { return wiphy->permanent_addr; diff --git a/src/wiphy.h b/src/wiphy.h index f4f205ad..39837366 100644 --- a/src/wiphy.h +++ b/src/wiphy.h @@ -135,6 +135,7 @@ const char *wiphy_get_driver(struct wiphy *wiphy); const char *wiphy_get_name(struct wiphy *wiphy); bool wiphy_uses_default_if(struct wiphy *wiphy); bool wiphy_control_port_enabled(struct wiphy *wiphy); +bool wiphy_disable_power_save(struct wiphy *wiphy); const uint8_t *wiphy_get_permanent_address(struct wiphy *wiphy); const uint8_t *wiphy_get_extended_capabilities(struct wiphy *wiphy, uint32_t iftype); From patchwork Thu Jun 15 19:24:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281682 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC987EAE2 for ; Thu, 15 Jun 2023 19:24:31 +0000 (UTC) Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-3f8ca80e889so22041595e9.3 for ; Thu, 15 Jun 2023 12:24:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857070; x=1689449070; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hi7fZU1eo33yQQz8F7uBWjlhP+8IboaQ9u+SI9ZiYTI=; b=s0BLRgAFSD0hXEiLCLTyBR8ipvE8/j5Eqo0EBIClWwPj0ryHcb9MeywuIFiPGRNGM2 FlIcYJlNmAe7nB8TcbdD9mWEl3aphKTTn5fXOeorNkaiFBn+NPAL+4OJj5vR6s24Tb9H FLiUfOJjEj3lLrSJurfiqR6CjdteVA13jOyH46E6F3Z63X6i2ZvndmatIj5hTWcz+q2t dDNRg4erlo4R640c0ahyuScsxWZSqNmqsI4ZpTwwXcvvVEcQT1GQLeKA8k3b+LNA50B1 S/aAq9BP8P6Vj7eRZgxDVJJKY8jnvP/vuZb4t4YiQSubVCNbBEBJCOKALTTxFLNcWEkg 53BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857070; x=1689449070; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hi7fZU1eo33yQQz8F7uBWjlhP+8IboaQ9u+SI9ZiYTI=; b=ZHBC3S/ybhAoJi+UiFah/arhqB8Xx5lI6bTqfY8Sgr3RMN4uQ4z2AJY9FQKL469o5+ 5MdKoX00EMZ1xWuqp1Ny6/OrMqB1R9uWr9IV5zFrCfRC7cVvtOipiuXyai/pSNMFVb6h 6Je5wb5Rg9vQeMbhriiJMpkIS3wHRQAYiCAR5EvkrR5aZ+1jX1xQ1NHIpzT7Qaoj+fjg ii28SGQC0wFjlJVw6DU8W+yrvbv4sezgX3wklHuDJAv2ChU6bC7wGVpmZozU15WXhpg5 XCr8kBGOUaDjGk3bWHXgjBOF5ZjentL295nAsdyJpQZizUBT1izMegAfGRySpCAc/S9R x4Pw== X-Gm-Message-State: AC+VfDwodJ7jyUm5baQOF83/hFwt+m/Ny7xNUg08ENsSqgmUiEojpBCO VPXJ58cK9tmGSkxsM3KbAu4cv7j2Bd3Keg== X-Google-Smtp-Source: ACHHUZ6Gpg+vdmB3jP2BHRl6K8x2gHot5YlERL4xCntzT0QGaZIxRs74OEAct7zpJqptj7eTf2u25Q== X-Received: by 2002:a05:600c:22c1:b0:3f8:afe:5c44 with SMTP id 1-20020a05600c22c100b003f80afe5c44mr165102wmg.12.1686857069563; Thu, 15 Jun 2023 12:24:29 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:29 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 5/7] netdev: disable power save if required Date: Thu, 15 Jun 2023 12:24:13 -0700 Message-Id: <20230615192415.1718516-5-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230615192415.1718516-1-prestwoj@gmail.com> References: <20230615192415.1718516-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Disable power save if the wiphy indicates its needed. Do this before issuing GET_LINK so the netdev doesn't signal its up until power save is disabled. --- src/netdev.c | 80 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 14 deletions(-) diff --git a/src/netdev.c b/src/netdev.c index 4ee17f3b..1b44944e 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -6212,6 +6212,65 @@ error: return NULL; } +static void netdev_get_link(uint32_t ifindex) +{ + struct ifinfomsg *rtmmsg; + size_t bufsize; + + /* Query interface flags */ + bufsize = NLMSG_ALIGN(sizeof(struct ifinfomsg)); + rtmmsg = l_malloc(bufsize); + memset(rtmmsg, 0, bufsize); + + rtmmsg->ifi_family = AF_UNSPEC; + rtmmsg->ifi_index = ifindex; + + l_netlink_send(rtnl, RTM_GETLINK, 0, rtmmsg, bufsize, + netdev_getlink_cb, NULL, NULL); + + l_free(rtmmsg); +} + +static void netdev_disable_ps_cb(struct l_genl_msg *msg, void *user_data) +{ + int err = l_genl_msg_get_error(msg); + uint32_t ifindex = L_PTR_TO_UINT(user_data); + + /* Can't do anything about it but inform the user */ + if (err < 0) { + l_error("Failed to disable power save for ifindex %u (%s: %d)", + ifindex, strerror(-err), err); + return; + } + + l_debug("Disabled power save for ifindex %u", ifindex); +} + +static void netdev_disable_ps_destroy(void *user_data) +{ + uint32_t ifindex = L_PTR_TO_UINT(user_data); + + netdev_get_link(ifindex); +} + +static bool netdev_disable_power_save(uint32_t ifindex) +{ + struct l_genl_msg *msg = l_genl_msg_new(NL80211_CMD_SET_POWER_SAVE); + uint32_t disabled = NL80211_PS_DISABLED; + + l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &ifindex); + l_genl_msg_append_attr(msg, NL80211_ATTR_PS_STATE, 4, &disabled); + + if (!l_genl_family_send(nl80211, msg, netdev_disable_ps_cb, + L_UINT_TO_PTR(ifindex), + netdev_disable_ps_destroy)) { + l_error("Failed to send SET_POWER_SAVE (-EIO)"); + return false; + } + + return true; +} + struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, const uint8_t *set_mac) { @@ -6223,8 +6282,6 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, uint32_t wiphy_id; struct netdev *netdev; struct wiphy *wiphy = NULL; - struct ifinfomsg *rtmmsg; - size_t bufsize; struct l_io *pae_io = NULL; if (nl80211_parse_attrs(msg, NL80211_ATTR_IFINDEX, &ifindex, @@ -6283,20 +6340,15 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, l_debug("Created interface %s[%d %" PRIx64 "]", netdev->name, netdev->index, netdev->wdev_id); - /* Query interface flags */ - bufsize = NLMSG_ALIGN(sizeof(struct ifinfomsg)); - rtmmsg = l_malloc(bufsize); - memset(rtmmsg, 0, bufsize); - - rtmmsg->ifi_family = AF_UNSPEC; - rtmmsg->ifi_index = ifindex; - - l_netlink_send(rtnl, RTM_GETLINK, 0, rtmmsg, bufsize, - netdev_getlink_cb, NULL, NULL); + netdev_setup_interface(netdev); - l_free(rtmmsg); + if (wiphy_disable_power_save(wiphy)) { + /* Wait to issue GET_LINK until PS is disabled */ + if (netdev_disable_power_save(ifindex)) + return netdev; + } - netdev_setup_interface(netdev); + netdev_get_link(ifindex); return netdev; } From patchwork Thu Jun 15 19:24:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281683 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BE806EAE2 for ; Thu, 15 Jun 2023 19:24:33 +0000 (UTC) Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-3f8cc042e2bso20376355e9.2 for ; Thu, 15 Jun 2023 12:24:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857071; x=1689449071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PxAhFMqWOuukV1XGKm8q4b9h3kuq2uZ21xIx1btzfCs=; b=Lh8W9j/mPPjiAMkg/caOpP3CUKWCRtkRetAfHpqjuyDx7qIkSVosVsSFTMtyGfXkDK aR2E4Gqz9p2QWkj3yukJ52O9oy8erqi7vJiay9iQcqie9nnc1r37ehUOZAH5QclOLgRm VHWeKphAZs278AJ3pD8FzbORRBXu6nWrN1aaEadV6qD4WSW9gS6oo5X/ANALHZs4PMWN Ez5aMixNrJQyOwNVe14jD05/VWxG1ChBGWrriQjK/FHj4NXhMkgjc4N7bHTHuqD/M2HP wgbqnttY9SkNRli407MP46vywMEBXgSdYh2kbNiJH2G77NNKhIwjXhI/irkDLEpuA1tm rqKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857071; x=1689449071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PxAhFMqWOuukV1XGKm8q4b9h3kuq2uZ21xIx1btzfCs=; b=jTCFhGpaCjNhLGVF2GtRc8ecpxFEurdgjNyKd8gBjcdrDtid6dItiV+t8yE46T0qjX db5g7yFDhoAIh4PRZa+Rzwgn2WTh7mEPTxFf1mD7EDST+UZK9H9lsj7CC666nieToMeW tbnrPEoZkLXd2jT8bI4PfakSB1q8z+O0slgiVSEcZpqlMbxnxMpFfYXFpSand1s6LPhT p8rtm10vlIO9goKJvE4ux8VAbk2q/HuOySa+Pl8c8BgHTwxP1aiKnkapLLyMiWdo6Ue9 DZgBLdhmCELeZP8sZ2U3FL9UVnlPbiZdxVhF+BXtvNtGYD8xpj6o+dAoIErH7+Z/shJ4 ewcg== X-Gm-Message-State: AC+VfDzcjZNvmdDQx/bebVJcgJulPod9z2QQLtAoqvEhpOvCqrtk39sy EJTGijg8/z/qQvtvKFOkcFX9TkfdesXlrA== X-Google-Smtp-Source: ACHHUZ59PPBTzVWs4hGbpW9iPxvt6f4kfXrVMYHncT518PvflfF5Xz/5aNbR1hLbEKBKXjdPcGSqPw== X-Received: by 2002:a05:600c:215:b0:3f5:ff24:27de with SMTP id 21-20020a05600c021500b003f5ff2427demr139783wmi.32.1686857071445; Thu, 15 Jun 2023 12:24:31 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:31 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 6/7] wiphy: print driver flags on startup Date: Thu, 15 Jun 2023 12:24:14 -0700 Message-Id: <20230615192415.1718516-6-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230615192415.1718516-1-prestwoj@gmail.com> References: <20230615192415.1718516-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Similar to other basic information, print the driver flags so the user is informed what is set. --- src/wiphy.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/wiphy.c b/src/wiphy.c index 2c09d47a..ebc91206 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -1333,6 +1333,27 @@ static void wiphy_print_basic_info(struct wiphy *wiphy) l_free(joined); l_strfreev(iftypes); } + + if (wiphy->driver_flags) { + char **flags = l_strv_new(); + char *joined; + + if (wiphy->driver_flags & DEFAULT_IF) + flags = l_strv_append(flags, "DefaultInterface"); + + if (wiphy->driver_flags & FORCE_PAE) + flags = l_strv_append(flags, "ForcePae"); + + if (wiphy->driver_flags & POWER_SAVE_DISABLE) + flags = l_strv_append(flags, "PowerSaveDisable"); + + joined = l_strjoinv(flags, ' '); + + l_info("\tDriver Flags: %s", joined); + + l_free(joined); + l_strfreev(flags); + } } static void parse_supported_commands(struct wiphy *wiphy, From patchwork Thu Jun 15 19:24:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13281684 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DE23EAE6 for ; Thu, 15 Jun 2023 19:24:35 +0000 (UTC) Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-307d58b3efbso6093294f8f.0 for ; Thu, 15 Jun 2023 12:24:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686857073; x=1689449073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0yCJ7vWHrnEqowV/OY8D3jMzm+pfTH9J9oDFxER61Uo=; b=NOyFs9n0IzADM+nTW449gvawkbm/K/wMWhzGckMstL5a4Igp1s+J1cVKMJhGJrRITt N+HZjnDDn5AkEANaKhC0bZLFo9sd0JMRKuo8p+wnSYaBclPmv6xu9h7sRlKgd+Fsl+E8 dspyMTaQlJuczFckFapH9qqXcnTsGhjOWTeTqh9NpiOtrvU7uYaFzYfy4RRal0kReUy4 AuwTUJJ43LTYjiI9jXsOlR1cgVlbNCq4Ug9MQgbZS1mBfjZ0ZtWvsIv8bUryaCFpMmp5 JHwVPj5DlIusXDeXIsGT1NbHWlHFLkFQDE6/7H7pZNK5/lYtYcWqZHSCIRM8qmB4RkEr dAjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686857073; x=1689449073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0yCJ7vWHrnEqowV/OY8D3jMzm+pfTH9J9oDFxER61Uo=; b=Ty/5yo3hzdZ4gHnsLrUBfu4qa+nQ16Y6oMaYU3mK5Y8NKsOsFCUbkmYTuqVsYboC/6 BF9z5ChZUWAYNk9j8mGnDzG+X/fM/jJjpRNvSeYwpfoQJlkyPHWTesrPLp9WjR83SnQi 5905EeiKzXHbe4lKSu83IlVarK693WA23JFOJFf1Nz/bV73Rpig6sfM/7CeLIJf0CgoA sAAA+tyKTZQqdg2zQiW3yG/HQ0WfREbMSNwyzP3YoVrhsS75oNXp3OLEhtk8oJr3E4Go xXfn1aO4DS9uOl9PuFxIDdPCyPMW6hwGPLOY1cqxn0fTvBJV3I8UsbzFUTPYchsGl7oD eo5Q== X-Gm-Message-State: AC+VfDzXqA27sySq0y+TwNZvFUR0Mx58AMR5+jrWAjcrHZ1U6toi6fMT iFP2ppE+SMHznzwEILs/Kgsw6wohFQQEQg== X-Google-Smtp-Source: ACHHUZ4mtR23/B4bhWRIPdCSw8zHqjf++M9ZMlsWq+n2txVNI+23LtWbaFu0cKeE7FxNsZZ8zRn2Pw== X-Received: by 2002:a5d:5257:0:b0:309:3a1e:fc54 with SMTP id k23-20020a5d5257000000b003093a1efc54mr10980814wrc.7.1686857073250; Thu, 15 Jun 2023 12:24:33 -0700 (PDT) Received: from LOCLAP699.dhl-toledo.locus ([195.55.200.178]) by smtp.gmail.com with ESMTPSA id 5-20020a05600c020500b003f6028a4c85sm28241wmi.16.2023.06.15.12.24.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 12:24:32 -0700 (PDT) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH 7/7] doc: Document [DriverFlags].PowerSaveDisable Date: Thu, 15 Jun 2023 12:24:15 -0700 Message-Id: <20230615192415.1718516-7-prestwoj@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230615192415.1718516-1-prestwoj@gmail.com> References: <20230615192415.1718516-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --- src/iwd.config.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/iwd.config.rst b/src/iwd.config.rst index 190f2c69..6b52b040 100644 --- a/src/iwd.config.rst +++ b/src/iwd.config.rst @@ -403,6 +403,10 @@ are buggy or just don't behave similar enough to the majority of other drivers. not be used, and PAE will be used instead. Some drivers do not properly support ControlPortOverNL80211 even though they advertise support for it. + * - PowerSaveDisable + - Values: comma-separated list of drivers or glob matches + + If a driver in user matches one in this list power save will be disabled. SEE ALSO ========