diff mbox series

[for-next] RDMA/rxe: Correct skb on loopback path

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

Commit Message

Bob Pearson Jan. 28, 2021, 6:23 p.m. UTC
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(+)

Comments

Jason Gunthorpe Feb. 5, 2021, 5:57 p.m. UTC | #1
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 mbox series

Patch

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);
 }