net/mlx4: Avoid dealing with MAC index in UPDATE_QP wrapper if not needed
authorMatan Barak <matanb@mellanox.com>
Wed, 10 Sep 2014 13:41:55 +0000 (16:41 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 Sep 2014 22:21:34 +0000 (15:21 -0700)
The current wrapper implementation of the UPDATE_QP command tries to get
the MAC index, even if MAC wasn't set by the VF. Fix it up to only handle
the MAC field if it's valid.

Fixes: ce8d9e0 ('net/mlx4_core: Add UPDATE_QP SRIOV wrapper support')
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c

index f87a4a38575f440d5a3206f752ec98f2a496e05f..2fe61b6a8e377a860465ba4a2620e838a47133b2 100644 (file)
@@ -3998,13 +3998,17 @@ int mlx4_UPDATE_QP_wrapper(struct mlx4_dev *dev, int slave,
        }
 
        port = (rqp->sched_queue >> 6 & 1) + 1;
-       smac_index = cmd->qp_context.pri_path.grh_mylmc;
-       err = mac_find_smac_ix_in_slave(dev, slave, port,
-                                       smac_index, &mac);
-       if (err) {
-               mlx4_err(dev, "Failed to update qpn 0x%x, MAC is invalid. smac_ix: %d\n",
-                        qpn, smac_index);
-               goto err_mac;
+
+       if (pri_addr_path_mask & (1ULL << MLX4_UPD_QP_PATH_MASK_MAC_INDEX)) {
+               smac_index = cmd->qp_context.pri_path.grh_mylmc;
+               err = mac_find_smac_ix_in_slave(dev, slave, port,
+                                               smac_index, &mac);
+
+               if (err) {
+                       mlx4_err(dev, "Failed to update qpn 0x%x, MAC is invalid. smac_ix: %d\n",
+                                qpn, smac_index);
+                       goto err_mac;
+               }
        }
 
        err = mlx4_cmd(dev, inbox->dma,