net/sfc: do not allow flow rules to refer to VF representors
VF representors do not own dedicated m-ports and thus cannot be referred to as traffic endpoints in flow items or actions. Fixes:a62ec90522
("net/sfc: add port representors infrastructure") Fixes:f55b61cec9
("net/sfc: support port representor flow item") Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
This commit is contained in:
parent
ec4e11d41d
commit
b7b7b9f800
@ -512,7 +512,7 @@ sfc_mae_clear_switch_port(uint16_t switch_domain_id,
|
||||
static int
|
||||
sfc_mae_find_switch_port_by_ethdev(uint16_t switch_domain_id,
|
||||
uint16_t ethdev_port_id,
|
||||
efx_mport_sel_t *mport_sel)
|
||||
struct sfc_mae_switch_port **switch_port)
|
||||
{
|
||||
struct sfc_mae_switch_domain *domain;
|
||||
struct sfc_mae_switch_port *port;
|
||||
@ -528,7 +528,7 @@ sfc_mae_find_switch_port_by_ethdev(uint16_t switch_domain_id,
|
||||
|
||||
TAILQ_FOREACH(port, &domain->ports, switch_domain_ports) {
|
||||
if (port->ethdev_port_id == ethdev_port_id) {
|
||||
*mport_sel = port->ethdev_mport;
|
||||
*switch_port = port;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -541,11 +541,27 @@ sfc_mae_switch_port_by_ethdev(uint16_t switch_domain_id,
|
||||
uint16_t ethdev_port_id,
|
||||
efx_mport_sel_t *mport_sel)
|
||||
{
|
||||
struct sfc_mae_switch_port *port;
|
||||
int rc;
|
||||
|
||||
rte_spinlock_lock(&sfc_mae_switch.lock);
|
||||
rc = sfc_mae_find_switch_port_by_ethdev(switch_domain_id,
|
||||
ethdev_port_id, mport_sel);
|
||||
ethdev_port_id, &port);
|
||||
if (rc != 0)
|
||||
goto unlock;
|
||||
|
||||
if (port->type != SFC_MAE_SWITCH_PORT_INDEPENDENT) {
|
||||
/*
|
||||
* The ethdev is a "VF representor". It does not own
|
||||
* a dedicated m-port suitable for use in flow rules.
|
||||
*/
|
||||
rc = ENOTSUP;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
*mport_sel = port->ethdev_mport;
|
||||
|
||||
unlock:
|
||||
rte_spinlock_unlock(&sfc_mae_switch.lock);
|
||||
|
||||
return rc;
|
||||
|
Loading…
Reference in New Issue
Block a user