net/mlx4: remove isolated mode constraint

Considering the remaining functionality, the only difference between
isolated and non-isolated mode is that a default MAC flow rule is present
with the latter.

The restriction on enabling isolated mode before creating any queues can
therefore be lifted.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
Adrien Mazarguil 2017-09-01 10:07:05 +02:00 committed by Ferruh Yigit
parent 37491c7f8f
commit dcafc2a64a

View File

@ -935,20 +935,10 @@ mlx4_flow_create(struct rte_eth_dev *dev,
}
/**
* Configure isolated mode.
*
* @see rte_flow_isolate()
*
* Must be done before calling dev_configure().
*
* @param dev
* Pointer to the ethernet device structure.
* @param enable
* Nonzero to enter isolated mode, attempt to leave it otherwise.
* @param[out] error
* Perform verbose error reporting if not NULL. PMDs initialize this
* structure in case of error only.
*
* @return
* 0 on success, a negative value on error.
* @see rte_flow_ops
*/
static int
mlx4_flow_isolate(struct rte_eth_dev *dev,
@ -957,14 +947,17 @@ mlx4_flow_isolate(struct rte_eth_dev *dev,
{
struct priv *priv = dev->data->dev_private;
if (priv->rxqs) {
rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL, "isolated mode must be set"
" before configuring the device");
return -rte_errno;
}
if (!!enable == !!priv->isolated)
return 0;
priv->isolated = !!enable;
if (enable) {
mlx4_mac_addr_del(priv);
} else if (mlx4_mac_addr_add(priv) < 0) {
priv->isolated = 1;
return -rte_flow_error_set(error, rte_errno,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL, "cannot leave isolated mode");
}
return 0;
}