From 2c12b80a4fdb8323ff3fdd194ff1994ad0a0b8e1 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 23 Oct 2010 15:45:36 -0400 Subject: [PATCH] Windows: Make Rx PMTU discovery configurable; disable by default Disable PMTU discovery by default. Permit it to be enabled with the RxPMTUDiscovery TransarcAFSDaemon\Parameter value. LICENSE MIT Change-Id: I0529a77e288ba8cd6cf8d0c2e2e9c0c8e6e0f6ff Reviewed-on: http://gerrit.openafs.org/3032 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsd/afsd_init.c | 5 +++++ src/WINNT/afsd/cm_conn.c | 5 ++++- src/WINNT/afsd/cm_conn.h | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/WINNT/afsd/afsd_init.c b/src/WINNT/afsd/afsd_init.c index 80d391401..d7e7c2172 100644 --- a/src/WINNT/afsd/afsd_init.c +++ b/src/WINNT/afsd/afsd_init.c @@ -1061,6 +1061,11 @@ afsd_InitCM(char **reasonP) rx_SetMinPeerTimeout(rx_min_peer_timeout); afsi_log("Rx Minimum Peer Timeout is %d ms", rx_GetMinPeerTimeout()); + dummyLen = sizeof(rx_pmtu_discovery); + code = RegQueryValueEx(parmKey, "RxPMTUDiscovery", NULL, NULL, + (BYTE *) &rx_pmtu_discovery, &dummyLen); + afsi_log("Rx PMTU Discovery is %d ms", rx_pmtu_discovery); + dummyLen = sizeof(rx_nojumbo); code = RegQueryValueEx(parmKey, "RxNoJumbo", NULL, NULL, (BYTE *) &rx_nojumbo, &dummyLen); diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index 8c060a801..0f644fcde 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -35,6 +35,7 @@ unsigned short NatPingInterval = CM_CONN_NATPINGINTERVAL; afs_uint32 cryptall = 0; afs_uint32 cm_anonvldb = 0; +afs_uint32 rx_pmtu_discovery = 0; void cm_PutConn(cm_conn_t *connp) { @@ -1189,7 +1190,9 @@ static void cm_NewRXConnection(cm_conn_t *tcp, cm_ucell_t *ucellp, * Let the Rx library know that we can auto-retry if an * RX_MSGSIZE error is returned. */ - rx_SetMsgsizeRetryErr(tcp->rxconnp, RX_MSGSIZE); + if (rx_pmtu_discovery) + rx_SetMsgsizeRetryErr(tcp->rxconnp, RX_MSGSIZE); + /* * Attempt to limit NAT pings to the anonymous file server connections. * Only file servers implement client callbacks and we only need one ping diff --git a/src/WINNT/afsd/cm_conn.h b/src/WINNT/afsd/cm_conn.h index 54b5e9a28..c138b692d 100644 --- a/src/WINNT/afsd/cm_conn.h +++ b/src/WINNT/afsd/cm_conn.h @@ -27,6 +27,7 @@ extern unsigned short ConnDeadtimeout; extern unsigned short HardDeadtimeout; extern DWORD RDRtimeout; +extern afs_uint32 rx_pmtu_discovery; typedef struct cm_conn { struct cm_conn *nextp; /* locked by cm_connLock */ -- 2.39.5