From: Corey Minyard <cminyard@mvista.com>
To: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: linux-i2c@vger.kernel.org, Asmaa Mnebhi <asmaa@nvidia.com>,
Corey Minyard <minyard@acm.org>,
openipmi-developer@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND] ipmi: remove open coded version of SMBus block write
Date: Thu, 28 Jan 2021 06:37:57 -0600 [thread overview]
Message-ID: <20210128123757.GW21462@minyard.net> (raw)
In-Reply-To: <20210128085544.7609-1-wsa+renesas@sang-engineering.com>
Looks good, do you want this in the IPMI tree or are you handling this
another way?
Thanks,
-corey
On Thu, Jan 28, 2021 at 09:55:43AM +0100, Wolfram Sang wrote:
> The block-write function of the core was not used because there was no
> client-struct to use. However, in this case it seems apropriate to use a
> temporary client struct. Because we are answering a request we recieved
> when being a client ourselves. So, convert the code to use a temporary
> client and use the block-write function of the I2C core.
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
> Acked-by: Corey Minyard <cminyard@mvista.com>
> ---
>
> No change since V1, Only added tags given in private communication.
>
> drivers/char/ipmi/ipmb_dev_int.c | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmb_dev_int.c b/drivers/char/ipmi/ipmb_dev_int.c
> index 382b28f1cf2f..49b8f22fdcf0 100644
> --- a/drivers/char/ipmi/ipmb_dev_int.c
> +++ b/drivers/char/ipmi/ipmb_dev_int.c
> @@ -137,7 +137,7 @@ static ssize_t ipmb_write(struct file *file, const char __user *buf,
> {
> struct ipmb_dev *ipmb_dev = to_ipmb_dev(file);
> u8 rq_sa, netf_rq_lun, msg_len;
> - union i2c_smbus_data data;
> + struct i2c_client *temp_client;
> u8 msg[MAX_MSG_LEN];
> ssize_t ret;
>
> @@ -160,21 +160,21 @@ static ssize_t ipmb_write(struct file *file, const char __user *buf,
> }
>
> /*
> - * subtract rq_sa and netf_rq_lun from the length of the msg passed to
> - * i2c_smbus_xfer
> + * subtract rq_sa and netf_rq_lun from the length of the msg. Fill the
> + * temporary client. Note that its use is an exception for IPMI.
> */
> msg_len = msg[IPMB_MSG_LEN_IDX] - SMBUS_MSG_HEADER_LENGTH;
> - if (msg_len > I2C_SMBUS_BLOCK_MAX)
> - msg_len = I2C_SMBUS_BLOCK_MAX;
> + temp_client = kmemdup(ipmb_dev->client, sizeof(*temp_client), GFP_KERNEL);
> + if (!temp_client)
> + return -ENOMEM;
> +
> + temp_client->addr = rq_sa;
>
> - data.block[0] = msg_len;
> - memcpy(&data.block[1], msg + SMBUS_MSG_IDX_OFFSET, msg_len);
> - ret = i2c_smbus_xfer(ipmb_dev->client->adapter, rq_sa,
> - ipmb_dev->client->flags,
> - I2C_SMBUS_WRITE, netf_rq_lun,
> - I2C_SMBUS_BLOCK_DATA, &data);
> + ret = i2c_smbus_write_block_data(temp_client, netf_rq_lun, msg_len,
> + msg + SMBUS_MSG_IDX_OFFSET);
> + kfree(temp_client);
>
> - return ret ? : count;
> + return ret < 0 ? ret : count;
> }
>
> static __poll_t ipmb_poll(struct file *file, poll_table *wait)
> --
> 2.28.0
>
next prev parent reply other threads:[~2021-01-28 12:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-28 8:55 [PATCH RESEND] ipmi: remove open coded version of SMBus block write Wolfram Sang
2021-01-28 12:37 ` Corey Minyard [this message]
2021-01-28 12:53 ` Wolfram Sang
2021-01-28 13:15 ` Corey Minyard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210128123757.GW21462@minyard.net \
--to=cminyard@mvista.com \
--cc=asmaa@nvidia.com \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=minyard@acm.org \
--cc=openipmi-developer@lists.sourceforge.net \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.