Index: /branches/rel_apv_10_4_2_104_webagent_dns/usr/src/sys/click/app/fastslb/fastslb_tcp.c
===================================================================
--- /branches/rel_apv_10_4_2_104_webagent_dns/usr/src/sys/click/app/fastslb/fastslb_tcp.c	(revision 38503)
+++ /branches/rel_apv_10_4_2_104_webagent_dns/usr/src/sys/click/app/fastslb/fastslb_tcp.c	(working copy)
@@ -424,7 +424,7 @@
 static void
 fasttcp_update_mss(struct fasttcp_tuples *tuples, struct mbuf *m, int flags)
 {
-    uint16_t orig_mss, new_mss;
+    uint16_t orig_mss, new_mss = htons(FASTTCP_AN_MSS);
     u_char *cp = NULL;
     int cnt = 0;
     int off;
@@ -463,7 +463,11 @@
             orig_mss = *(uint16_t *)(((char *)cp) + 2);
             if(orig_mss >=  htons(FASTTCP_AN_LOOPBACK_MSS)) {
                 /* this packet is from loopback change its mss to 1460 */
-                new_mss = htons(FASTTCP_AN_MSS);
+                slb_vs_t *vs_p;
+                vs_p = fasttcp_is_slb(tuples);
+                if (vs_p != NULL && htons(vs_p->vs_mss) > 0) {
+                    new_mss = htons(vs_p->vs_mss);
+                }
                 bcopy((char *)&new_mss, (char *)cp + 2, 2);
                 if (fasttcp_debug) printf("fasttcp_update_mss: orig mss %hu, new mss %hu\n", orig_mss, new_mss);
             }           
