[PATCH] staging: brcm80211: preparation for measurement functionality

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Added functions that are not invoked yet, but are there as a reminder that
this functionality needs to be activated. The functions set certain flags
that withold the phy from calibration during measurements.

Signed-off-by: Roland Vossen <rvossen@xxxxxxxxxxxx>
---
 drivers/staging/brcm80211/brcmsmac/wl_mac80211.c  |   16 ++++++++++++++++
 drivers/staging/brcm80211/brcmsmac/wlc_mac80211.c |   13 +++++++++++++
 drivers/staging/brcm80211/brcmsmac/wlc_pub.h      |    2 ++
 3 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
index 7645c6c..9fc6de9 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
@@ -2006,3 +2006,19 @@ bool wl_rfkill_set_hw_state(struct wl_info *wl)
 	WL_LOCK(wl);
 	return blocked;
 }
+
+/*
+ * placeholder routine that will be used once Mac80211 radio measurement
+ * functionality becomes available
+ */
+int wl_ops_measurement(struct ieee80211_hw *hw, u32 start)
+{
+	struct wl_info *wl = hw->priv;
+	WL_LOCK(wl);
+	if (start)
+		wlc_meas_start(wl->wlc);
+	else
+		wlc_meas_stop(wl->wlc);
+	WL_UNLOCK(wl);
+	return -ENOSYS; /* currently not implemented */
+}
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wlc_mac80211.c
index 711656d..8a6cdb1 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_mac80211.c
@@ -8545,3 +8545,16 @@ void wlc_associate_upd(struct wlc_info *wlc, bool state)
 	wlc->pub->associated = state;
 	wlc->cfg->associated = state;
 }
+
+/*
+ * Flag 'measurement in progress' to withold dynamic phy calibration
+ */
+void wlc_meas_start(struct wlc_info *wlc)
+{
+	wlc_phy_hold_upd(wlc->band->pi, PHY_HOLD_FOR_RM, true);
+}
+
+void wlc_meas_stop(struct wlc_info *wlc)
+{
+	wlc_phy_hold_upd(wlc->band->pi, PHY_HOLD_FOR_RM, false);
+}
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_pub.h b/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
index ddce1dd..a1a6ab4 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
@@ -580,6 +580,8 @@ extern void wlc_associate_upd(struct wlc_info *wlc, bool state);
 extern void wlc_scan_start(struct wlc_info *wlc);
 extern void wlc_scan_stop(struct wlc_info *wlc);
 extern void wlc_associate_upd(struct wlc_info *wlc, bool state);
+extern void wlc_meas_start(struct wlc_info *wlc);
+extern void wlc_meas_stop(struct wlc_info *wlc);
 
 static inline int wlc_iovar_getuint(struct wlc_info *wlc, const char *name,
 				    uint *arg)
-- 
1.7.1


_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux