Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1518329ybv; Fri, 14 Feb 2020 01:04:19 -0800 (PST) X-Google-Smtp-Source: APXvYqwHtFImRqABWdKZrT+hK0tLcpjK11iKxQkxO+N6xrgGZ0zskNnSN0Noj70Fy2YNLgcg3K/i X-Received: by 2002:a05:6830:194:: with SMTP id q20mr1523214ota.92.1581671059220; Fri, 14 Feb 2020 01:04:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581671059; cv=none; d=google.com; s=arc-20160816; b=UpIL8zc8wCi1X//Uy4eFbiDneeDwh2/xocM0ACVKdJWt9VNXyyNgS56ksmX/ruNSWz 5puRizYh7rRZBQEdSigWjz195NLaqdOHIt4c8J6pHLG4/Pv5OXUYg6L6OKMMfNid8IB7 RKEaMK5ROeVVuboXiKTMd3lUZVP0G31T6njOT14W3PeY4ILl+Sfazy6zNatbCm5zT2u7 W9rdYQZUetXWHOVWa240WY97chGBlpMsEgj9FLSAhJEhQjYNhKAeZ1v2cT5B62lcZvnJ Hcpkyhf7Ls2Xt+aNXYYwFCHurz7Soc9FoLt+BzG+c+QMf5PMoJ38LyFtyZ3dmnYzR5xq HEEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id; bh=+31JuH+R9z829erMuaXv+zdIuCaJJxaV6KHCsGhiopw=; b=ZJsEekmIl0wLiswpT1u/CYNTgUe0XhCWJ7GkS2w4vEyuh0w6P692urBIAa6Hql/joK Vy3FU1LBsvJ8NJ1lF6TDfLDb65CrpJKJ+KX21vpN/rkmG6bzNPO/4epEDVzLiefmeboo TOVt+4Yv01xv49aX9BBsxRiIahK2dqLF3m4eJFqFOAKXvHmH3NdsdzcwVKr50QN8lxjf YDNHYR84YtBk+J0z5fo0SjX4xJWAilWx/s9A3Y+4DIYrd94QeQkCBuN5iP+O3+MbqY6z Hf80b1NnNbh6/YwC2alqzgiXXcy4MOUaTC2aHIQ/wGQay/2Bkq1SxQltpfHXSqz8Ow43 xQxg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z1si2551366otp.70.2020.02.14.01.04.06; Fri, 14 Feb 2020 01:04:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728895AbgBNJDm (ORCPT + 99 others); Fri, 14 Feb 2020 04:03:42 -0500 Received: from s3.sipsolutions.net ([144.76.43.62]:38960 "EHLO sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726179AbgBNJDl (ORCPT ); Fri, 14 Feb 2020 04:03:41 -0500 Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.93) (envelope-from ) id 1j2Wst-00BCvZ-HS; Fri, 14 Feb 2020 10:03:39 +0100 Message-ID: Subject: Re: [PATCH V2 1/3] nl80211: add support for setting fixed HE rate/gi/ltf From: Johannes Berg To: John Crispin , Kalle Valo Cc: linux-wireless@vger.kernel.org, ath11k@lists.infradead.org, Miles Hu Date: Fri, 14 Feb 2020 10:03:38 +0100 In-Reply-To: <20200204103514.18111-1-john@phrozen.org> References: <20200204103514.18111-1-john@phrozen.org> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.2 (3.34.2-1.fc31) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Tue, 2020-02-04 at 11:35 +0100, John Crispin wrote: > > + [NL80211_TXRATE_HE] = { > + .type = NLA_EXACT_LEN, > + .len = sizeof(struct nl80211_txrate_he), > + }, > + [NL80211_TXRATE_HE_GI] = NLA_POLICY_RANGE(NLA_U8, > + NL80211_RATE_INFO_HE_GI_0_8, > + NL80211_RATE_INFO_HE_GI_3_2), > + [NL80211_TXRATE_HE_LTF] = NLA_POLICY_RANGE(NLA_U8, > + NL80211_RATE_INFO_HE_1XLTF, > + NL80211_RATE_INFO_HE_4XLTF), > }; Thanks for this :-) > + if (tb[NL80211_TXRATE_HE]) { > + if (!he_set_mcs_mask(info, sband, nla_data(tb[NL80211_TXRATE_HE]), > + mask->control[band].he_mcs)) > + return -EINVAL; Maybe unify these into a single condition? if (tb[...] && he_set_... return -EINVAL; Seems nicer to me. Especially with the lines already being so long. > + } > + if (tb[NL80211_TXRATE_HE_GI]) { > + mask->control[band].he_gi = > + nla_get_u8(tb[NL80211_TXRATE_HE_GI]); > + if (mask->control[band].he_gi > NL80211_RATE_INFO_HE_GI_3_2) > + return -EINVAL; This is not needed with the policy, is it? > + } > + if (tb[NL80211_TXRATE_HE_LTF]) { > + mask->control[band].he_ltf = > + nla_get_u8(tb[NL80211_TXRATE_HE_LTF]); > + if (mask->control[band].he_ltf > NL80211_RATE_INFO_HE_4XLTF) > + return -EINVAL; Same here. > if (!(rdev->wiphy.bands[band]->ht_cap.ht_supported || > - rdev->wiphy.bands[band]->vht_cap.vht_supported)) > + rdev->wiphy.bands[band]->vht_cap.vht_supported || > + (rdev->wiphy.bands[band]->iftype_data && > + rdev->wiphy.bands[band]->iftype_data->he_cap.has_he))) > return -EINVAL; And now we get to why I replied at all and didn't just fix it up ;-) That can't be right, iftype_data is an array of pointers, you're basically always taking the first one? johannes