dev->caps.stat_rate_support  = dev_cap->stat_rate_support;
        dev->caps.max_gso_sz         = dev_cap->max_gso_sz;
 
+       /* Sense port always allowed on supported devices for ConnectX1 and 2 */
+       if (dev->pdev->device != 0x1003)
+               dev->caps.flags |= MLX4_DEV_CAP_FLAG_SENSE_SUPPORT;
+
        dev->caps.log_num_macs  = log_num_mac;
        dev->caps.log_num_vlans = MLX4_LOG_NUM_VLANS;
        dev->caps.log_num_prios = use_prio ? 3 : 0;
                }
                dev->caps.possible_type[i] = dev->caps.port_type[i];
                mlx4_priv(dev)->sense.sense_allowed[i] =
-                       dev->caps.supported_type[i] == MLX4_PORT_TYPE_AUTO;
+                       ((dev->caps.supported_type[i] == MLX4_PORT_TYPE_AUTO) &&
+                        (dev->caps.flags & MLX4_DEV_CAP_FLAG_SENSE_SUPPORT));
 
                if (dev->caps.log_num_macs > dev_cap->log_max_macs[i]) {
                        dev->caps.log_num_macs = dev_cap->log_max_macs[i];
                        types[i] = mdev->caps.port_type[i+1];
        }
 
-       if (!(mdev->caps.flags & MLX4_DEV_CAP_FLAG_DPDP)) {
+       if (!(mdev->caps.flags & MLX4_DEV_CAP_FLAG_DPDP) &&
+           !(mdev->caps.flags & MLX4_DEV_CAP_FLAG_SENSE_SUPPORT)) {
                for (i = 1; i <= mdev->caps.num_ports; i++) {
                        if (mdev->caps.possible_type[i] == MLX4_PORT_TYPE_AUTO) {
                                mdev->caps.possible_type[i] = mdev->caps.port_type[i];
 
        MLX4_DEV_CAP_FLAG_UDP_RSS       = 1LL << 40,
        MLX4_DEV_CAP_FLAG_VEP_UC_STEER  = 1LL << 41,
        MLX4_DEV_CAP_FLAG_VEP_MC_STEER  = 1LL << 42,
-       MLX4_DEV_CAP_FLAG_COUNTERS      = 1LL << 48
+       MLX4_DEV_CAP_FLAG_COUNTERS      = 1LL << 48,
+       MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55
 };
 
 #define MLX4_ATTR_EXTENDED_PORT_INFO   cpu_to_be16(0xff90)