[PATCH dev-4.4] net/ncsi: Enable request timer before sending command
Joel Stanley
joel at jms.id.au
Mon Aug 8 16:01:05 AEST 2016
On Thu, Aug 4, 2016 at 10:17 AM, Gavin Shan <gwshan at linux.vnet.ibm.com> wrote:
> The response is received upon the sent command before the request's
> timer is enabled under extreme situation. The response packet won't
> be processed as the corresponding request (request packet and timer)
> isn't complete. It leads to NCSI failure - no package detected.
>
> This fixes the issue by enabling the timer before sending the command.
> The comments about the timer has been replaced by that in upstream
> kernel.
>
> Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>
Thanks Gavin. This has been applied to dev-4.4 and pushed out as
openbmc-4.4-20160804-1.
I have pulled in your upstream ncsi patches to dev-4.7, so I don't
need to apply this there.
Cheers,
Joel
> ---
> The issue exists in all branches. 4.7 has the issue at least. I
> suggest applying it to all other branches or 4.7 only.
> ---
> net/ncsi/ncsi-cmd.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/net/ncsi/ncsi-cmd.c b/net/ncsi/ncsi-cmd.c
> index b8503e1..d634a0e 100644
> --- a/net/ncsi/ncsi-cmd.c
> +++ b/net/ncsi/ncsi-cmd.c
> @@ -359,20 +359,19 @@ int ncsi_xmit_cmd(struct ncsi_cmd_arg *nca)
> eh->h_source[i] = 0xff;
> }
>
> + /* Start the timer for the request that might not have
> + * corresponding response. Given NCSI is an internal
> + * connection a 1 second delay should be sufficient.
> + */
> + mod_timer(&nr->nr_timer, jiffies + 1 * HZ);
> + nr->nr_timer_enabled = true;
> +
> /* Send NCSI packet */
> skb_get(nr->nr_cmd);
> ret = dev_queue_xmit(nr->nr_cmd);
> if (ret)
> goto out;
>
> - /* Start the timer for the request that might not have
> - * corresponding response. I'm not sure 1 second delay
> - * here is enough. Anyway, NCSI is internal network, so
> - * the responsiveness should be as fast as enough.
> - */
> - nr->nr_timer_enabled = true;
> - mod_timer(&nr->nr_timer, jiffies + 1 * HZ);
> -
> return 0;
> out:
> ncsi_free_req(nr, false, false);
> --
> 2.1.0
>
More information about the openbmc
mailing list