@@ -32,6 +32,7 @@
* SOFTWARE.
*/
+#include <linux/etherdevice.h>
#include <linux/mlx4/cmd.h>
#include <linux/cache.h>
@@ -148,7 +149,8 @@ int mlx4_QUERY_SLAVE_CAP_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vh
struct mlx4_cmd_mailbox *outbox)
{
struct mlx4_caps *caps = outbox->buf;
- int i;
+ u8 rand_mac[6];
+ int i, j;
memcpy(caps, &dev->caps, sizeof *caps);
@@ -165,6 +167,10 @@ int mlx4_QUERY_SLAVE_CAP_wrapper(struct mlx4_dev *dev, int slave, struct mlx4_vh
for (i = 1; i <= dev->caps.num_ports; ++i) {
caps->gid_table_len[i] = 1;
caps->pkey_table_len[i] = 1;
+ random_ether_addr(rand_mac);
+ caps->def_mac[i] = 0;
+ for (j = 0; j < ETH_ALEN; j++)
+ caps->def_mac[i] |= ((u64)(rand_mac[1]) << 8 * j);
}
} else {
caps->sqp_demux = dev->num_slaves;