RDMA/ipoib: Handle user-supplied address when creating child
Use the address supplied by user when creating a child interface. Previously, the address requested by the user was ignored and overridden with parent's GID and the random QP number assigned to the child. Link: https://lore.kernel.org/r/20200623110105.1225750-3-leon@kernel.org Signed-off-by: Michael Guralnik <michaelgur@mellanox.com> Reviewed-by: Feras Daoud <ferasda@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
Родитель
4dca650991
Коммит
87fb5c1ccb
|
@ -1892,8 +1892,15 @@ static void ipoib_child_init(struct net_device *ndev)
|
|||
|
||||
priv->max_ib_mtu = ppriv->max_ib_mtu;
|
||||
set_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags);
|
||||
memcpy(priv->dev->dev_addr, ppriv->dev->dev_addr, INFINIBAND_ALEN);
|
||||
memcpy(&priv->local_gid, &ppriv->local_gid, sizeof(priv->local_gid));
|
||||
if (memchr_inv(priv->dev->dev_addr, 0, INFINIBAND_ALEN))
|
||||
memcpy(&priv->local_gid, priv->dev->dev_addr + 4,
|
||||
sizeof(priv->local_gid));
|
||||
else {
|
||||
memcpy(priv->dev->dev_addr, ppriv->dev->dev_addr,
|
||||
INFINIBAND_ALEN);
|
||||
memcpy(&priv->local_gid, &ppriv->local_gid,
|
||||
sizeof(priv->local_gid));
|
||||
}
|
||||
}
|
||||
|
||||
static int ipoib_ndo_init(struct net_device *ndev)
|
||||
|
|
Загрузка…
Ссылка в новой задаче