From owner-freebsd-wireless@freebsd.org Sun Dec 1 05:58:35 2019 Return-Path: Delivered-To: freebsd-wireless@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 33E651B1E22 for ; Sun, 1 Dec 2019 05:58:35 +0000 (UTC) (envelope-from lrx337@gmail.com) Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47QcxQ22fcz4SSK for ; Sun, 1 Dec 2019 05:58:34 +0000 (UTC) (envelope-from lrx337@gmail.com) Received: by mail-lf1-x12c.google.com with SMTP id l14so25466959lfh.10 for ; Sat, 30 Nov 2019 21:58:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=3HdvVqKeuWVzNEbRN/ALcKKltAQZ8knjPQJ3LW9w7XE=; b=csFPhDFLGrGmkHdC9qzi1Dsed4HgkJB4Zf5ZFUzxLDZ2jUKSLRl5AezaqmJzJXv49r H2jqfjQG6sEL3yDo3Ha8sb8Ye7FlA8NZOUIl4GaU//7nJwKTXBelZk0bKM/PvGw4LGZy cKtBsfmrVNz5qciLGu/hEJBCuATT0PpplDQ9auIBoNpGxRgzaOCO0brMDm4dfK2l45te eIFT+LJyxb2pSVmWruSZSjMaH15w4ctsAQIzEH6FLS2D7EiQ0sldX8Qsv0MKDSGopSkF EekLukE7Hme0X9tguz4XOClzD+WzgAePyqlRKOoA4jWvvRFPp4DA5GR/+px5LH7e07sA AuPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=3HdvVqKeuWVzNEbRN/ALcKKltAQZ8knjPQJ3LW9w7XE=; b=ZdfMTeUnP9rD9POLBJ1Cr/7aslmvPA6CzXb3ElV4wTl/Je5PN2R7GYufEvcoFgaQuE wooazIiiIWUarQ6TOYHyoArKbPKUB23qfpfgtJB8YlSk/k05pQ/2phDYiNMr/Oacqu8S cjKYQQjk31YusAnTUEdIffC4DrcK//jTPetpKdxLqDIyNzU09W4GubO46d/JOalobD41 GzLVpUfS3xZmYq84KQXuj2r80XEyI6hur9/+j1223KP/+jRTbTQmONM0yBAmEruv6Dzd 69Dvte8T0SKtUflyPDbFG4BnwI1kI1iSWRqghddLE7gyCuWI4FRDGgmVRrE/SlyCCaWk uwwg== X-Gm-Message-State: APjAAAV6PDakZXs9lEOgwQmQO0Q/72lnFDeNsJcXBqkL/OROwcaTNOEL Gd5+/YPFNu8guGZHFz1V5tCyIFIj1TfJ3wTVTFhkxCpM X-Google-Smtp-Source: APXvYqx+JLWo3WkNlIIwLKsrsAYRCfo1w92Y2EPyZ13+2lgVuuN4fpJR+pX5RPB3pKTv94khshwGtL0jHupLXMKNHTk= X-Received: by 2002:ac2:4102:: with SMTP id b2mr40162968lfi.16.1575179911406; Sat, 30 Nov 2019 21:58:31 -0800 (PST) MIME-Version: 1.0 From: Ashish Gupta Date: Sun, 1 Dec 2019 00:58:20 -0500 Message-ID: Subject: run(4) driver: 802.11n support for RT3593 To: freebsd-wireless@freebsd.org X-Rspamd-Queue-Id: 47QcxQ22fcz4SSK X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=csFPhDFL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of lrx337@gmail.com designates 2a00:1450:4864:20::12c as permitted sender) smtp.mailfrom=lrx337@gmail.com X-Spamd-Result: default: False [-3.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-wireless@freebsd.org]; TO_DN_NONE(0.00)[]; IP_SCORE_FREEMAIL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; IP_SCORE(0.00)[ip: (-9.38), ipnet: 2a00:1450::/32(-2.69), asn: 15169(-1.94), country: US(-0.05)]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[c.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.5.4.1.0.0.a.2.list.dnswl.org : 127.0.5.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Dec 2019 05:58:35 -0000 Hi! I've been messing around with the run driver and the net80211 implementation for a bit with the aim of enabling 802.11ng support (worry about 11ac later) using monitor mode captures when running my ASUS USB N66 Ralink RT3593 on both linux and freebsd. The run(4) driver was not sending out HT capability tags with the probe requests (while the linux driver does). This seemed like a (logical?) first step on the road to having full 802.11n support in the run driver. The following patch accomplishes it, although the capabilities need some tuning in the run driver setup code to be identical with the linux driver. I don't know why the existing ieee80211 code only does this for IBSS mode, and not STA mode. What do you think about this? And... what would be a good next step to further this mission? Index: sys/dev/usb/wlan/if_run.c =================================================================== --- sys/dev/usb/wlan/if_run.c (revision 354552) +++ sys/dev/usb/wlan/if_run.c (working copy) @@ -808,6 +808,28 @@ IEEE80211_C_WME | /* WME */ IEEE80211_C_WPA; /* WPA1|WPA2(RSN) */ + /* set device HT capabilities */ + /* HT Capabilities strictly for 11ng (we dont support 11ac yet..) */ + ic->ic_htcaps = IEEE80211_HTC_HT | IEEE80211_HTC_AMPDU | + + /* IEEE80211_HTCAP_LDPC | */ + IEEE80211_HTCAP_CHWIDTH40 | + IEEE80211_HTCAP_GREENFIELD | + IEEE80211_HTCAP_SMPS_OFF | + IEEE80211_HTCAP_SHORTGI20 | + IEEE80211_HTCAP_SHORTGI40 | + IEEE80211_HTCAP_TXSTBC | + IEEE80211_HTCAP_RXSTBC_3STREAM | + /* IEEE80211_HTCAP_DSSSCCK40 | */ + + IEEE80211_HTCAP_MAXRXAMPDU | + IEEE80211_HTCAP_MPDUDENSITY_4; + + /* TODO: Remaining Rx supported mcs, ht extended cap, transmit beam forming, + antenna selection caps. Later.. */ + + device_printf(sc->sc_dev, "ic_htcaps = 0x%x\n", ic->ic_htcaps); + ic->ic_cryptocaps = IEEE80211_CRYPTO_WEP | IEEE80211_CRYPTO_AES_CCM | @@ -4851,6 +4873,12 @@ memset(bands, 0, sizeof(bands)); setbit(bands, IEEE80211_MODE_11B); setbit(bands, IEEE80211_MODE_11G); + + if(sc->rf_rev == RT3593_RF_3053) { + device_printf(sc->sc_dev, "Adding mode 11ng to RT3593 channels.\n"); + setbit(bands, IEEE80211_MODE_11NG); + } + ieee80211_add_channels_default_2ghz(chans, maxchans, nchans, bands, 0); if (sc->rf_rev == RT2860_RF_2750 || sc->rf_rev == RT2860_RF_2850 || Index: sys/net80211/ieee80211_output.c =================================================================== --- sys/net80211/ieee80211_output.c (revision 354552) +++ sys/net80211/ieee80211_output.c (working copy) @@ -2415,7 +2415,19 @@ frm = ieee80211_add_htcap_ch(frm, vap, c); } + if ((vap->iv_opmode == IEEE80211_M_STA) && (vap->iv_flags_ht & IEEE80211_FHT_HT)) { + struct ieee80211_channel *c; + /* + * Get the HT channel that we should try upgrading to. + * If we can do 40MHz then this'll upgrade it appropriately. + */ + c = ieee80211_ht_adjust_channel(ic, ic->ic_curchan, + vap->iv_flags_ht); + frm = ieee80211_add_htcap_ch(frm, vap, c); + } + + /* * XXX TODO: need to figure out what/how to update the * VHT channel. */ Thanks! Ashish Gupta