From f1d42518adad5791f668a46d3cad3a5efc5f0a30 Mon Sep 17 00:00:00 2001
From: Sujuan Chen <sujuan.chen@mediatek.com>
Date: Wed, 18 May 2022 15:10:22 +0800
Subject: [PATCH 99901/99901] mac80211: mtk: add fill receive path ops to get
 wed idx

Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
---
 include/net/mac80211.h    | 12 ++++++++++++
 net/mac80211/driver-ops.h | 13 +++++++++++++
 net/mac80211/iface.c      | 24 ++++++++++++++++++++++++
 net/mac80211/util.c       |  9 +++++++++
 4 files changed, 58 insertions(+)
 mode change 100644 => 100755 include/net/mac80211.h
 mode change 100644 => 100755 net/mac80211/util.c

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
old mode 100644
new mode 100755
index 95e5e66..9a38b9f
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1796,6 +1796,13 @@ struct ieee80211_vif *wdev_to_ieee80211_vif(struct wireless_dev *wdev);
  */
 struct wireless_dev *ieee80211_vif_to_wdev(struct ieee80211_vif *vif);
 
+/**
+ * ieee80211_vif_to_wdev - return a net_device struct from a vif
+ * @vif: the vif to get the net_device for
+ */
+struct net_device *ieee80211_vif_to_netdev(struct ieee80211_vif *vif);
+
+
 /**
  * enum ieee80211_key_flags - key flags
  *
@@ -3962,6 +3969,8 @@ struct ieee80211_prep_tx_info {
  *	disable background CAC/radar detection.
  * @net_fill_forward_path: Called from .ndo_fill_forward_path in order to
  *	resolve a path for hardware flow offloading
+ * @net_fill_receive_path: Called from .ndo_fill_receive_path in order to
+ *	get a path for hardware flow offloading
  */
 struct ieee80211_ops {
 	void (*tx)(struct ieee80211_hw *hw,
@@ -4297,6 +4306,9 @@ struct ieee80211_ops {
 				     struct ieee80211_sta *sta,
 				     struct net_device_path_ctx *ctx,
 				     struct net_device_path *path);
+	int (*net_fill_receive_path)(struct ieee80211_hw *hw,
+				     struct net_device_path_ctx *ctx,
+				     struct net_device_path *path);
 };
 
 /**
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index d2b68ef..27da75e 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1508,4 +1508,17 @@ static inline int drv_net_fill_forward_path(struct ieee80211_local *local,
 	return ret;
 }
 
+static inline int drv_net_fill_receive_path(struct ieee80211_local *local,
+					    struct net_device_path_ctx *ctx,
+					    struct net_device_path *path)
+{
+	int ret = -EOPNOTSUPP;
+
+	if (local->ops->net_fill_receive_path)
+		ret = local->ops->net_fill_receive_path(&local->hw,
+							ctx, path);
+
+	return ret;
+}
+
 #endif /* __MAC80211_DRIVER_OPS */
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 455791f..98b2369 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -910,6 +910,29 @@ out:
 	return ret;
 }
 
+static int ieee80211_netdev_fill_receive_path(struct net_device_path_ctx *ctx,
+					      struct net_device_path *path)
+{
+	struct ieee80211_sub_if_data *sdata;
+	struct ieee80211_local *local;
+	int ret = -ENOENT;
+
+	sdata = IEEE80211_DEV_TO_SUB_IF(ctx->dev);
+	local = sdata->local;
+
+	if (!local->ops->net_fill_receive_path)
+		return -EOPNOTSUPP;
+
+	rcu_read_lock();
+
+	ret = drv_net_fill_receive_path(local, ctx, path);
+
+	rcu_read_unlock();
+
+	return ret;
+}
+
+
 static const struct net_device_ops ieee80211_dataif_8023_ops = {
 #if LINUX_VERSION_IS_LESS(4,10,0)
 	.ndo_change_mtu = __change_mtu,
@@ -928,6 +951,7 @@ static const struct net_device_ops ieee80211_dataif_8023_ops = {
 	.ndo_get_stats64 = bp_ieee80211_get_stats64,
 #endif
 	.ndo_fill_forward_path = ieee80211_netdev_fill_forward_path,
+	.ndo_fill_receive_path = ieee80211_netdev_fill_receive_path,
 };
 
 static bool ieee80211_iftype_supports_hdr_offload(enum nl80211_iftype iftype)
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
old mode 100644
new mode 100755
index 8d36b05..d26a2b8
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -898,6 +898,15 @@ struct wireless_dev *ieee80211_vif_to_wdev(struct ieee80211_vif *vif)
 }
 EXPORT_SYMBOL_GPL(ieee80211_vif_to_wdev);
 
+struct net_device *ieee80211_vif_to_netdev(struct ieee80211_vif *vif)
+{
+	if (!vif)
+		return NULL;
+
+	return vif_to_sdata(vif)->dev;
+}
+EXPORT_SYMBOL_GPL(ieee80211_vif_to_netdev);
+
 /*
  * Nothing should have been stuffed into the workqueue during
  * the suspend->resume cycle. Since we can't check each caller
-- 
2.36.1

