On 26.05.23 13:49, Wen Gu wrote:
> When finding the first RMB of link group, it should start from the
> current RMB list whose index is 0. So fix it.
>
> Fixes: b4ba4652b3f8 ("net/smc: extend LLC layer for SMC-Rv2")
> Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
> ---
> net/smc/smc_llc.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/net/smc/smc_llc.c b/net/smc/smc_llc.c
> index a0840b8..8423e8e 100644
> --- a/net/smc/smc_llc.c
> +++ b/net/smc/smc_llc.c
> @@ -578,7 +578,10 @@ static struct smc_buf_desc *smc_llc_get_next_rmb(struct smc_link_group *lgr,
> {
> struct smc_buf_desc *buf_next;
>
> - if (!buf_pos || list_is_last(&buf_pos->list, &lgr->rmbs[*buf_lst])) {
> + if (!buf_pos)
> + return _smc_llc_get_next_rmb(lgr, buf_lst);
> +
> + if (list_is_last(&buf_pos->list, &lgr->rmbs[*buf_lst])) {
> (*buf_lst)++;
> return _smc_llc_get_next_rmb(lgr, buf_lst);
> }
It seems too late, but still, why not? :
- if (!buf_pos || list_is_last(&buf_pos->list, &lgr->rmbs[*buf_lst])) {
- (*buf_lst)++;
+ if (list_is_last(&buf_pos->list, &lgr->rmbs[(*buf_lst])++)) {
Thanks,
Wenjia