qed*: Add support for ndo_set_vf_trust
Trusted VFs would be allowed to receive promiscuous and multicast promiscuous data. Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f29ffdb65f
commit
f990c82c38
@@ -714,11 +714,13 @@ void qede_config_rx_mode(struct net_device *ndev)
|
||||
goto out;
|
||||
|
||||
/* Check for promiscuous */
|
||||
if ((ndev->flags & IFF_PROMISC) ||
|
||||
(uc_count > edev->dev_info.num_mac_filters - 1)) {
|
||||
if (ndev->flags & IFF_PROMISC)
|
||||
accept_flags = QED_FILTER_RX_MODE_TYPE_PROMISC;
|
||||
} else {
|
||||
/* Add MAC filters according to the unicast secondary macs */
|
||||
else
|
||||
accept_flags = QED_FILTER_RX_MODE_TYPE_REGULAR;
|
||||
|
||||
/* Configure all filters regardless, in case promisc is rejected */
|
||||
if (uc_count < edev->dev_info.num_mac_filters) {
|
||||
int i;
|
||||
|
||||
temp = uc_macs;
|
||||
@@ -731,12 +733,14 @@ void qede_config_rx_mode(struct net_device *ndev)
|
||||
|
||||
temp += ETH_ALEN;
|
||||
}
|
||||
|
||||
rc = qede_configure_mcast_filtering(ndev, &accept_flags);
|
||||
if (rc)
|
||||
goto out;
|
||||
} else {
|
||||
accept_flags = QED_FILTER_RX_MODE_TYPE_PROMISC;
|
||||
}
|
||||
|
||||
rc = qede_configure_mcast_filtering(ndev, &accept_flags);
|
||||
if (rc)
|
||||
goto out;
|
||||
|
||||
/* take care of VLAN mode */
|
||||
if (ndev->flags & IFF_PROMISC) {
|
||||
qede_config_accept_any_vlan(edev, true);
|
||||
|
@@ -475,6 +475,16 @@ static int qede_set_vf_link_state(struct net_device *dev, int vfidx,
|
||||
|
||||
return edev->ops->iov->set_link_state(edev->cdev, vfidx, link_state);
|
||||
}
|
||||
|
||||
static int qede_set_vf_trust(struct net_device *dev, int vfidx, bool setting)
|
||||
{
|
||||
struct qede_dev *edev = netdev_priv(dev);
|
||||
|
||||
if (!edev->ops)
|
||||
return -EINVAL;
|
||||
|
||||
return edev->ops->iov->set_trust(edev->cdev, vfidx, setting);
|
||||
}
|
||||
#endif
|
||||
|
||||
static const struct net_device_ops qede_netdev_ops = {
|
||||
@@ -488,6 +498,7 @@ static const struct net_device_ops qede_netdev_ops = {
|
||||
#ifdef CONFIG_QED_SRIOV
|
||||
.ndo_set_vf_mac = qede_set_vf_mac,
|
||||
.ndo_set_vf_vlan = qede_set_vf_vlan,
|
||||
.ndo_set_vf_trust = qede_set_vf_trust,
|
||||
#endif
|
||||
.ndo_vlan_rx_add_vid = qede_vlan_rx_add_vid,
|
||||
.ndo_vlan_rx_kill_vid = qede_vlan_rx_kill_vid,
|
||||
|
Reference in New Issue
Block a user