Message ID | 20210128182301.16859-1-rpearson@hpe.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | [for-next] RDMA/rxe: Correct skb on loopback path | expand |
On Thu, Jan 28, 2021 at 12:23:02PM -0600, Bob Pearson wrote: > rxe_net.c sends packets at the IP layer with skb->data > pointing at the IP header but receives packets from > a UDP tunnel with skb->data pointing at the UDP header. > On the loopback path this was not correctly accounted for. > This patch corrects for this by using sbk_pull() to > strip the IP header from the skb on received packets. > > Fixes: 8700e3e7c4857 ("Soft RoCE driver") > Signed-off-by: Bob Pearson <rpearson@hpe.com> > --- > drivers/infiniband/sw/rxe/rxe_net.c | 5 +++++ > 1 file changed, 5 insertions(+) Applied to for-next, thanks Jason
diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c index c4b06ced30a7..0d4125b867b7 100644 --- a/drivers/infiniband/sw/rxe/rxe_net.c +++ b/drivers/infiniband/sw/rxe/rxe_net.c @@ -408,6 +408,11 @@ int rxe_send(struct rxe_pkt_info *pkt, struct sk_buff *skb) void rxe_loopback(struct sk_buff *skb) { + if (skb->protocol == htons(ETH_P_IP)) + skb_pull(skb, sizeof(struct iphdr)); + else + skb_pull(skb, sizeof(struct ipv6hdr)); + rxe_rcv(skb); }
rxe_net.c sends packets at the IP layer with skb->data pointing at the IP header but receives packets from a UDP tunnel with skb->data pointing at the UDP header. On the loopback path this was not correctly accounted for. This patch corrects for this by using sbk_pull() to strip the IP header from the skb on received packets. Fixes: 8700e3e7c4857 ("Soft RoCE driver") Signed-off-by: Bob Pearson <rpearson@hpe.com> --- drivers/infiniband/sw/rxe/rxe_net.c | 5 +++++ 1 file changed, 5 insertions(+)