Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Wed, 9 Aug 2017 23:28:45 +0000 (16:28 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Aug 2017 23:28:45 +0000 (16:28 -0700)
The UDP offload conflict is dealt with by simply taking what is
in net-next where we have removed all of the UFO handling code
entirely.

The TCP conflict was a case of local variables in a function
being removed from both net and net-next.

In netvsc we had an assignment right next to where a missing
set of u64 stats sync object inits were added.

Signed-off-by: David S. Miller <davem@davemloft.net>
18 files changed:
1  2 
MAINTAINERS
drivers/net/dsa/mt7530.c
drivers/net/ethernet/ibm/ibmvnic.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/netronome/nfp/nfp_net_common.c
drivers/net/ethernet/qlogic/qed/qed_mcp.c
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/rndis_filter.c
drivers/net/ipvlan/ipvlan_main.c
drivers/net/vxlan.c
include/net/tcp.h
net/core/dev.c
net/ipv4/tcp_input.c
net/ipv4/tcp_output.c
net/ipv4/tcp_timer.c
net/ipv6/route.c
tools/testing/selftests/bpf/test_verifier.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
index 208f03aa83de380facc7075c314e920bfb266f05,d18c3326a1f782b403de4a10ef057196beb3aaa5..bffaf93d3cb06def2e544714c000230f1272dbdd
@@@ -1267,7 -1303,8 +1268,9 @@@ struct netvsc_device *netvsc_device_add
                struct netvsc_channel *nvchan = &net_device->chan_table[i];
  
                nvchan->channel = device->channel;
 +              nvchan->net_device = net_device;
+               u64_stats_init(&nvchan->tx_stats.syncp);
+               u64_stats_init(&nvchan->rx_stats.syncp);
        }
  
        /* Enable NAPI handler before init callbacks */
index 44165fe328a498f970ebf26eeb2eb083cf5c7547,d6308ffda53ec797acf5f9e6038bf0a230008b55..36e9ee82ec6f4caba81598b0f59415a91439b9fa
@@@ -1050,12 -1048,12 +1050,12 @@@ static void netvsc_sc_open(struct vmbus
        else
                netif_napi_del(&nvchan->napi);
  
-       if (refcount_dec_and_test(&nvscdev->sc_offered))
-               complete(&nvscdev->channel_init_wait);
+       atomic_inc(&nvscdev->open_chn);
+       wake_up(&nvscdev->subchan_open);
  }
  
 -int rndis_filter_device_add(struct hv_device *dev,
 -                          struct netvsc_device_info *device_info)
 +struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
 +                                    struct netvsc_device_info *device_info)
  {
        struct net_device *net = hv_get_drvdata(dev);
        struct net_device_context *net_device_ctx = netdev_priv(net);
                rndis_device->ind_table[i] = ethtool_rxfh_indir_default(i,
                                                        net_device->num_chn);
  
+       atomic_set(&net_device->open_chn, 1);
        num_rss_qs = net_device->num_chn - 1;
        if (num_rss_qs == 0)
 -              return 0;
 +              return net_device;
 +
 +      for (i = 1; i < net_device->num_chn; i++) {
 +              ret = netvsc_alloc_recv_comp_ring(net_device, i);
 +              if (ret) {
 +                      while (--i != 0)
 +                              vfree(net_device->chan_table[i].mrc.slots);
 +                      goto out;
 +              }
 +      }
  
-       refcount_set(&net_device->sc_offered, num_rss_qs);
        vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
  
        init_packet = &net_device->channel_init_pkt;
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
index d49bff51bdb7e4cfa03f8c846dd981e413e2a113,b7661a68d4984c485a4853441d21abe8da9e325a..3e0d19631534f3eec800330d939448b50e095b1f
@@@ -2375,13 -2377,9 +2375,8 @@@ bool tcp_schedule_loss_probe(struct soc
  {
        struct inet_connection_sock *icsk = inet_csk(sk);
        struct tcp_sock *tp = tcp_sk(sk);
-       u32 timeout, tlp_time_stamp, rto_time_stamp;
 -      u32 rtt = usecs_to_jiffies(tp->srtt_us >> 3);
+       u32 timeout, rto_delta_us;
  
-       /* No consecutive loss probes. */
-       if (WARN_ON(icsk->icsk_pending == ICSK_TIME_LOSS_PROBE)) {
-               tcp_rearm_rto(sk);
-               return false;
-       }
        /* Don't do any loss probe on a Fast Open connection before 3WHS
         * finishes.
         */
         * for delayed ack when there's one outstanding packet. If no RTT
         * sample is available then probe after TCP_TIMEOUT_INIT.
         */
 -      timeout = rtt << 1 ? : TCP_TIMEOUT_INIT;
 -      if (tp->packets_out == 1)
 -              timeout = max_t(u32, timeout,
 -                              (rtt + (rtt >> 1) + TCP_DELACK_MAX));
 -      timeout = max_t(u32, timeout, msecs_to_jiffies(10));
 +      if (tp->srtt_us) {
 +              timeout = usecs_to_jiffies(tp->srtt_us >> 2);
 +              if (tp->packets_out == 1)
 +                      timeout += TCP_RTO_MIN;
 +              else
 +                      timeout += TCP_TIMEOUT_MIN;
 +      } else {
 +              timeout = TCP_TIMEOUT_INIT;
 +      }
  
-       /* If RTO is shorter, just schedule TLP in its place. */
-       tlp_time_stamp = tcp_jiffies32 + timeout;
-       rto_time_stamp = (u32)inet_csk(sk)->icsk_timeout;
-       if ((s32)(tlp_time_stamp - rto_time_stamp) > 0) {
-               s32 delta = rto_time_stamp - tcp_jiffies32;
-               if (delta > 0)
-                       timeout = delta;
-       }
+       /* If the RTO formula yields an earlier time, then use that time. */
+       rto_delta_us = tcp_rto_delta_us(sk);  /* How far in future is RTO? */
+       if (rto_delta_us > 0)
+               timeout = min_t(u32, timeout, usecs_to_jiffies(rto_delta_us));
  
        inet_csk_reset_xmit_timer(sk, ICSK_TIME_LOSS_PROBE, timeout,
                                  TCP_RTO_MAX);
Simple merge
Simple merge