[PATCH] ipmi: update ssif max_xmit_msg_size limit for multi-part messages

From: Kamlakant Patel
Date: Thu Jul 05 2018 - 06:01:20 EST


There is an issue with Host name Write command with payload size of 132 bytes.
Currently ipmi driver limits max_xmit_msg_size to 63 bytes. Due to this
all IPMI commands with request size more than 63 bytes will not work.
This is seen with AMI OEM Host Name write command: payload 132 bytes.
When a DNS host name set is tried from host through SSIF interface, the name
gets truncated due to ipmi_ssif driver limiting the length to 63 bytes

As per IPMI Spec v2.0 section 12.3:
The maximum message size returned by the Get SSIF Interface Capabilities command
is 255 bytes.

This patch updates the max_xmit_msg_size to 255 in case SSIF_MULTI_n_PART.

Signee-off-by: Kamlakant Patel <kamlakant.patel@xxxxxxxxxx>
---
drivers/char/ipmi/ipmi_ssif.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 18e4650..2bf6f07 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -88,6 +88,8 @@
#define SSIF_MSG_JIFFIES ((SSIF_MSG_USEC * 1000) / TICK_NSEC)
#define SSIF_MSG_PART_JIFFIES ((SSIF_MSG_PART_USEC * 1000) / TICK_NSEC)

+#define SSIF_MAX_MSG_LENGTH 255
+
enum ssif_intf_state {
SSIF_NORMAL,
SSIF_GETTING_FLAGS,
@@ -1500,8 +1502,8 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)
* to be 1-31 bytes in length. Not ideal, but
* it should work.
*/
- if (ssif_info->max_xmit_msg_size > 63)
- ssif_info->max_xmit_msg_size = 63;
+ if (ssif_info->max_xmit_msg_size > SSIF_MAX_MSG_LENGTH)
+ ssif_info->max_xmit_msg_size = SSIF_MAX_MSG_LENGTH;
break;

default:
--
2.7.4