Reading and writing back the tsf value via tsf is too slow if one wants
to make small increments to this timer.  With this change you can use
the syntax "+=<some value>" or "-=<some value>" to add or substract a
value from the tsf counter.

Signed-off-by: Javier Cardona <[email protected]>
---
 net/mac80211/debugfs_netdev.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c
index a32eeda..a2ba9bf 100644
--- a/net/mac80211/debugfs_netdev.c
+++ b/net/mac80211/debugfs_netdev.c
@@ -424,6 +424,7 @@ static ssize_t ieee80211_if_parse_tsf(
        struct ieee80211_local *local = sdata->local;
        unsigned long long tsf;
        int ret;
+       int tsf_is_delta = 0;
 
        if (strncmp(buf, "reset", 5) == 0) {
                if (local->ops->reset_tsf) {
@@ -431,9 +432,20 @@ static ssize_t ieee80211_if_parse_tsf(
                        wiphy_info(local->hw.wiphy, "debugfs reset TSF\n");
                }
        } else {
+               if (buflen > 10 && buf[1] == '=') {
+                       if (buf[0] == '+')
+                               tsf_is_delta = 1;
+                       else if (buf[0] == '-')
+                               tsf_is_delta = -1;
+                       else
+                               return -EINVAL;
+                       buf += 2;
+               }
                ret = kstrtoull(buf, 10, &tsf);
                if (ret < 0)
                        return -EINVAL;
+               if (tsf_is_delta)
+                       tsf = drv_get_tsf(local, sdata) + tsf_is_delta * tsf;
                if (local->ops->set_tsf) {
                        drv_set_tsf(local, sdata, tsf);
                        wiphy_info(local->hw.wiphy,
-- 
1.7.5.4

_______________________________________________
Devel mailing list
[email protected]
http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel

Reply via email to