]> www.infradead.org Git - users/jedix/linux-maple.git/commit
IB/IPoIB: Add destination address when re-queue packet
authorYuval Shaia <yuval.shaia@oracle.com>
Sat, 11 Feb 2017 22:22:48 +0000 (17:22 -0500)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 27 Feb 2017 01:10:09 +0000 (17:10 -0800)
commit0f906de9ab8ee259cfb21660a9d06659414e30a4
treea4f4b8453d4679c197f93e03124cbdb44761f7cb
parent17271787448fec1013e5957ed341aaab0e87c43d
IB/IPoIB: Add destination address when re-queue packet

Orabug: 25466606

[ Pulled from upstream discussion, not yet merged ]

When sending packet to destination that was not resolved yet
via path query, the driver keeps the skb and tries to re-send it
again when the path is resolved.

But when re-sending via dev_queue_xmit the kernel doesn't call
to dev_hard_header, so IPoIB needs to keep 20 bytes in the skb
and to put the destination address inside them.

In that way the dev_start_xmit will have the correct destination,
and the driver won't take the destination from the skb->data, while
nothing exists there, which causes to packet be be dropped.

The test flow is:
1. Run the SM on remote node,
2. Restart the driver.
4. Ping some destination,
3. Observe that first ICMP request will be dropped.

Fixes: fc791b633515 ("IB/ipoib: move back IB LL address into the hard
header")
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Tested-by: Yan Xu <jenny.x.xu@oracle.com>
Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
drivers/infiniband/ulp/ipoib/ipoib_main.c