diff options
author | Michael Brown <mcb30@ipxe.org> | 2015-07-06 13:06:55 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2015-07-06 13:10:40 +0100 |
commit | 652e5a96db85a86633b5c40fc1699ae5c8039942 (patch) | |
tree | 67fbbd16a638d97d04607048f0629459ee7ec2bb | |
parent | 38afcc51ea6cccbbcc40cc4a5bae1213431943ec (diff) | |
download | ipxe-652e5a96db85a86633b5c40fc1699ae5c8039942.tar.gz |
[ipoib] Transmit multicast packets as broadcasts
Multicast MAC addresses will never have REMAC cache entries, and the
corresponding multicast IPoIB MAC address cannot be obtained simply by
issuing an ARP request.
For the trivial volume of multicast packets that we expect to send in
any realistic scenario, the simplest solution is to send them as
broadcasts instead.
Reported-by: Wissam Shoukair <wissams@mellanox.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/drivers/net/ipoib.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/drivers/net/ipoib.c b/src/drivers/net/ipoib.c index bec4bbae..7ecb2c5d 100644 --- a/src/drivers/net/ipoib.c +++ b/src/drivers/net/ipoib.c @@ -146,8 +146,10 @@ static struct ipoib_mac * ipoib_find_remac ( struct ipoib_device *ipoib, const struct ipoib_remac *remac ) { struct ipoib_peer *peer; - /* Check for broadcast REMAC */ - if ( is_broadcast_ether_addr ( remac ) ) + /* Check for broadcast or multicast REMAC. We transmit + * multicasts as broadcasts for simplicity. + */ + if ( is_multicast_ether_addr ( remac ) ) return &ipoib->broadcast; /* Try to find via REMAC cache */ |