ID: 307 - Intel I82751 super pass through mode fixup

The patch adds missing check for the Intel i82751 MAC being in the super
pass-through mode, which has known deviations in RMCP+ from the IPMI
specification.
This commit is contained in:
Zdenek Styblik 2014-11-29 17:26:48 +01:00
parent 342f44b9f3
commit f56d740d98

View File

@ -3049,9 +3049,18 @@ ipmi_lanplus_rakp1(struct ipmi_intf * intf)
} }
memcpy(msg + 28, session->username, msg[27]); memcpy(msg + 28, session->username, msg[27]);
v2_payload.payload_type = IPMI_PAYLOAD_TYPE_RAKP_1; v2_payload.payload_type = IPMI_PAYLOAD_TYPE_RAKP_1;
v2_payload.payload_length = if (ipmi_oem_active(intf, "i82571spt")) {
IPMI_RAKP1_MESSAGE_SIZE - (16 - msg[27]); /*
* The IPMI v2.0 spec hints on that all user name bytes
* must be occupied (29:44). The Intel 82571 GbE refuses
* to establish a session if this field is shorter.
*/
v2_payload.payload_length = IPMI_RAKP1_MESSAGE_SIZE;
} else {
v2_payload.payload_length =
IPMI_RAKP1_MESSAGE_SIZE - (16 - msg[27]);
}
v2_payload.payload.rakp_1_message.message = msg; v2_payload.payload.rakp_1_message.message = msg;
rsp = ipmi_lanplus_send_payload(intf, &v2_payload); rsp = ipmi_lanplus_send_payload(intf, &v2_payload);
@ -3417,8 +3426,7 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
goto fail; goto fail;
} }
if (!ipmi_oem_active(intf, "i82571spt") && ! auth_cap.v20_data_available) if (!ipmi_oem_active(intf, "i82571spt") && ! auth_cap.v20_data_available) {
{
lprintf(LOG_INFO, "This BMC does not support IPMI v2 / RMCP+"); lprintf(LOG_INFO, "This BMC does not support IPMI v2 / RMCP+");
goto fail; goto fail;
} }