qcacld-3.0: Compilation error fix for MSM98998/SDM660
Wlan driver compilation is failing due to relative path not
found issue.So, for msm-4.4 kernel change driver module path
from relative to absolute.
Change-Id: Iadeb397769b67f2d6a61d026c200bf2d80f2b296
CRs-Fixed: 2752923
diff --git a/Kbuild b/Kbuild
index 6f0de2f..c45699c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -5,7 +5,6 @@
else
KERNEL_BUILD := n
endif
-
ifeq ($(KERNEL_BUILD), y)
# These are provided in external module based builds
# Need to explicitly define for Kernel-based builds
@@ -25,12 +24,19 @@
ifeq ($(KERNEL_BUILD), n)
ifneq ($(ANDROID_BUILD_TOP),)
+ KERNEL_PATH_4.4 := $(shell python -c "import os.path; print(os.path.exists('$(ANDROID_BUILD_TOP)/kernel/msm-4.4'))")
+ifeq ($(KERNEL_PATH_4.4), True)
+ override WLAN_ROOT := $(ANDROID_BUILD_TOP)/$(WLAN_ROOT)
+ override WLAN_COMMON_INC := $(ANDROID_BUILD_TOP)/$(WLAN_COMMON_INC)
+ override WLAN_FW_API := $(ANDROID_BUILD_TOP)/$(WLAN_FW_API)
+else
ANDROID_BUILD_TOP_REL := $(shell python -c "import os.path; print(os.path.relpath('$(ANDROID_BUILD_TOP)'))")
override WLAN_ROOT := $(ANDROID_BUILD_TOP_REL)/$(WLAN_ROOT)
override WLAN_COMMON_INC := $(ANDROID_BUILD_TOP_REL)/$(WLAN_COMMON_INC)
override WLAN_FW_API := $(ANDROID_BUILD_TOP_REL)/$(WLAN_FW_API)
endif
endif
+endif
# add configurations in WLAN_CFG_OVERRIDE
diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c
index 1d45598..c234b5b 100644
--- a/core/hdd/src/wlan_hdd_hostapd.c
+++ b/core/hdd/src/wlan_hdd_hostapd.c
@@ -6053,6 +6053,29 @@
return errno;
}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
+/*
+ * Beginning with 4.7 struct ieee80211_channel uses enum nl80211_band
+ */
+static inline
+enum nl80211_band ieee80211_channel_band(const struct ieee80211_channel *chan)
+{
+ return chan->band;
+}
+#else
+/*
+ * Prior to 4.7 struct ieee80211_channel used enum ieee80211_band. However the
+ * ieee80211_band enum values are assigned from enum nl80211_band so we can safely
+ * typecast one to another.
+ */
+static inline
+enum nl80211_band ieee80211_channel_band(const struct ieee80211_channel *chan)
+{
+ enum ieee80211_band band = chan->band;
+ return (enum nl80211_band)band;
+}
+#endif
+
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) || \
defined(CFG80211_BEACON_TX_RATE_CUSTOM_BACKPORT)
/**
@@ -6107,7 +6130,7 @@
struct cfg80211_bitrate_mask *beacon_rate_mask;
enum nl80211_band band;
- band = params->chandef.chan->band;
+ band = ieee80211_channel_band(params->chandef.chan);
beacon_rate_mask = ¶ms->beacon_rate;
if (beacon_rate_mask->control[band].legacy) {
adapter->session.ap.sap_config.beacon_tx_rate =