Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f99d8e2 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge f72bd27a on remote branch

Change-Id: I417a0887c94634ca5616d95046ac3cf7e1a11efc
parents 90fd1eaf f72bd27a
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -270,4 +271,52 @@ int hdd_softap_inspect_dhcp_packet(struct hdd_adapter *adapter,
 */
void hdd_softap_check_wait_for_tx_eap_pkt(struct hdd_adapter *adapter,
					  struct qdf_mac_addr *mac_addr);

#ifndef QCA_LL_LEGACY_TX_FLOW_CONTROL
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 19, 0))
/**
 * hdd_skb_orphan() - skb_unshare a cloned packed else skb_orphan
 * @adapter: pointer to HDD adapter
 * @skb: pointer to skb data packet
 *
 * Return: pointer to skb structure
 */
static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,
					     struct sk_buff *skb)
{
	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);

	hdd_skb_fill_gso_size(adapter->dev, skb);

	if (skb_cloned(skb)) {
		++adapter->hdd_stats.tx_rx_stats.tx_orphaned;
		skb_orphan(skb);
		return skb;
	}

	if (unlikely(hdd_ctx->config->tx_orphan_enable)) {
		/*
		 * For UDP packets we want to orphan the packet to allow the app
		 * to send more packets. The flow would ultimately be controlled
		 * by the limited number of tx descriptors for the vdev.
		 */
		++adapter->hdd_stats.tx_rx_stats.tx_orphaned;
		skb_orphan(skb);
	}

	return skb;
}
#else
static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,
					     struct sk_buff *skb)
{
	struct sk_buff *nskb;

	hdd_skb_fill_gso_size(adapter->dev, skb);
	nskb = skb_unshare(skb, GFP_ATOMIC);

	return nskb;
}
#endif
#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */
#endif /* end #if !defined(WLAN_HDD_SOFTAP_TX_RX_H) */
+0 −33
Original line number Diff line number Diff line
@@ -204,39 +204,6 @@ static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,

	return skb;
}

#else
/**
 * hdd_skb_orphan() - skb_unshare a cloned packed else skb_orphan
 * @adapter: pointer to HDD adapter
 * @skb: pointer to skb data packet
 *
 * Return: pointer to skb structure
 */
static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,
		struct sk_buff *skb) {

	struct sk_buff *nskb;
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 19, 0))
	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
#endif

	hdd_skb_fill_gso_size(adapter->dev, skb);

	nskb = skb_unshare(skb, GFP_ATOMIC);
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 19, 0))
	if (unlikely(hdd_ctx->config->tx_orphan_enable) && (nskb == skb)) {
		/*
		 * For UDP packets we want to orphan the packet to allow the app
		 * to send more packets. The flow would ultimately be controlled
		 * by the limited number of tx descriptors for the vdev.
		 */
		++adapter->hdd_stats.tx_rx_stats.tx_orphaned;
		skb_orphan(skb);
	}
#endif
	return nskb;
}
#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */

#define IEEE8021X_AUTH_TYPE_EAP 0
+0 −33
Original line number Diff line number Diff line
@@ -385,39 +385,6 @@ void hdd_get_tx_resource(struct hdd_adapter *adapter,
		}
	}
}

#else
/**
 * hdd_skb_orphan() - skb_unshare a cloned packed else skb_orphan
 * @adapter: pointer to HDD adapter
 * @skb: pointer to skb data packet
 *
 * Return: pointer to skb structure
 */
static inline struct sk_buff *hdd_skb_orphan(struct hdd_adapter *adapter,
		struct sk_buff *skb) {

	struct sk_buff *nskb;
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 19, 0))
	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
#endif

	hdd_skb_fill_gso_size(adapter->dev, skb);

	nskb = skb_unshare(skb, GFP_ATOMIC);
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 19, 0))
	if (unlikely(hdd_ctx->config->tx_orphan_enable) && (nskb == skb)) {
		/*
		 * For UDP packets we want to orphan the packet to allow the app
		 * to send more packets. The flow would ultimately be controlled
		 * by the limited number of tx descriptors for the vdev.
		 */
		++adapter->hdd_stats.tx_rx_stats.tx_orphaned;
		skb_orphan(skb);
	}
#endif
	return nskb;
}
#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */

uint32_t hdd_txrx_get_tx_ack_count(struct hdd_adapter *adapter)
+2 −2
Original line number Diff line number Diff line
@@ -32,9 +32,9 @@
#define QWLAN_VERSION_MAJOR            5
#define QWLAN_VERSION_MINOR            2
#define QWLAN_VERSION_PATCH            022
#define QWLAN_VERSION_EXTRA            "B"
#define QWLAN_VERSION_EXTRA            "D"
#define QWLAN_VERSION_BUILD            11

#define QWLAN_VERSIONSTR               "5.2.022.11B"
#define QWLAN_VERSIONSTR               "5.2.022.11D"

#endif /* QWLAN_VERSION_H */
+5 −0
Original line number Diff line number Diff line
@@ -711,6 +711,11 @@ int wlan_cfg80211_tdls_get_all_peers(struct wlan_objmgr_vdev *vdev,

	tdls_priv = osif_priv->osif_tdls;

	if (!completion_done(&tdls_priv->tdls_user_cmd_comp)) {
		osif_err("TDLS user cmd still in progress, reject this one");
		return -EBUSY;
	}

	wlan_cfg80211_update_tdls_peers_rssi(vdev);

	reinit_completion(&tdls_priv->tdls_user_cmd_comp);