net: make vlan ndo_vlan_rx_[add/kill]_vid return error value
Let caller know the result of adding/removing vlan id to/from vlan filter. In some drivers I make those functions to just return 0. But in those where there is able to see if hw setup went correctly, return value is set appropriately. Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committad av
David S. Miller

förälder
7da82c06de
incheckning
8e586137e6
@@ -1176,18 +1176,20 @@ static void igbvf_set_rlpml(struct igbvf_adapter *adapter)
|
||||
e1000_rlpml_set_vf(hw, max_frame_size);
|
||||
}
|
||||
|
||||
static void igbvf_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
|
||||
static int igbvf_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
|
||||
{
|
||||
struct igbvf_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
|
||||
if (hw->mac.ops.set_vfta(hw, vid, true))
|
||||
if (hw->mac.ops.set_vfta(hw, vid, true)) {
|
||||
dev_err(&adapter->pdev->dev, "Failed to add vlan id %d\n", vid);
|
||||
else
|
||||
set_bit(vid, adapter->active_vlans);
|
||||
return -EINVAL;
|
||||
}
|
||||
set_bit(vid, adapter->active_vlans);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void igbvf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
|
||||
static int igbvf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
|
||||
{
|
||||
struct igbvf_adapter *adapter = netdev_priv(netdev);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
@@ -1197,11 +1199,13 @@ static void igbvf_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
|
||||
if (!test_bit(__IGBVF_DOWN, &adapter->state))
|
||||
igbvf_irq_enable(adapter);
|
||||
|
||||
if (hw->mac.ops.set_vfta(hw, vid, false))
|
||||
if (hw->mac.ops.set_vfta(hw, vid, false)) {
|
||||
dev_err(&adapter->pdev->dev,
|
||||
"Failed to remove vlan id %d\n", vid);
|
||||
else
|
||||
clear_bit(vid, adapter->active_vlans);
|
||||
return -EINVAL;
|
||||
}
|
||||
clear_bit(vid, adapter->active_vlans);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void igbvf_restore_vlan(struct igbvf_adapter *adapter)
|
||||
|
Referens i nytt ärende
Block a user