  }
  
 diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
-index 5c318f7..ac340ae 100644
+index 5c318f7..85ecc88 100644
 --- a/net/netfilter/ipvs/ip_vs_ctl.c
 +++ b/net/netfilter/ipvs/ip_vs_ctl.c
 @@ -52,6 +52,8 @@
  
  #include <net/ip_vs.h>
  
-+EXPORT_SYMBOL(ip_vs_conn_slow_start_dest_handicap);
++EXPORT_SYMBOL_GPL(ip_vs_conn_slow_start_dest_handicap);
 +
  /* semaphore for IPVS sockopts. And, [gs]etsockopt may sleep. */
  static DEFINE_MUTEX(__ip_vs_mutex);
  
-@@ -764,6 +766,22 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
+@@ -764,6 +766,21 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
  {
  	struct netns_ipvs *ipvs = net_ipvs(svc->net);
  	int conn_flags;
 +	int old_weight;
 +
 +	/* set hints for slow start */
-+	dest->flags |= IP_VS_DEST_F_WEIGHT_MASK;
-+	dest->flags ^= IP_VS_DEST_F_WEIGHT_MASK;
++	dest->flags &= ~IP_VS_DEST_F_WEIGHT_MASK;
 +
 +	old_weight = atomic_read(&dest->weight);
 +

+
+	if((dest->flags & IP_VS_DEST_F_WEIGHT_DEC) ||
+			!(dest_w = atomic_read(&dest->weight))) {
+		IP_VS_DBG(1, "slow_start: null\n");
+		atomic_set(&dest->slow_start_data, 0);
+		atomic_set(&dest->slow_start_data2, 0);
+		return;

diff --git a/include/linux/ip_vs.h b/include/linux/ip_vs.h
index 4deb383..3d4e7af 100644
--- a/include/linux/ip_vs.h
+++ b/include/linux/ip_vs.h
@@ -27,6 +27,18 @@
 #define IP_VS_DEST_F_AVAILABLE	0x0001		/* server is available */
 #define IP_VS_DEST_F_OVERLOAD	0x0002		/* server is overloaded */
 
+ /*
+ *      Advisory flags for slow start.
+ *
+ *      The absolute value size of the weight change will be stored
+ *      in dest->slow_start_data.  The flag and slow_start_data may
+ *      be used and modified by the scheduler to effect slow start.
+ */
+#define IP_VS_DEST_F_WEIGHT_INC       0x0004    /* Weight has been increaced */
+#define IP_VS_DEST_F_WEIGHT_DEC       0x0008    /* Weight has been increaced */
+#define IP_VS_DEST_F_WEIGHT_MASK	\
+	(IP_VS_DEST_F_WEIGHT_INC|IP_VS_DEST_F_WEIGHT_DEC)
+
 /*
  *      IPVS sync daemon states
  */
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index de527d1..894ad55 100644
--- a/include/net/ip_vs.h
