From: Tamizh chelvam <tamizhr@codeaurora.org>
To: johannes@sipsolutions.net, ath10k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org, Tamizh chelvam <tamizhr@codeaurora.org>
Subject: [PATCHv3 6/9] mac80211: Add api to support configuring TID specific configuration
Date: Wed, 6 Mar 2019 23:30:48 +0530 [thread overview]
Message-ID: <1551895251-22941-7-git-send-email-tamizhr@codeaurora.org> (raw)
In-Reply-To: <1551895251-22941-1-git-send-email-tamizhr@codeaurora.org>
Implement drv_set_tid_config api to allow TID specific
configuration. This per-TID configuration
will be applied for all the connected stations when MAC is NULL.
Signed-off-by: Tamizh chelvam <tamizhr@codeaurora.org>
---
include/net/mac80211.h | 35 +++++++++++++++++++++++++++++++++++
net/mac80211/cfg.c | 28 ++++++++++++++++++++++++++++
net/mac80211/driver-ops.h | 15 +++++++++++++++
3 files changed, 78 insertions(+)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index ac2ed8e..f8e279c 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1556,6 +1556,8 @@ enum ieee80211_vif_flags {
IEEE80211_VIF_GET_NOA_UPDATE = BIT(3),
};
+#define IEEE80211_TID_MAX 8
+
/**
* struct ieee80211_vif - per-interface data
*
@@ -1593,6 +1595,11 @@ enum ieee80211_vif_flags {
* @txq: the multicast data TX queue (if driver uses the TXQ abstraction)
* @txqs_stopped: per AC flag to indicate that intermediate TXQs are stopped,
* protected by fq->lock.
+ * @noack: per-TID noack policy.
+ * @retry_short: per-TID retry count.
+ * @retry_long: per-TID count.
+ * @ampdu: per-TID Aggregation-MPDU.
+ * @tx_rate_mask: per-TID tx rate value.
*/
struct ieee80211_vif {
enum nl80211_iftype type;
@@ -1619,6 +1626,14 @@ struct ieee80211_vif {
bool txqs_stopped[IEEE80211_NUM_ACS];
+ int noack[IEEE80211_TID_MAX];
+ int retry_short[IEEE80211_TID_MAX];
+ int retry_long[IEEE80211_TID_MAX];
+ int ampdu[IEEE80211_TID_MAX];
+ u8 rate_ctrl[IEEE80211_TID_MAX];
+ u32 rate_code[IEEE80211_TID_MAX];
+ u8 rtscts[IEEE80211_TID_MAX];
+
/* must be last */
u8 drv_priv[0] __aligned(sizeof(void *));
};
@@ -1933,6 +1948,11 @@ struct ieee80211_sta_rates {
* @max_tid_amsdu_len: Maximum A-MSDU size in bytes for this TID
* @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that
* the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames
+ * @noack: per-TID noack policy.
+ * @retry_short: per-TID retry count.
+ * @retry_long: per-TID count.
+ * @ampdu: per-TID Aggregation-MPDU.
+ * @tx_rate_mask: per-TID tx rate value.
*/
struct ieee80211_sta {
u32 supp_rates[NUM_NL80211_BANDS];
@@ -1976,6 +1996,13 @@ struct ieee80211_sta {
struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1];
+ int noack[IEEE80211_TID_MAX];
+ int retry_short[IEEE80211_TID_MAX];
+ int retry_long[IEEE80211_TID_MAX];
+ int ampdu[IEEE80211_TID_MAX];
+ u8 rate_ctrl[IEEE80211_TID_MAX];
+ u8 rtscts[IEEE80211_TID_MAX];
+
/* must be last */
u8 drv_priv[0] __aligned(sizeof(void *));
};
@@ -3707,6 +3734,10 @@ enum ieee80211_reconfig_type {
*
* @start_pmsr: start peer measurement (e.g. FTM) (this call can sleep)
* @abort_pmsr: abort peer measurement (this call can sleep)
+ * @set_tid_config: TID specific configurations will be applied for a particular
+ * station when @sta is non-NULL. When @sta is NULL, then the configuration
+ * will be for all the connected clients in the vif.
+ * This callback may sleep.
*/
struct ieee80211_ops {
void (*tx)(struct ieee80211_hw *hw,
@@ -4004,6 +4035,10 @@ struct ieee80211_ops {
struct cfg80211_pmsr_request *request);
void (*abort_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct cfg80211_pmsr_request *request);
+ int (*set_tid_config)(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif,
+ struct ieee80211_sta *sta,
+ struct ieee80211_tid_config *tid_conf);
};
/**
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 09dd1c2..7d9c44d 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3893,6 +3893,33 @@ static int ieee80211_get_txq_stats(struct wiphy *wiphy,
return drv_abort_pmsr(local, sdata, request);
}
+static int ieee80211_set_tid_config(struct wiphy *wiphy,
+ struct net_device *dev,
+ struct ieee80211_tid_config *tid_conf)
+{
+ struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+ struct sta_info *sta;
+ int ret;
+
+ if (!sdata->local->ops->set_tid_config)
+ return -EOPNOTSUPP;
+
+ if (!tid_conf->peer)
+ return drv_set_tid_config(sdata->local, sdata, NULL, tid_conf);
+
+ mutex_lock(&sdata->local->sta_mtx);
+
+ sta = sta_info_get_bss(sdata, tid_conf->peer);
+ if (!sta) {
+ mutex_unlock(&sdata->local->sta_mtx);
+ return -ENOENT;
+ }
+
+ ret = drv_set_tid_config(sdata->local, sdata, &sta->sta, tid_conf);
+ mutex_unlock(&sdata->local->sta_mtx);
+ return ret;
+}
+
const struct cfg80211_ops mac80211_config_ops = {
.add_virtual_intf = ieee80211_add_iface,
.del_virtual_intf = ieee80211_del_iface,
@@ -3990,4 +4017,5 @@ static int ieee80211_get_txq_stats(struct wiphy *wiphy,
.get_ftm_responder_stats = ieee80211_get_ftm_responder_stats,
.start_pmsr = ieee80211_start_pmsr,
.abort_pmsr = ieee80211_abort_pmsr,
+ .set_tid_config = ieee80211_set_tid_config,
};
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 28d022a..d316b18 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1348,4 +1348,19 @@ static inline void drv_del_nan_func(struct ieee80211_local *local,
trace_drv_return_void(local);
}
+static inline int drv_set_tid_config(struct ieee80211_local *local,
+ struct ieee80211_sub_if_data *sdata,
+ struct ieee80211_sta *sta,
+ struct ieee80211_tid_config *tid_conf)
+{
+ int ret;
+
+ might_sleep();
+ ret = local->ops->set_tid_config(&local->hw, &sdata->vif, sta,
+ tid_conf);
+ trace_drv_return_int(local, ret);
+
+ return ret;
+}
+
#endif /* __MAC80211_DRIVER_OPS */
--
1.9.1
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2019-03-06 18:03 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-06 18:00 [PATCHv3 0/9] cfg80211/mac80211: Add support for TID specific configuration Tamizh chelvam
2019-03-06 18:00 ` [PATCHv3 1/9] nl80211: New netlink command " Tamizh chelvam
2019-03-26 7:00 ` Dan Carpenter
2019-03-06 18:00 ` [PATCHv3 2/9] nl80211: Add new netlink attribute for TID speicific retry count Tamizh chelvam
2019-03-06 18:00 ` [PATCHv3 3/9] nl80211: Add netlink attribute for AMPDU aggregation enable/disable Tamizh chelvam
2019-03-06 18:00 ` [PATCHv3 4/9] nl80211: Add netlink attribute to enable/disable RTS_CTS Tamizh chelvam
2019-03-06 18:00 ` [PATCHv3 5/9] nl80211: Add netlink attribute to configure TID specific tx rate Tamizh chelvam
2019-03-06 18:00 ` Tamizh chelvam [this message]
2019-03-08 16:54 ` [PATCHv3 6/9] mac80211: Add api to support configuring TID specific configuration kbuild test robot
2019-03-06 18:00 ` [PATCHv3 7/9] ath10k: Add wmi command support for station specific TID config Tamizh chelvam
2019-03-06 18:00 ` [PATCHv3 8/9] ath10k: Add new api to support TID specific configuration Tamizh chelvam
2019-03-11 7:02 ` Dan Carpenter
2019-03-06 18:00 ` [PATCHv3 9/9] ath10k: Add extended TID configuration support Tamizh chelvam
2019-03-08 19:30 ` [PATCHv3 0/9] cfg80211/mac80211: Add support for TID specific configuration Sergey Matyukevich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1551895251-22941-7-git-send-email-tamizhr@codeaurora.org \
--to=tamizhr@codeaurora.org \
--cc=ath10k@lists.infradead.org \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox