 +	atomic_set(&dest->slow_start_data2, ss_shift);
 +
 +#ifdef CONFIG_IP_VS_DEBUG
-+	IP_VS_DBG(1, "CONN slow_start_init: server %u.%u.%u.%u:%u "
-+			"handicap=%u (%u) shift=%u ndest=%u\n",
-+			((unsigned char *)&dest->addr)[0],
-+			((unsigned char *)&dest->addr)[1],
-+			((unsigned char *)&dest->addr)[2],
-+			((unsigned char *)&dest->addr)[3],
-+			ntohs(dest->port), ss_handicap,
-+			ss_handicap >> ss_shift, ss_shift, ndest);
++	IP_VS_DBG_BUF(1, "CONN slow_start_init: server %s:%u "
++		"handicap=%u (%u) shift=%u ndest=%u\n",
++		IP_VS_DBG_ADDR(dest->af, &dest->addr),
++		ntohs(dest->port), ss_handicap,
++		ss_handicap >> ss_shift, ss_shift, ndest);
 +#endif
 +}
 +

+	/* Set up slow_start if weight has recently changed */
+	if (unlikely(dest->flags & IP_VS_DEST_F_WEIGHT_MASK)) {
+		__ip_vs_conn_set_slow_start(dest, svc);
+		dest->flags |= IP_VS_DEST_F_WEIGHT_MASK;
+		dest->flags ^= IP_VS_DEST_F_WEIGHT_MASK;
+	}
+
+	handicap = atomic_read(&dest->slow_start_data);

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