p_adapter->params.rq_low_watermark =\r
p_adapter->params.rq_depth / p_adapter->params.rq_low_watermark;\r
\r
- /* disable CM if LSO active because LSO uses UD transport only */\r
+ /* disable CM if LSO is active */\r
if( p_adapter->params.cm_enabled )\r
{\r
p_adapter->params.cm_enabled = !p_adapter->params.lso;\r
case OID_GEN_MAXIMUM_FRAME_SIZE:\r
IPOIB_PRINT( TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,\r
("Port %d received query for OID_GEN_MAXIMUM_FRAME_SIZE\n", port_num) );\r
+ if( p_adapter->params.cm_enabled )\r
+ info = p_adapter->params.cm_payload_mtu;\r
+ else\r
info = p_adapter->params.payload_mtu;\r
- break;\r
+ break;\r
\r
case OID_GEN_LINK_SPEED:\r
IPOIB_PRINT( TRACE_LEVEL_VERBOSE,IPOIB_DBG_OID,\r
#define DATA_OFFSET (sizeof(eth_hdr_t) - sizeof(ipoib_hdr_t))\r
\r
//#define IPOIB_CM_FLAG_RC (0x01) // RC flag\r
-//#define IPOIB_CM_FLAG_SVCID (0x01) // IETF bit\r
+//#define IPOIB_CM_FLAG_SVCID (0x01) // IETF bit\r
#define IPOIB_CM_FLAG_RC (0x80) //OFED set RC flag this way\r
#define IPOIB_CM_FLAG_SVCID (0x10) // OFED set IETF bit this way ( open OFED PR 1121 )\r
\r
-/* Max send data segment list size. Segments are PAGE_SIZE each */\r
-/* + 2 to roundup( since fisrt and last segments could be partial pages )\r
- + 1 reserved for ipoib header, add another 2 for IP and TCP headers */\r
-#define MAX_SEND_SGE (( MAX_CM_PAYLOAD_MTU >> PAGE_SHIFT ) + 5)\r
+#define MAX_SEND_SGE (30)\r
\r
/* Amount of physical memory to register. */\r
#define MEM_REG_SIZE 0xFFFFFFFFFFFFFFFF\r
ipoib_cm_desc_t *p_desc;\r
ipoib_port_t* p_port;\r
\r
- UNUSED_PARAM( context );\r
+ if( p_pool_item == NULL || context == NULL )\r
+ return;\r
+ \r
p_port = (ipoib_port_t*)context;\r
p_desc = PARENT_STRUCT( p_pool_item, ipoib_cm_desc_t, item );\r
\r
IPOIB_PRINT_EXIT( TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,\r
("ipoib_port_srq_init failed %s\n",\r
p_port->p_adapter->p_ifc->get_err_str( status )) );\r
- // disable further CM initialization \r
+ /* disable further CM initialization */\r
p_port->p_adapter->params.cm_enabled = FALSE;\r
\r
NdisWriteErrorLogEntry( p_port->p_adapter->h_adapter,\r
NdisWriteErrorLogEntry( p_port->p_adapter->h_adapter,\r
EVENT_IPOIB_CONNECTED_MODE_ERR, 1, 0xbadc0de2 );\r
}\r
+ else \r
+ {\r
+ /* now we can adjust csum capabilities */\r
+ p_port->p_adapter->params.send_chksum_offload = CSUM_DISABLED;\r
+ p_port->p_adapter->params.recv_chksum_offload = CSUM_BYPASS;\r
+ }\r
}\r
IPOIB_EXIT( IPOIB_DBG_INIT );\r
return IB_SUCCESS;\r
}\r
\r
/* Remember that one of the DS entries is reserved for the IPoIB header. */\r
- if( ( p_sgl->NumberOfElements >= MAX_SEND_SGE ||\r
+ if( ( p_sgl->NumberOfElements > MAX_SEND_SGE ||\r
p_sgl->Elements[0].Length < sizeof(eth_hdr_t)) )\r
{\r
\r
if( p_port->p_adapter->params.cm_enabled )\r
{\r
IPOIB_PRINT_EXIT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT,\r
- (" %s SEND to ENDPT[%p] State: %d flag: %#x, QPN: %#x MAC %02x:%02x:%02x:%02x:%02x:%02x\n",\r
- (( p_arp->op == ARP_OP_REQ )? "ARP REQUEST" : "ARP REPLY" ),\r
+ (" ARP %s SEND to ENDPT[%p] State: %d flag: %#x, QPN: %#x MAC %02x:%02x:%02x:%02x:%02x:%02x\n",\r
+ (( p_arp->op == ARP_OP_REQ )? "REQUEST" : "REPLY" ),\r
p_desc->p_endpt, \r
endpt_cm_get_state( p_desc->p_endpt ),\r
p_desc->p_endpt->cm_flag, \r