Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Feb 2025 19:31:43 GMT
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 1086f7bab303 - main - net80211: add node VHT transmit rate helper functions
Message-ID:  <202502261931.51QJVhp8017757@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=1086f7bab303cc61b3dce1ae51cb008675ad758a

commit 1086f7bab303cc61b3dce1ae51cb008675ad758a
Author:     Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2025-01-13 05:50:34 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2025-02-26 19:30:51 +0000

    net80211: add node VHT transmit rate helper functions
    
    * add a node VHT transmit function, which configures the parameters
      accordingly.
    
    * add a node VHT transmit function which just copies in another
      ieee80211_node_txrate struct.
    
    Differential Revision:  https://reviews.freebsd.org/D48609
    Reviewed by:    bz
---
 sys/net80211/ieee80211_node.c | 40 ++++++++++++++++++++++++++++++++++++++++
 sys/net80211/ieee80211_node.h |  4 ++++
 2 files changed, 44 insertions(+)

diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
index 5a239bbd30f6..bc0358feb7a8 100644
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -3188,6 +3188,26 @@ ieee80211_node_get_txrate(struct ieee80211_node *ni,
 	*txr = ni->ni_txrate;
 }
 
+/**
+ * @brief Set the txrate representing the current transmit rate
+ *
+ * This is the API call for drivers and rate control APIs to set
+ * rates.  It will copy a struct ieee80211_node_txrate with the
+ * current rate configuration to use.
+ *
+ * @param ni		the ieee80211_node to return the transmit rate for
+ * @param txrate	the struct ieee80211_node_txrate to copy to the node
+ */
+void
+ieee80211_node_set_txrate(struct ieee80211_node *ni,
+    const struct ieee80211_node_txrate *txr)
+{
+	MPASS(ni != NULL);
+	MPASS(txr != NULL);
+
+	ni->ni_txrate = *txr;
+}
+
 /**
  * @brief set the dot11rate / ratecode representing the current transmit rate
  *
@@ -3240,6 +3260,26 @@ ieee80211_node_set_txrate_ht_mcsrate(struct ieee80211_node *ni,
 	ni->ni_txrate.dot11rate = IEEE80211_RATE_MCS | mcs;
 }
 
+/**
+ * @brief set the rate to the given VHT transmission rate.
+ *
+ * This sets the current transmit rate to the given VHT NSS/MCS.
+ *
+ * @param ni		the ieee80211_node to set the transmit rate for
+ * @param nss		the number of spatial streams
+ * @param mcs		the MCS rate to select
+ */
+void
+ieee80211_node_set_txrate_vht_rate(struct ieee80211_node *ni,
+    uint8_t nss, uint8_t mcs)
+{
+	MPASS(ni != NULL);
+
+	ni->ni_txrate.type = IEEE80211_NODE_TXRATE_VHT;
+	ni->ni_txrate.mcs = mcs;
+	ni->ni_txrate.nss = nss;
+	ni->ni_txrate.dot11rate = 0;
+}
 
 /*
  * @brief Fetch the transmit rate for the given node in kbit/s.
diff --git a/sys/net80211/ieee80211_node.h b/sys/net80211/ieee80211_node.h
index 969d8e563fa9..ae5f72a070b6 100644
--- a/sys/net80211/ieee80211_node.h
+++ b/sys/net80211/ieee80211_node.h
@@ -521,8 +521,12 @@ void	ieee80211_getsignal(struct ieee80211vap *, int8_t *, int8_t *);
 uint8_t	ieee80211_node_get_txrate_dot11rate(struct ieee80211_node *);
 void	ieee80211_node_get_txrate(struct ieee80211_node *,
 		struct ieee80211_node_txrate *);
+void	ieee80211_node_set_txrate(struct ieee80211_node *,
+	    const struct ieee80211_node_txrate *);
 void	ieee80211_node_set_txrate_dot11rate(struct ieee80211_node *, uint8_t);
 void	ieee80211_node_set_txrate_ht_mcsrate(struct ieee80211_node *, uint8_t);
 uint32_t	ieee80211_node_get_txrate_kbit(struct ieee80211_node *);
+void	ieee80211_node_set_txrate_vht_rate(struct ieee80211_node *ni,
+	    uint8_t nss, uint8_t mcs);
 
 #endif /* _NET80211_IEEE80211_NODE_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202502261931.51QJVhp8017757>