[RFC 1/8] introduce common hw features

Janusz Dziedzic janusz.dziedzic
Thu Jan 8 03:48:29 PST 2015


Introduce wpa_supplicant/hostapd hw features.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
---
 hostapd/Makefile                |  1 +
 src/common/hw_features_common.c | 76 +++++++++++++++++++++++++++++++++++++++++
 src/common/hw_features_common.h | 21 ++++++++++++
 wpa_supplicant/Makefile         |  1 +
 4 files changed, 99 insertions(+)
 create mode 100644 src/common/hw_features_common.c
 create mode 100644 src/common/hw_features_common.h

diff --git a/hostapd/Makefile b/hostapd/Makefile
index d1143bb..fadafc7 100644
--- a/hostapd/Makefile
+++ b/hostapd/Makefile
@@ -115,6 +115,7 @@ OBJS += ../src/utils/ip_addr.o
 
 OBJS += ../src/common/ieee802_11_common.o
 OBJS += ../src/common/wpa_common.o
+OBJS += ../src/common/hw_features_common.o
 
 OBJS += ../src/eapol_auth/eapol_auth_sm.o
 
diff --git a/src/common/hw_features_common.c b/src/common/hw_features_common.c
new file mode 100644
index 0000000..96c191c
--- /dev/null
+++ b/src/common/hw_features_common.c
@@ -0,0 +1,76 @@
+/*
+ * Common hostapd/wpa_supplicant HW features
+ * Copyright (c) 2002-2013, Jouni Malinen <j at w1.fi>
+ * Copyright (c) 2015, Qualcomm Atheros, Inc.
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#include "includes.h"
+
+#include "common.h"
+#include "defs.h"
+#include "hw_features_common.h"
+
+struct hostapd_channel_data *hw_get_channel_chan(struct hostapd_hw_modes *mode, int chan, int *freq)
+{
+	int i;
+
+	if (freq)
+		*freq = 0;
+
+	if (!mode)
+		return NULL;
+
+	for (i = 0; i < mode->num_channels; i++) {
+		struct hostapd_channel_data *ch = &mode->channels[i];
+		if (ch->chan == chan) {
+			if (freq)
+				*freq = ch->freq;
+			return ch;
+		}
+	}
+
+	return NULL;
+}
+
+struct hostapd_channel_data *hw_get_channel_freq(struct hostapd_hw_modes *mode, int freq, int *chan)
+{
+	int i;
+
+	if (chan)
+		*chan = 0;
+
+	if (!mode)
+		return NULL;
+
+	for (i = 0; i < mode->num_channels; i++) {
+		struct hostapd_channel_data *ch = &mode->channels[i];
+		if (ch->freq == freq) {
+			if (chan)
+				*chan = ch->chan;
+			return ch;
+		}
+	}
+
+	return NULL;
+}
+
+int hw_get_freq(struct hostapd_hw_modes *mode, int chan)
+{
+	int freq;
+
+	hw_get_channel_chan(mode, chan, &freq);
+
+	return freq;
+}
+
+int hw_get_chan(struct hostapd_hw_modes *mode, int freq)
+{
+	int chan;
+
+	hw_get_channel_freq(mode, freq, &chan);
+
+	return chan;
+}
diff --git a/src/common/hw_features_common.h b/src/common/hw_features_common.h
new file mode 100644
index 0000000..abcfe73
--- /dev/null
+++ b/src/common/hw_features_common.h
@@ -0,0 +1,21 @@
+/*
+ * Common hostapd/wpa_supplicant HW features
+ * Copyright (c) 2002-2013, Jouni Malinen <j at w1.fi>
+ * Copyright (c) 2015, Qualcomm Atheros, Inc.
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#ifndef HW_FEATURES_COMMON_H
+#define HW_FEATURES_COMMON_H
+
+#include "drivers/driver.h"
+
+struct hostapd_channel_data *hw_get_channel_chan(struct hostapd_hw_modes *mode, int chan, int *freq);
+struct hostapd_channel_data *hw_get_channel_freq(struct hostapd_hw_modes *mode, int freq, int *chan);
+
+int hw_get_freq(struct hostapd_hw_modes *mode, int chan);
+int hw_get_chan(struct hostapd_hw_modes *mode, int freq);
+
+#endif /* HW_FEATURES_COMMON_H */
diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile
index c2f8d01..9d7e9c7 100644
--- a/wpa_supplicant/Makefile
+++ b/wpa_supplicant/Makefile
@@ -1421,6 +1421,7 @@ CFLAGS += -DCONFIG_SME
 endif
 
 OBJS += ../src/common/ieee802_11_common.o
+OBJS += ../src/common/hw_features_common.o
 
 ifdef NEED_EAP_COMMON
 OBJS += ../src/eap_common/eap_common.o
-- 
1.9.1




More information about the Hostap mailing list