Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp12089621ybi; Fri, 26 Jul 2019 04:37:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqwjvyLYOAgiJrD0TEMxvw11LIv7tXkCU1PXDc6V1d+dym+jeWi6TT/LLu5aTTSq5ho7oof7 X-Received: by 2002:a17:902:20b:: with SMTP id 11mr97113370plc.78.1564141069225; Fri, 26 Jul 2019 04:37:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564141069; cv=none; d=google.com; s=arc-20160816; b=IoACK+YLCAIF6N0kVQvcc3/DZScXc08SpLMFAg7k7vgvBcxWyL7EmSuG1VIOPTgwM+ ZJpcN9yNuuCjX7nygPnjfTlkSHhfgYzLDUpR9mFovoOj2O14GCVj7AR0rpeImv5jlHsA Y1MWZn1uTAGyhE3ViJp+RA4o9q9P5Di2Ota6bK+VLzNKS4SCXwalcEhsibUUypFY5HZI GL/XS/FDBJe3h/tLd8re3VC5H4n31LewUOqVFRERCF+jwh9SEMsgqo5dTnULC25QFLI5 Vkoa3k+D8OgIRPAz72GAiDwH/aLpHagc6dXuXc1nP3f4I3YemDDgYa2U16KHOR3QShcz kSoQ== 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=2PAmjG7RwxPKXzO1ODbpCvuLU0DwnS/gF2m8I+zX+6U=; b=bTer20NHajBe7ri9EcoB9jmZDBPMg8s+VziLWwIVuBnnXvAzj/ra+0arMUZRJWn7a7 4Q49sb5ABdOnxiN4qm2s8QABTAde9FRe01c44G51dos8WFXJusKvKMRVZSkDnM/tnCZ+ eTxm5lp560EqMsWklPTPCqZfaR+e3DdzeGcMTl/JAgv0eRuK81D0pQQmonM6eIE1A316 E7Dlf4wj6W/0fsxYV+1N1aOI/IQpi5+y6PDcP5BhSK9RSW/XuVe45EJHz5SvaqTp169D F9gpjIBnHlxxm9W8YRLU2zy8fMRIDpGtxHg/kevahbrp+v8nzfjbHHK0xcbXJDJEOSpe meSQ== 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 g21si18859596plo.235.2019.07.26.04.37.33; Fri, 26 Jul 2019 04:37:49 -0700 (PDT) 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 S1726000AbfGZLgM (ORCPT + 99 others); Fri, 26 Jul 2019 07:36:12 -0400 Received: from s3.sipsolutions.net ([144.76.43.62]:47646 "EHLO sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725903AbfGZLgM (ORCPT ); Fri, 26 Jul 2019 07:36:12 -0400 Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1hqyWA-0001yR-KQ; Fri, 26 Jul 2019 13:36:10 +0200 Message-ID: <90a9bd90fb2d906d6f61d56c1e36b3e6bb0388b8.camel@sipsolutions.net> Subject: Re: [PATCH V3 2/2] mac80211: add support for the ADDBA extension element From: Johannes Berg To: John Crispin Cc: linux-wireless@vger.kernel.org, Shashidhar Lakkavalli Date: Fri, 26 Jul 2019 13:36:08 +0200 In-Reply-To: <20190713163642.18491-3-john@phrozen.org> References: <20190713163642.18491-1-john@phrozen.org> <20190713163642.18491-3-john@phrozen.org> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.30.5 (3.30.5-1.fc29) 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 Hi, Apologies for the late review. I've applied patch 1, but not this one yet: > #define IEEE80211_HE_MAC_CAP0_DYNAMIC_FRAG_LEVEL_2 0x10 > #define IEEE80211_HE_MAC_CAP0_DYNAMIC_FRAG_LEVEL_3 0x18 > #define IEEE80211_HE_MAC_CAP0_DYNAMIC_FRAG_MASK 0x18 > +#define IEEE80211_HE_MAC_CAP0_DYNAMIC_FRAG_SHIFT 3 this will not be needed, > -static void ieee80211_send_addba_resp(struct ieee80211_sub_if_data *sdata, u8 *da, u16 tid, > +static void ieee80211_add_addbaext(struct ieee80211_sub_if_data *sdata, > + struct sk_buff *skb, > + const struct ieee80211_addba_ext_ie *req) > +{ > + struct ieee80211_supported_band *sband; > + struct ieee80211_addba_ext_ie *resp; > + const struct ieee80211_sta_he_cap *he_cap; > + u8 frag_level, cap_frag_level; > + u8 *pos; > + > + sband = ieee80211_get_sband(sdata); > + he_cap = ieee80211_get_he_iftype_cap(sband, sdata->vif.type); > + if (!he_cap) > + return; > + > + pos = skb_put_zero(skb, 2 + sizeof(struct ieee80211_addba_ext_ie)); > + *pos++ = WLAN_EID_ADDBA_EXT; > + *pos++ = sizeof(struct ieee80211_addba_ext_ie); > + resp = (struct ieee80211_addba_ext_ie *)pos; > + resp->data = req->data & IEEE80211_ADDBA_EXT_NO_FRAG; > + > + frag_level = (req->data & IEEE80211_ADDBA_EXT_FRAG_LEVEL_MASK) >> > + IEEE80211_ADDBA_EXT_FRAG_LEVEL_SHIFT; > + cap_frag_level = (he_cap->he_cap_elem.mac_cap_info[0] & > + IEEE80211_HE_MAC_CAP0_DYNAMIC_FRAG_MASK) >> > + IEEE80211_HE_MAC_CAP0_DYNAMIC_FRAG_SHIFT; if you use u32_get_bits() from bitfield.h here for these two assignments, which is nicer anyway. > + if (frag_level > cap_frag_level) > + frag_level = cap_frag_level; > + resp->data |= (frag_level << IEEE80211_ADDBA_EXT_FRAG_LEVEL_SHIFT) & > + IEEE80211_ADDBA_EXT_FRAG_LEVEL_MASK; and probably that could also be u8_encode_bits()? > - skb = dev_alloc_skb(sizeof(*mgmt) + local->hw.extra_tx_headroom); > + skb = dev_alloc_skb(sizeof(*mgmt) + > + (addbaext ? 2 + sizeof(struct ieee80211_addba_ext_ie) : 0) + > + local->hw.extra_tx_headroom); not much point in the if (ternary operator) for ... 3 bytes? :-) johannes