]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commit
IB/IPoIB: Add destination address when re-queue packet
authorErez Shitrit <erezsh@mellanox.com>
Wed, 1 Feb 2017 17:10:05 +0000 (19:10 +0200)
committerTim Gardner <tim.gardner@canonical.com>
Wed, 15 Mar 2017 15:32:11 +0000 (10:32 -0500)
commit6a00b586a46434476a539ff21fb4dba2c7eaec9f
treed45ee26fddc0e234f9338f96ccce4ed77e602009
parent01290076d31a247e95c1b9908d407574ad0903d4
IB/IPoIB: Add destination address when re-queue packet

BugLink: http://bugs.launchpad.net/bugs/1673118
commit 2b0841766a898aba84630fb723989a77a9d3b4e6 upstream.

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: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/infiniband/ulp/ipoib/ipoib_main.c