mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
Merge "qcacld-3.0: Do RX packet aggregation for every 16th packet" into wlan-cld3.driver.lnx.2.0-dev
This commit is contained in:
commit
91d5689c2c
1 changed files with 39 additions and 1 deletions
|
|
@ -91,6 +91,8 @@
|
|||
|
||||
#define HDD_IPA_MAX_PENDING_EVENT_COUNT 20
|
||||
|
||||
#define IPA_WLAN_RX_SOFTIRQ_THRESH 16
|
||||
|
||||
enum hdd_ipa_uc_op_code {
|
||||
HDD_IPA_UC_OPCODE_TX_SUSPEND = 0,
|
||||
HDD_IPA_UC_OPCODE_TX_RESUME = 1,
|
||||
|
|
@ -4076,6 +4078,40 @@ static void hdd_ipa_destroy_rm_resource(struct hdd_ipa_priv *hdd_ipa)
|
|||
"RM CONS resource delete failed %d", ret);
|
||||
}
|
||||
|
||||
#ifdef QCA_CONFIG_SMP
|
||||
static int hdd_ipa_aggregated_rx_ind(qdf_nbuf_t skb)
|
||||
{
|
||||
return netif_rx_ni(skb);
|
||||
}
|
||||
#else
|
||||
static int hdd_ipa_aggregated_rx_ind(qdf_nbuf_t skb)
|
||||
{
|
||||
struct iphdr *ip_h;
|
||||
static atomic_t softirq_mitigation_cntr =
|
||||
ATOMIC_INIT(IPA_WLAN_RX_SOFTIRQ_THRESH);
|
||||
int result;
|
||||
|
||||
ip_h = (struct iphdr *)(skb->data);
|
||||
if ((skb->protocol == htons(ETH_P_IP)) &&
|
||||
(ip_h->protocol == IPPROTO_ICMP)) {
|
||||
result = netif_rx_ni(skb);
|
||||
} else {
|
||||
/* Call netif_rx_ni for every IPA_WLAN_RX_SOFTIRQ_THRESH packets
|
||||
* to avoid excessive softirq's.
|
||||
*/
|
||||
if (atomic_dec_and_test(&softirq_mitigation_cntr)) {
|
||||
result = netif_rx_ni(skb);
|
||||
atomic_set(&softirq_mitigation_cntr,
|
||||
IPA_WLAN_RX_SOFTIRQ_THRESH);
|
||||
} else {
|
||||
result = netif_rx(skb);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hdd_ipa_send_skb_to_network() - Send skb to kernel
|
||||
* @skb: network buffer
|
||||
|
|
@ -4089,6 +4125,7 @@ static void hdd_ipa_destroy_rm_resource(struct hdd_ipa_priv *hdd_ipa)
|
|||
static void hdd_ipa_send_skb_to_network(qdf_nbuf_t skb,
|
||||
hdd_adapter_t *adapter)
|
||||
{
|
||||
int result;
|
||||
struct hdd_ipa_priv *hdd_ipa = ghdd_ipa;
|
||||
unsigned int cpu_index;
|
||||
|
||||
|
|
@ -4114,7 +4151,8 @@ static void hdd_ipa_send_skb_to_network(qdf_nbuf_t skb,
|
|||
cpu_index = wlan_hdd_get_cpu();
|
||||
|
||||
++adapter->hdd_stats.hddTxRxStats.rxPackets[cpu_index];
|
||||
if (netif_rx_ni(skb) == NET_RX_SUCCESS)
|
||||
result = hdd_ipa_aggregated_rx_ind(skb);
|
||||
if (result == NET_RX_SUCCESS)
|
||||
++adapter->hdd_stats.hddTxRxStats.rxDelivered[cpu_index];
|
||||
else
|
||||
++adapter->hdd_stats.hddTxRxStats.rxRefused[cpu_index];
|
||||
|
|
|
|||
Loading…
Reference in a new issue