qcacld-2.0: Prohibit powersave in downloading FW during SSR
am: 3b57ca8d24
Change-Id: I776595d3d54a98b3fa32cc4043d10b1892dfad57
diff --git a/arch/arm/configs/msmcortex-perf_defconfig b/arch/arm/configs/msmcortex-perf_defconfig
index 30cbd94..fcd27b5 100644
--- a/arch/arm/configs/msmcortex-perf_defconfig
+++ b/arch/arm/configs/msmcortex-perf_defconfig
@@ -348,12 +348,12 @@
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_QPNP_PIN=y
CONFIG_POWER_SUPPLY=y
-# CONFIG_SMB1351_USB_CHARGER is not set
-# CONFIG_SMB135X_CHARGER is not set
+CONFIG_SMB1351_USB_CHARGER=y
+CONFIG_SMB135X_CHARGER=y
CONFIG_QPNP_SMBCHARGER=y
-# CONFIG_QPNP_FG is not set
-# CONFIG_BATTERY_BCL is not set
-# CONFIG_QPNP_LINEAR_CHARGER is not set
+CONFIG_QPNP_FG=y
+CONFIG_BATTERY_BCL=y
+CONFIG_QPNP_LINEAR_CHARGER=y
CONFIG_QPNP_TYPEC=y
CONFIG_MSM_BCL_CTL=y
CONFIG_MSM_BCL_PERIPHERAL_CTL=y
diff --git a/arch/arm/configs/msmcortex_defconfig b/arch/arm/configs/msmcortex_defconfig
index 4ef84c3..47621f9 100644
--- a/arch/arm/configs/msmcortex_defconfig
+++ b/arch/arm/configs/msmcortex_defconfig
@@ -336,12 +336,12 @@
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_QPNP_PIN=y
CONFIG_POWER_SUPPLY=y
-# CONFIG_SMB1351_USB_CHARGER is not set
-# CONFIG_SMB135X_CHARGER is not set
+CONFIG_SMB1351_USB_CHARGER=y
+CONFIG_SMB135X_CHARGER=y
CONFIG_QPNP_SMBCHARGER=y
-# CONFIG_QPNP_FG is not set
-# CONFIG_BATTERY_BCL is not set
-# CONFIG_QPNP_LINEAR_CHARGER is not set
+CONFIG_QPNP_FG=y
+CONFIG_BATTERY_BCL=y
+CONFIG_QPNP_LINEAR_CHARGER=y
CONFIG_QPNP_TYPEC=y
CONFIG_MSM_BCL_CTL=y
CONFIG_MSM_BCL_PERIPHERAL_CTL=y
diff --git a/drivers/staging/qcacld-2.0/CORE/MAC/inc/sirApi.h b/drivers/staging/qcacld-2.0/CORE/MAC/inc/sirApi.h
index 91dfeac..5a319cd 100644
--- a/drivers/staging/qcacld-2.0/CORE/MAC/inc/sirApi.h
+++ b/drivers/staging/qcacld-2.0/CORE/MAC/inc/sirApi.h
@@ -768,7 +768,7 @@
//offset of the ieFields from bssId.
tANI_U16 length;
tSirMacAddr bssId;
- v_TIME_t scansystimensec;
+ tANI_U64 scansystimensec;
tANI_U32 timeStamp[2];
tANI_U16 beaconInterval;
tANI_U16 capabilityInfo;
diff --git a/drivers/staging/qcacld-2.0/CORE/MAC/src/pe/lim/limSerDesUtils.c b/drivers/staging/qcacld-2.0/CORE/MAC/src/pe/lim/limSerDesUtils.c
index 795e42c..752d5fd 100644
--- a/drivers/staging/qcacld-2.0/CORE/MAC/src/pe/lim/limSerDesUtils.c
+++ b/drivers/staging/qcacld-2.0/CORE/MAC/src/pe/lim/limSerDesUtils.c
@@ -127,9 +127,9 @@
// Extract timer
vos_mem_copy( (tANI_U8 *) (&pBssDescription->scansystimensec),
- pBuf, sizeof(v_TIME_t));
- pBuf += sizeof(v_TIME_t);
- len -= sizeof(v_TIME_t);
+ pBuf, sizeof(tANI_U64));
+ pBuf += sizeof(tANI_U64);
+ len -= sizeof(tANI_U64);
if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
return eSIR_FAILURE;
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index cc7f940..8414642 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4647,6 +4647,7 @@
static void tcp_collapse_ofo_queue(struct sock *sk)
{
struct tcp_sock *tp = tcp_sk(sk);
+ u32 range_truesize, sum_tiny = 0;
struct sk_buff *skb = skb_peek(&tp->out_of_order_queue);
struct sk_buff *head;
u32 start, end;
@@ -4656,6 +4657,7 @@
start = TCP_SKB_CB(skb)->seq;
end = TCP_SKB_CB(skb)->end_seq;
+ range_truesize = skb->truesize;
head = skb;
for (;;) {
@@ -4670,14 +4672,24 @@
if (!skb ||
after(TCP_SKB_CB(skb)->seq, end) ||
before(TCP_SKB_CB(skb)->end_seq, start)) {
- tcp_collapse(sk, &tp->out_of_order_queue,
- head, skb, start, end);
+ /* Do not attempt collapsing tiny skbs */
+ if (range_truesize != head->truesize ||
+ end - start >= SKB_WITH_OVERHEAD(SK_MEM_QUANTUM)) {
+ tcp_collapse(sk, &tp->out_of_order_queue,
+ head, skb, start, end);
+ } else {
+ sum_tiny += range_truesize;
+ if (sum_tiny > sk->sk_rcvbuf >> 3)
+ return;
+ }
+
head = skb;
if (!skb)
break;
/* Start new segment */
start = TCP_SKB_CB(skb)->seq;
end = TCP_SKB_CB(skb)->end_seq;
+ range_truesize = skb->truesize;
} else {
if (before(TCP_SKB_CB(skb)->seq, start))
start = TCP_SKB_CB(skb)->seq;
@@ -4733,6 +4745,9 @@
else if (sk_under_memory_pressure(sk))
tp->rcv_ssthresh = min(tp->rcv_ssthresh, 4U * tp->advmss);
+ if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)
+ return 0;
+
tcp_collapse_ofo_queue(sk);
if (!skb_queue_empty(&sk->sk_receive_queue))
tcp_collapse(sk, &sk->sk_receive_queue,