Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp4205785rwb; Tue, 6 Sep 2022 04:21:08 -0700 (PDT) X-Google-Smtp-Source: AA6agR7FcYz5LA19qgB7RYDrla27ERzw8FndgmP0Td9fidW/2JkG1rmwJ3B/y+VHMQZxazPA1olj X-Received: by 2002:a17:907:3f1f:b0:73d:90ae:f800 with SMTP id hq31-20020a1709073f1f00b0073d90aef800mr39131089ejc.466.1662463267992; Tue, 06 Sep 2022 04:21:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662463267; cv=none; d=google.com; s=arc-20160816; b=O32tasRJGb7cJo3ex44Rt2s3w5pwLCqjjZrwbrA6EUVMEho5Amd3IS2ZvuA/3cdZbX Of80vgfr30ddAgpZXOOwYXyFg+bXSv54/R1lUjY5zulKbwwqv487PaLEFlbfFZok4xNc gSQdGvX8FZm3fZNAMtTKfrzzczvY7R/k8PDMO2A5pJ8+QiR+rT3ybrNYmqT9kC0aq7bv 95J2DGKyms5GmL1wZpbWY3zIw4+i9hPsdZDwpZuNmm/w9lwY0WQQvPneLizPinY1y90o zG+Y3c25wbdEzFb1nMtDoyJQuXEuwVjhZoOmYSjMKn3gkNGRZ/Y5K9syVQ29aMCOTHHh sucg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:to:from :subject:message-id:dkim-signature; bh=mD+gV0Q0C6/69LawiK1ujI5SAhzpI1hQJONYLnuFiis=; b=WEf8T60aqFmC1SS3iBvjy08gGbsyOBICnan/ZBZhLg5mjJSl3qK8047dcVhO3Ku+WO 68ymZXFjySg7ZoSj6Ht8SXMntVEFY7NyfJNIz9EDXoJKM1UhFbvwILDl5s+XuM1EHNp/ FeTzXjDdf0AupN0bvZPHJ7L0/7H/X/0Pr7oMTCA1q4v4F8JRhi56l2VUG0ogEHwX6534 kbmwx+CJgC9cxNYMlPEhgzbSPIROjAZ5g8NBSPQGRGUSIHtJpy5PIyc3ByZSTWv6sWT4 wojuxm64vw23upxJ+OVwVvwU4fMJAaoHTBdPwS/MAnPhqBJpviGJSKEAZ6+xxWOWC/ax vVHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sipsolutions.net header.s=mail header.b=HPyO3EMt; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=sipsolutions.net Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dn19-20020a17090794d300b0073dd598216dsi8340960ejc.88.2022.09.06.04.20.50; Tue, 06 Sep 2022 04:21:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sipsolutions.net header.s=mail header.b=HPyO3EMt; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=sipsolutions.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234275AbiIFLF0 (ORCPT + 64 others); Tue, 6 Sep 2022 07:05:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239809AbiIFLFY (ORCPT ); Tue, 6 Sep 2022 07:05:24 -0400 Received: from sipsolutions.net (s3.sipsolutions.net [IPv6:2a01:4f8:191:4433::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 394F45F211 for ; Tue, 6 Sep 2022 04:05:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sipsolutions.net; s=mail; h=MIME-Version:Content-Transfer-Encoding: Content-Type:References:In-Reply-To:Date:To:From:Subject:Message-ID:Sender: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-To: Resent-Cc:Resent-Message-ID; bh=mD+gV0Q0C6/69LawiK1ujI5SAhzpI1hQJONYLnuFiis=; t=1662462322; x=1663671922; b=HPyO3EMtLKnJtgNZI5zIxXc2pT1E6CaPGMFzqLOG+4eAzEm k0WoktXdkNEq9ZbQ9p6h/Vwv8kNyigDAULimQxm2v0OCskZIs+YKokkXDd/yvCouZo2M0GvFqEOOZ 3k0P2w300dgQ2Ttw8MBddIkBXbecKJShdBYfd3Y+ReMhEJaZy7H1TX18o0EJWpROuASK5zcqH0QVM ORs/IJFHL+djtMBNWBMUxRM6bugI7ZR86OkoJxnki72blPcQX42YBT56mEKD2sqeRRFBQG1A2mOqB 5TjDethrTgZQfp1ra4jrhlYCBkRlmcLw/tLoI282iadXDPEze8X+anoaMjQGsDVQ==; Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1oVWON-009PSt-2p; Tue, 06 Sep 2022 13:05:19 +0200 Message-ID: Subject: Re: [PATCH 4/7] cfg80211: add NL command to set 6 GHz power mode From: Johannes Berg To: Aditya Kumar Singh , linux-wireless@vger.kernel.org Date: Tue, 06 Sep 2022 13:05:19 +0200 In-Reply-To: <20220704102341.5692-5-quic_adisi@quicinc.com> References: <20220704102341.5692-1-quic_adisi@quicinc.com> <20220704102341.5692-5-quic_adisi@quicinc.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4 (3.44.4-1.fc36) MIME-Version: 1.0 X-malware-bazaar: not-scanned X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Mon, 2022-07-04 at 15:53 +0530, Aditya Kumar Singh wrote: >=20 > + * @NL80211_ATTR_6GHZ_REG_AP_POWER_MODE: Configure 6 GHz regulatory powe= r mode > + * for access points. Referenced from &enum ieee80211_ap_reg_power. > + * > + * @NL80211_ATTR_6GHZ_REG_CLIENT_POWER_MODE: Configure 6 GHz regulatory = power > + * mode for clients. Referenced from &enum ieee80211_client_reg_power. I don't really see a good reason to have two attributes for this, rather than validating their value based on the iftype? > err =3D __cfg80211_stop_ap(rdev, dev, link_id, notify); > + > + if (wdev->reg_6ghz_pwr_configured) > + wdev->reg_6ghz_pwr_configured =3D false; no need to check first > +static int nl80211_set_6ghz_power_mode(struct sk_buff *skb, > + struct genl_info *info) > +{ > + struct net_device *dev =3D info->user_ptr[1]; > + struct wireless_dev *wdev =3D NULL; > + enum nl80211_iftype iftype =3D NL80211_IFTYPE_UNSPECIFIED; > + int ret =3D -EINVAL; > + > + if (dev) > + wdev =3D dev->ieee80211_ptr; > + > + if (wdev) > + iftype =3D wdev->iftype; that's all pretty useless > + if (iftype !=3D NL80211_IFTYPE_AP && > + iftype !=3D NL80211_IFTYPE_STATION) > + return -EOPNOTSUPP; you're going to return here anyway ... Better to just simplify that and return if there's no wdev, and actually you can enforce that anyway through the internal flags?? Not sure why you do all this. Btw, all of that probably also needs to be per *link* rather than per *interface* now, with MLO? > + if (!info->attrs[NL80211_ATTR_6GHZ_REG_AP_POWER_MODE] && > + !info->attrs[NL80211_ATTR_6GHZ_REG_CLIENT_POWER_MODE]) > + return -EINVAL; > + > + wdev_lock(wdev); > + if (wdev->reg_6ghz_pwr_configured) { > + wdev_unlock(wdev); > + return -EALREADY; > + } > + > + if (iftype =3D=3D NL80211_IFTYPE_AP && > + info->attrs[NL80211_ATTR_6GHZ_REG_AP_POWER_MODE]) { > + wdev->ap_6ghz_power =3D > + nla_get_u8(info->attrs[NL80211_ATTR_6GHZ_REG_AP_POWER_MODE]); > + ret =3D 0; > + } > + > + if (iftype =3D=3D NL80211_IFTYPE_STATION && > + info->attrs[NL80211_ATTR_6GHZ_REG_CLIENT_POWER_MODE]) { > + wdev->client_6ghz_power =3D > + nla_get_u8(info->attrs[NL80211_ATTR_6GHZ_REG_CLIENT_POWER_MODE]); > + ret =3D 0; > + } > + > + if (!ret) > + wdev->reg_6ghz_pwr_configured =3D true; and honestly that logic here with the two attributes is pretty strange... I'd even say you should remove the union in the wdev struct since you only can have one of them at a time anyway > + { > + .cmd =3D NL80211_CMD_SET_6GHZ_POWER_MODE, > + .validate =3D GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, > + .doit =3D nl80211_set_6ghz_power_mode, > + .flags =3D GENL_UNS_ADMIN_PERM, > + .internal_flags =3D IFLAGS(NL80211_FLAG_NEED_NETDEV), if you have netdev then you have wdev too, later > =20 > + if (wdev->reg_6ghz_pwr_configured) > + wdev->reg_6ghz_pwr_configured =3D false; >=20 No need for if johannes