diff options
author | Jiri Pirko <jpirko@redhat.com> | 2011-12-08 19:52:37 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-12-08 19:52:37 -0500 |
commit | 8e586137e6b63af1e881b328466ab5ffbe562510 (patch) | |
tree | da0767e1b1361aa24bd32f485453079e31854c0c /drivers/net/ethernet/intel/e1000e/netdev.c | |
parent | 7da82c06ded105bf601bfa0eafc92e84eb0ceeed (diff) |
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>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 93ae0c26d434..90953b4d6bfa 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c | |||
@@ -2522,7 +2522,7 @@ clean_rx: | |||
2522 | return work_done; | 2522 | return work_done; |
2523 | } | 2523 | } |
2524 | 2524 | ||
2525 | static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid) | 2525 | static int e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid) |
2526 | { | 2526 | { |
2527 | struct e1000_adapter *adapter = netdev_priv(netdev); | 2527 | struct e1000_adapter *adapter = netdev_priv(netdev); |
2528 | struct e1000_hw *hw = &adapter->hw; | 2528 | struct e1000_hw *hw = &adapter->hw; |
@@ -2532,7 +2532,7 @@ static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid) | |||
2532 | if ((adapter->hw.mng_cookie.status & | 2532 | if ((adapter->hw.mng_cookie.status & |
2533 | E1000_MNG_DHCP_COOKIE_STATUS_VLAN) && | 2533 | E1000_MNG_DHCP_COOKIE_STATUS_VLAN) && |
2534 | (vid == adapter->mng_vlan_id)) | 2534 | (vid == adapter->mng_vlan_id)) |
2535 | return; | 2535 | return 0; |
2536 | 2536 | ||
2537 | /* add VID to filter table */ | 2537 | /* add VID to filter table */ |
2538 | if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { | 2538 | if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { |
@@ -2543,9 +2543,11 @@ static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid) | |||
2543 | } | 2543 | } |
2544 | 2544 | ||
2545 | set_bit(vid, adapter->active_vlans); | 2545 | set_bit(vid, adapter->active_vlans); |
2546 | |||
2547 | return 0; | ||
2546 | } | 2548 | } |
2547 | 2549 | ||
2548 | static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) | 2550 | static int e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) |
2549 | { | 2551 | { |
2550 | struct e1000_adapter *adapter = netdev_priv(netdev); | 2552 | struct e1000_adapter *adapter = netdev_priv(netdev); |
2551 | struct e1000_hw *hw = &adapter->hw; | 2553 | struct e1000_hw *hw = &adapter->hw; |
@@ -2556,7 +2558,7 @@ static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) | |||
2556 | (vid == adapter->mng_vlan_id)) { | 2558 | (vid == adapter->mng_vlan_id)) { |
2557 | /* release control to f/w */ | 2559 | /* release control to f/w */ |
2558 | e1000e_release_hw_control(adapter); | 2560 | e1000e_release_hw_control(adapter); |
2559 | return; | 2561 | return 0; |
2560 | } | 2562 | } |
2561 | 2563 | ||
2562 | /* remove VID from filter table */ | 2564 | /* remove VID from filter table */ |
@@ -2568,6 +2570,8 @@ static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) | |||
2568 | } | 2570 | } |
2569 | 2571 | ||
2570 | clear_bit(vid, adapter->active_vlans); | 2572 | clear_bit(vid, adapter->active_vlans); |
2573 | |||
2574 | return 0; | ||
2571 | } | 2575 | } |
2572 | 2576 | ||
2573 | /** | 2577 | /** |