ID:401 - Fixed 30 second delay when activating SOL on 'dumb' Intel MACs.

Boards equipped with 'dumb' Intel MAC can do only SOL. IPMITool performs
several autodetection requests before initiating SOL, which are not
recognized by the boards. With each request retried 5 times it takes
about 30 seconds to establish SOL. This patch resolves the problem.
This commit is contained in:
Dmitry Bazhenov 2015-11-04 11:24:21 +05:00 committed by Zdenek Styblik
parent c9e3e6a01b
commit 37307c93e9
2 changed files with 21 additions and 14 deletions

View File

@ -952,9 +952,11 @@ ipmi_main(int argc, char ** argv,
goto out_free; goto out_free;
} }
} }
if (!ipmi_oem_active(ipmi_main_intf, "i82571spt")) {
/* /*
* Attempt picmg/vita discovery of the actual interface address unless * Attempt picmg/vita discovery of the actual interface
* the users specified an address. * address, unless the users specified an address.
* Address specification always overrides discovery * Address specification always overrides discovery
*/ */
if (picmg_discover(ipmi_main_intf)) { if (picmg_discover(ipmi_main_intf)) {
@ -962,10 +964,11 @@ ipmi_main(int argc, char ** argv,
} else if (vita_discover(ipmi_main_intf)) { } else if (vita_discover(ipmi_main_intf)) {
ipmi_main_intf->vita_avail = 1; ipmi_main_intf->vita_avail = 1;
} }
}
if (arg_addr) { if (arg_addr) {
addr = arg_addr; addr = arg_addr;
} else { } else if (!ipmi_oem_active(ipmi_main_intf, "i82571spt")) {
lprintf(LOG_DEBUG, "Acquire IPMB address"); lprintf(LOG_DEBUG, "Acquire IPMB address");
addr = ipmi_acquire_ipmb_address(ipmi_main_intf); addr = ipmi_acquire_ipmb_address(ipmi_main_intf);
lprintf(LOG_INFO, "Discovered IPMB address 0x%x", addr); lprintf(LOG_INFO, "Discovered IPMB address 0x%x", addr);

View File

@ -3471,13 +3471,17 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
if (rc < 0) { if (rc < 0) {
goto fail; goto fail;
} }
}
intf->manufacturer_id = ipmi_get_oem(intf);
/* automatically detect interface request and response sizes */ /* automatically detect interface request and response sizes */
hpm2_detect_max_payload_size(intf); hpm2_detect_max_payload_size(intf);
}
bridgePossible = 1; bridgePossible = 1;
if (!ipmi_oem_active(intf, "i82571spt")) {
intf->manufacturer_id = ipmi_get_oem(intf);
}
return intf->fd; return intf->fd;
fail: fail: