From bf39e0bef2dff4419f51b7a8bb7da3de04a38bd7 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] 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 1f6ddf6..17672ac
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1791,6 +1791,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
  *
@@ -3957,6 +3964,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,
@@ -4292,6 +4301,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 797fe24..a72bdea 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 d85a39a..d515956
--- 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

