|
@@ -29417,7 +29417,8 @@ static int __wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
struct net_device *dev,
|
|
|
const u8 *buf, size_t len,
|
|
|
const u8 *src, const u8 *dest,
|
|
|
- __be16 proto, bool unencrypted)
|
|
|
+ __be16 proto, bool unencrypted,
|
|
|
+ int link_id)
|
|
|
{
|
|
|
qdf_nbuf_t nbuf;
|
|
|
struct ethhdr *ehdr;
|
|
@@ -29459,7 +29460,8 @@ static int _wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
struct net_device *dev,
|
|
|
const u8 *buf, size_t len,
|
|
|
const u8 *src, const u8 *dest,
|
|
|
- __be16 proto, bool unencrypted)
|
|
|
+ __be16 proto, bool unencrypted,
|
|
|
+ int link_id)
|
|
|
{
|
|
|
int errno;
|
|
|
struct osif_vdev_sync *vdev_sync;
|
|
@@ -29469,14 +29471,15 @@ static int _wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
return errno;
|
|
|
|
|
|
errno = __wlan_hdd_cfg80211_tx_control_port(wiphy, dev, buf, len, src,
|
|
|
- dest, proto, unencrypted);
|
|
|
+ dest, proto, unencrypted,
|
|
|
+ link_id);
|
|
|
|
|
|
osif_vdev_sync_op_stop(vdev_sync);
|
|
|
|
|
|
return errno;
|
|
|
}
|
|
|
|
|
|
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0) || \
|
|
|
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 41) || \
|
|
|
defined(CFG80211_TX_CONTROL_PORT_LINK_SUPPORT))
|
|
|
static int wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
struct net_device *dev,
|
|
@@ -29485,28 +29488,54 @@ static int wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
const u8 *dest, const __be16 proto,
|
|
|
bool unencrypted, int link_id,
|
|
|
u64 *cookie)
|
|
|
+{
|
|
|
+ struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
|
|
|
+
|
|
|
+ return _wlan_hdd_cfg80211_tx_control_port(wiphy, dev, buf, len,
|
|
|
+ adapter->mac_addr.bytes,
|
|
|
+ dest, proto, unencrypted,
|
|
|
+ link_id);
|
|
|
+}
|
|
|
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
|
|
|
static int wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
struct net_device *dev,
|
|
|
const u8 *buf, size_t len,
|
|
|
const u8 *dest, __be16 proto,
|
|
|
bool unencrypted, u64 *cookie)
|
|
|
+{
|
|
|
+ struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
|
|
|
+
|
|
|
+ return _wlan_hdd_cfg80211_tx_control_port(wiphy, dev, buf, len,
|
|
|
+ adapter->mac_addr.bytes,
|
|
|
+ dest, proto, unencrypted, -1);
|
|
|
+}
|
|
|
#else
|
|
|
static int wlan_hdd_cfg80211_tx_control_port(struct wiphy *wiphy,
|
|
|
struct net_device *dev,
|
|
|
const u8 *buf, size_t len,
|
|
|
const u8 *dest, __be16 proto,
|
|
|
bool unencrypted)
|
|
|
-#endif
|
|
|
{
|
|
|
struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
|
|
|
|
|
|
return _wlan_hdd_cfg80211_tx_control_port(wiphy, dev, buf, len,
|
|
|
adapter->mac_addr.bytes,
|
|
|
- dest, proto, unencrypted);
|
|
|
+ dest, proto, unencrypted, -1);
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
#if defined(CFG80211_CTRL_FRAME_SRC_ADDR_TA_ADDR)
|
|
|
+
|
|
|
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 41))
|
|
|
+bool wlan_hdd_cfg80211_rx_control_port(struct net_device *dev,
|
|
|
+ u8 *ta_addr,
|
|
|
+ struct sk_buff *skb,
|
|
|
+ bool unencrypted)
|
|
|
+{
|
|
|
+ return cfg80211_rx_control_port(dev, skb, unencrypted, -1);
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
bool wlan_hdd_cfg80211_rx_control_port(struct net_device *dev,
|
|
|
u8 *ta_addr,
|
|
|
struct sk_buff *skb,
|
|
@@ -29514,6 +29543,8 @@ bool wlan_hdd_cfg80211_rx_control_port(struct net_device *dev,
|
|
|
{
|
|
|
return cfg80211_rx_control_port(dev, ta_addr, skb, unencrypted);
|
|
|
}
|
|
|
+#endif
|
|
|
+
|
|
|
#else
|
|
|
bool wlan_hdd_cfg80211_rx_control_port(struct net_device *dev,
|
|
|
u8 *ta_addr,
|