From: aestrin Date: Thu, 29 Jan 2009 19:49:18 +0000 (+0000) Subject: [ipoib cm] added cm payload mtu configurable parameter. X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=814f8c04c03722e8d0dca3359e7631e14285f728;p=~shefty%2Frdma-win.git [ipoib cm] added cm payload mtu configurable parameter. git-svn-id: svn://openib.tc.cornell.edu/gen1@1919 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/ipoib_cm/kernel/ipoib_driver.c b/branches/ipoib_cm/kernel/ipoib_driver.c index 805eb247..80d854cb 100644 --- a/branches/ipoib_cm/kernel/ipoib_driver.c +++ b/branches/ipoib_cm/kernel/ipoib_driver.c @@ -160,11 +160,12 @@ IPOIB_REG_ENTRY HCARegTable[] = { {NDIS_STRING_CONST("SaTimeout"), 1, IPOIB_OFFSET(sa_timeout), IPOIB_SIZE(sa_timeout), 1000, 250, UINT_MAX}, {NDIS_STRING_CONST("SaRetries"), 1, IPOIB_OFFSET(sa_retry_cnt), IPOIB_SIZE(sa_retry_cnt), 10, 1, UINT_MAX}, {NDIS_STRING_CONST("RecvRatio"), 1, IPOIB_OFFSET(recv_pool_ratio), IPOIB_SIZE(recv_pool_ratio), 1, 1, 10}, - {NDIS_STRING_CONST("PayloadMtu"), 1, IPOIB_OFFSET(payload_mtu), IPOIB_SIZE(payload_mtu), 2044, 512, MAX_CM_PAYLOAD_MTU}, + {NDIS_STRING_CONST("PayloadMtu"), 1, IPOIB_OFFSET(payload_mtu), IPOIB_SIZE(payload_mtu), 2044, 512, MAX_UD_PAYLOAD_MTU}, {NDIS_STRING_CONST("lso"), 0, IPOIB_OFFSET(lso), IPOIB_SIZE(lso), 0, 0, 1}, {NDIS_STRING_CONST("MCLeaveRescan"), 1, IPOIB_OFFSET(mc_leave_rescan), IPOIB_SIZE(mc_leave_rescan), 260, 1, 3600}, {NDIS_STRING_CONST("BCJoinRetry"), 1, IPOIB_OFFSET(bc_join_retry), IPOIB_SIZE(bc_join_retry), 50, 0, 1000}, - {NDIS_STRING_CONST("CmEnabled"), 0, IPOIB_OFFSET(cm_enabled), IPOIB_SIZE(cm_enabled), FALSE, FALSE, TRUE} + {NDIS_STRING_CONST("CmEnabled"), 0, IPOIB_OFFSET(cm_enabled), IPOIB_SIZE(cm_enabled), FALSE, FALSE, TRUE}, + {NDIS_STRING_CONST("CmPayloadMtu"), 1, IPOIB_OFFSET(cm_payload_mtu), IPOIB_SIZE(cm_payload_mtu), MAX_CM_PAYLOAD_MTU, 512, MAX_CM_PAYLOAD_MTU} }; @@ -614,17 +615,17 @@ ipoib_get_adapter_params( EVENT_IPOIB_CONNECTED_MODE_ERR, 1, 0xbadc0de0 ); } } - /* adjust ud mtu upper limit if cm is disabled */ - if( !p_adapter->params.cm_enabled ) + + if( p_adapter->params.cm_enabled ) { - p_adapter->params.payload_mtu = - min( MAX_UD_PAYLOAD_MTU, p_adapter->params.payload_mtu ); - p_adapter->params.xfer_block_size = - (sizeof(eth_hdr_t) + p_adapter->params.payload_mtu); + p_adapter->params.cm_xfer_block_size = + (sizeof(eth_hdr_t) + p_adapter->params.cm_payload_mtu); } - NdisReadNetworkAddress( &status, p_mac, p_len, h_config ); + p_adapter->params.xfer_block_size = + (sizeof(eth_hdr_t) + p_adapter->params.payload_mtu); + NdisReadNetworkAddress( &status, p_mac, p_len, h_config ); NdisCloseConfiguration( h_config ); diff --git a/branches/ipoib_cm/kernel/ipoib_port.c b/branches/ipoib_cm/kernel/ipoib_port.c index 4e3bba24..e5895ca9 100644 --- a/branches/ipoib_cm/kernel/ipoib_port.c +++ b/branches/ipoib_cm/kernel/ipoib_port.c @@ -899,18 +899,12 @@ __ib_mgr_init( if( p_port->p_adapter->params.cm_enabled ) { - uint32_t ud_payload_mtu = __port_attr_to_mtu_size( - p_port->p_ca_attrs->p_port_attr[p_port->port_num - 1].mtu ); - /* setup CM payload mtu */ - p_port->p_adapter->params.cm_payload_mtu = - min( MAX_CM_PAYLOAD_MTU, p_port->p_adapter->params.payload_mtu ); - p_port->p_adapter->params.cm_xfer_block_size = - p_port->p_adapter->params.cm_payload_mtu + sizeof(eth_hdr_t); - + uint32_t payload_mtu = __port_attr_to_mtu_size( + p_port->p_ca_attrs->p_port_attr[p_port->port_num - 1].mtu ) + - sizeof(ipoib_hdr_t); /* adjust ipoib UD payload MTU to actual port MTU size. */ - /* TODO: should initialization fail if port mtu < 2048 ? */ p_port->p_adapter->params.payload_mtu = - ( max( DEFAULT_MTU, ud_payload_mtu ) - sizeof(ipoib_hdr_t) ); + max( DEFAULT_PAYLOAD_MTU, payload_mtu ); p_port->p_adapter->params.xfer_block_size = (sizeof(eth_hdr_t) + p_port->p_adapter->params.payload_mtu); } @@ -919,14 +913,19 @@ __ib_mgr_init( if ( !p_port->p_adapter->reset ) { ULONG max_phys_mapping; - - max_phys_mapping = p_port->p_adapter->params.cm_enabled ? - p_port->p_adapter->params.cm_xfer_block_size : - p_port->p_adapter->params.xfer_block_size; - max_phys_mapping = p_port->p_adapter->params.lso ? - max(LARGE_SEND_OFFLOAD_SIZE, max_phys_mapping): max_phys_mapping; - status = - NdisMInitializeScatterGatherDma( + if( p_port->p_adapter->params.cm_enabled ) + { + max_phys_mapping = p_port->p_adapter->params.cm_xfer_block_size; + } + else if( p_port->p_adapter->params.lso ) + { + max_phys_mapping = LARGE_SEND_OFFLOAD_SIZE; + } + else + { + max_phys_mapping = p_port->p_adapter->params.xfer_block_size; + } + status = NdisMInitializeScatterGatherDma( p_port->p_adapter->h_adapter, TRUE, max_phys_mapping ); if( status != NDIS_STATUS_SUCCESS ) { diff --git a/branches/ipoib_cm/kernel/netipoib-xp32.inf b/branches/ipoib_cm/kernel/netipoib-xp32.inf index 9abf1276..89e008cc 100644 --- a/branches/ipoib_cm/kernel/netipoib-xp32.inf +++ b/branches/ipoib_cm/kernel/netipoib-xp32.inf @@ -138,7 +138,7 @@ HKR, Ndi\Params\PayloadMtu, ParamDesc, 0, %MTU_STR% HKR, Ndi\Params\PayloadMtu, Type, 0, "dword" HKR, Ndi\Params\PayloadMtu, Default, 0, "2044" HKR, Ndi\Params\PayloadMtu, Min, 0, "512" -HKR, Ndi\Params\PayloadMtu, Max, 0, "65520" +HKR, Ndi\Params\PayloadMtu, Max, 0, "4092" HKR, Ndi\Params\MCLeaveRescan, ParamDesc, 0, %MC_RESCAN_STR% HKR, Ndi\Params\MCLeaveRescan, Type, 0, "dword" @@ -168,6 +168,12 @@ HKR, Ndi\Params\CmEnabled, Optional, 0, "0" HKR, Ndi\Params\CmEnabled\enum, "0", 0, %DISABLED_STR% HKR, Ndi\Params\CmEnabled\enum, "1", 0, %ENABLED_STR% +HKR, Ndi\Params\CmPayloadMtu, ParamDesc, 0, %CONNECTED_MODE_MTU_STR% +HKR, Ndi\Params\CmPayloadMtu, Type, 0, "dword" +HKR, Ndi\Params\CmPayloadMtu, Default, 0, "65520" +HKR, Ndi\Params\CmPayloadMtu, Min, 0, "512" +HKR, Ndi\Params\CmPayloadMtu, Max, 0, "65520" + [IpoibService] DisplayName = %IpoibServiceDispName% ServiceType = 1 ;%SERVICE_KERNEL_DRIVER% @@ -269,3 +275,5 @@ ENABLED_STR = "Enabled" DISABLED_STR = "Disabled" BYPASS_STR = "Bypass" CONNECTED_MODE_STR = "Connected mode" +CONNECTED_MODE_MTU_STR = "Connected Mode Payload Mtu size" + diff --git a/branches/ipoib_cm/kernel/netipoib.inx b/branches/ipoib_cm/kernel/netipoib.inx index 52caeb5a..20895a33 100644 --- a/branches/ipoib_cm/kernel/netipoib.inx +++ b/branches/ipoib_cm/kernel/netipoib.inx @@ -141,7 +141,7 @@ HKR, Ndi\Params\PayloadMtu, ParamDesc, 0, %MTU_STR% HKR, Ndi\Params\PayloadMtu, Type, 0, "dword" HKR, Ndi\Params\PayloadMtu, Default, 0, "2044" HKR, Ndi\Params\PayloadMtu, Min, 0, "512" -HKR, Ndi\Params\PayloadMtu, Max, 0, "65520" +HKR, Ndi\Params\PayloadMtu, Max, 0, "4092" HKR, Ndi\Params\MCLeaveRescan, ParamDesc, 0, %MC_RESCAN_STR% HKR, Ndi\Params\MCLeaveRescan, Type, 0, "dword" @@ -171,6 +171,12 @@ HKR, Ndi\Params\CmEnabled, Optional, 0, "0" HKR, Ndi\Params\CmEnabled\enum, "0", 0, %DISABLED_STR% HKR, Ndi\Params\CmEnabled\enum, "1", 0, %ENABLED_STR% +HKR, Ndi\Params\CmPayloadMtu, ParamDesc, 0, %CONNECTED_MODE_MTU_STR% +HKR, Ndi\Params\CmPayloadMtu, Type, 0, "dword" +HKR, Ndi\Params\CmPayloadMtu, Default, 0, "65520" +HKR, Ndi\Params\CmPayloadMtu, Min, 0, "512" +HKR, Ndi\Params\CmPayloadMtu, Max, 0, "65520" + [IpoibService] DisplayName = %IpoibServiceDispName% ServiceType = 1 ;%SERVICE_KERNEL_DRIVER% @@ -275,4 +281,5 @@ ENABLED_IF_STR = "Enabled (if supported by HW)" ENABLED_STR = "Enabled" DISABLED_STR = "Disabled" BYPASS_STR = "Bypass" -CONNECTED_MODE_STR = "Connected mode" \ No newline at end of file +CONNECTED_MODE_STR = "Connected mode" +CONNECTED_MODE_MTU_STR = "Connected Mode Payload Mtu size" \ No newline at end of file