[MLX4] behavior change: on conflict between requested and supported port type, start...
authorleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 26 Oct 2009 09:55:44 +0000 (09:55 +0000)
committerleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 26 Oct 2009 09:55:44 +0000 (09:55 +0000)
The previous behavior was to issue an error and start up in "livefish" mode.
It is relevant only for Mellanox VPI (= hybrid IB/Ethernet) cards.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2509 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

hw/mlx4/kernel/bus/net/main.c

index 92bce0d..51ae38c 100644 (file)
@@ -256,11 +256,11 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
                if (port_type[i-1] & dev_cap->supported_port_types[i])
                        dev->caps.port_type[i] = port_type[i-1];
                else {
-                       MLX4_PRINT_EV(TRACE_LEVEL_ERROR ,MLX4_DBG_DRV ,
+                       MLX4_PRINT_EV(TRACE_LEVEL_WARNING,MLX4_DBG_DRV ,
                                ("Requested port type %#x for port %d is "
-                               "not supported by HW. Supported %#x\n", 
+                               "not supported by HW. Supported %#x. We'll working to the supported one! \n", 
                                port_type[i-1], i, (int)dev_cap->supported_port_types[i]));
-                       MLX4_PRINT_EV(TRACE_LEVEL_ERROR ,MLX4_DBG_DRV ,
+                       MLX4_PRINT_EV(TRACE_LEVEL_WARNING ,MLX4_DBG_DRV ,
                                ("Ven %x Dev %d Fw %d.%d.%d, IsBurnDevice %s\n", 
                                (unsigned)dev->pdev->ven_id, (unsigned)dev->pdev->dev_id,
                                (int) (dev->caps.fw_ver >> 32),
@@ -269,7 +269,7 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
                                mlx4_is_livefish(dev) ? "Y" : "N"
                                ));
                        
-                       return -ENODEV;
+                       dev->caps.port_type[i] = dev_cap->supported_port_types[i];
                }
                if (dev->caps.log_num_macs > dev_cap->log_max_macs[i]) {
                        dev->caps.log_num_macs = dev_cap->log_max_macs[i];