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:
CNSS_WLAN Service 2017-07-19 20:21:44 -07:00 • committed by Gerrit - the friendly Code Review server
commit 91d5689c2c

View file

@ -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];