[9610] wlbt: remove tcp_get_info call
authorDebabrata Purohit <d.purohit@samsung.com>
Tue, 19 Jun 2018 15:31:30 +0000 (16:31 +0100)
committerhskang <hs1218.kang@samsung.com>
Fri, 17 Aug 2018 00:32:49 +0000 (20:32 -0400)
Remove call to tcp_get_info(). It is called in
software IRQ context and as it may sleep
in kernels later than 4.9 it can cause deadlock.

Change-Id: I7ab1bcae50e98a374caae743bc90a5993028ae25
SCSC-Bug-Id: SSB-41049
Signed-off-by: Debabrata Purohit <d.purohit@samsung.com>
drivers/net/wireless/scsc/dev.h
drivers/net/wireless/scsc/netif.c

index e1bc723ad7ffed699f182ed4c432341e32bc9dd5..d7fc7a2256fbb535b4b6fa4a73b0ab53bf4b7409 100755 (executable)
@@ -598,9 +598,8 @@ struct slsi_tcp_ack_s {
        u32             last_ack_seq;
        u64             num_bytes;
 
-       /* TCP socket information */
+       /* corresponding socket to get stats (e.g. congestion window) */
        struct sock *tcp_sk;
-       struct tcp_info tcp_sock_info;
 
 #ifdef CONFIG_SCSC_WLAN_HIP4_PROFILING
        u8 stream_id;
index d3797ad419b1646743a65da1cfd4deecf342f578..e3f4527533c5b3380474dcdff0a19d7331c46a32 100755 (executable)
@@ -1745,11 +1745,6 @@ static struct sk_buff *slsi_netif_tcp_ack_suppression_pkt(struct net_device *dev
                ndev_vif->last_tcp_ack = tcp_ack;
        }
 
-#if 0
-       /* TCP socket diagnostics */
-       if (tcp_ack->tcp_sk)
-               tcp_get_info(tcp_ack->tcp_sk, &tcp_ack->tcp_sock_info);
-#endif
        /* If it is a DUP Ack, send straight away without flushing the cache. */
        if (be32_to_cpu(tcp_hdr(skb)->ack_seq) < tcp_ack->ack_seq) {
                /* check for wrap-around */
@@ -1764,7 +1759,7 @@ static struct sk_buff *slsi_netif_tcp_ack_suppression_pkt(struct net_device *dev
        /* Has data, forward straight away. */
        if (be16_to_cpu(ip_hdr(skb)->tot_len) > ((ip_hdr(skb)->ihl * 4) + (tcp_hdr(skb)->doff * 4))) {
                SCSC_HIP4_SAMPLER_TCP_DATA(ndev_vif->sdev->minor_prof, tcp_ack->stream_id, be32_to_cpu(tcp_hdr(skb)->seq));
-               /* SCSC_HIP4_SAMPLER_TCP_CWND(ndev_vif->sdev->minor_prof, tcp_ack->stream_id, tcp_ack->tcp_sock_info.tcpi_snd_cwnd); */
+               SCSC_HIP4_SAMPLER_TCP_CWND(ndev_vif->sdev->minor_prof, tcp_ack->stream_id, tcp_ack->tcp_sk ? tcp_sk(tcp_ack->tcp_sk)->snd_cwnd : 0);
                SCSC_HIP4_SAMPLER_TCP_SEND_BUF(ndev_vif->sdev->minor_prof, tcp_ack->stream_id, sysctl_tcp_wmem[2]);
                ndev_vif->tcp_ack_stats.tack_hasdata++;
                forward_now = 1;