Message ID | 20210729220039.18549-3-rpearsonhpe@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | Three rxe bug fixes | expand |
On Fri, Jul 30, 2021 at 6:01 AM Bob Pearson <rpearsonhpe@gmail.com> wrote: > > An earlier patch removed setting of tot_len in IPV4 headers because it > was also set in ip_local_out. However, this change resulted in an incorrect > ICRC being computed because the tot_len field is not masked out. This > patch restores that line. This fixes the bug reported by Zhu Yanjun. > This bug affects anyone using rxe which is currently broken. > > Fixes: 230bb836ee88 ("RDMA/rxe: Fix redundant call to ip_send_check") > Reported-by: Zhu Yanjun <zyjzyj2000@gmail.com> > Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com> This commit is needed. Without this commit, on some different kernel versions, SoftRoCE can not connect to each other. Thanks a lot. Reviewed-and-tested-by: Zhu Yanjun <zyjzyj2000@gmail.com> Zhu Yanjun > --- > drivers/infiniband/sw/rxe/rxe_net.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c > index 10c13dfebcbc..2cb810cb890a 100644 > --- a/drivers/infiniband/sw/rxe/rxe_net.c > +++ b/drivers/infiniband/sw/rxe/rxe_net.c > @@ -259,6 +259,7 @@ static void prepare_ipv4_hdr(struct dst_entry *dst, struct sk_buff *skb, > > iph->version = IPVERSION; > iph->ihl = sizeof(struct iphdr) >> 2; > + iph->tot_len = htons(skb->len); > iph->frag_off = df; > iph->protocol = proto; > iph->tos = tos; > -- > 2.30.2 >
diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c index 10c13dfebcbc..2cb810cb890a 100644 --- a/drivers/infiniband/sw/rxe/rxe_net.c +++ b/drivers/infiniband/sw/rxe/rxe_net.c @@ -259,6 +259,7 @@ static void prepare_ipv4_hdr(struct dst_entry *dst, struct sk_buff *skb, iph->version = IPVERSION; iph->ihl = sizeof(struct iphdr) >> 2; + iph->tot_len = htons(skb->len); iph->frag_off = df; iph->protocol = proto; iph->tos = tos;
An earlier patch removed setting of tot_len in IPV4 headers because it was also set in ip_local_out. However, this change resulted in an incorrect ICRC being computed because the tot_len field is not masked out. This patch restores that line. This fixes the bug reported by Zhu Yanjun. This bug affects anyone using rxe which is currently broken. Fixes: 230bb836ee88 ("RDMA/rxe: Fix redundant call to ip_send_check") Reported-by: Zhu Yanjun <zyjzyj2000@gmail.com> Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com> --- drivers/infiniband/sw/rxe/rxe_net.c | 1 + 1 file changed, 1 insertion(+)