From ab3989fe1cbdd9ed29f9f3a44469a489514b65cf 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 9901/9902] 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 9c35e0b..2ed355a
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1798,6 +1798,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
  *
@@ -3975,6 +3982,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,
@@ -4312,6 +4321,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 19e2ada..88dedfc 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1523,4 +1523,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 a7169a5..8a4f4e1 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -911,6 +911,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,
@@ -929,6 +952,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.18.0

