aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorJiri Pirko <jpirko@redhat.com>2011-12-08 19:52:37 -0500
committerDavid S. Miller <davem@davemloft.net>2011-12-08 19:52:37 -0500
commit8e586137e6b63af1e881b328466ab5ffbe562510 (patch)
treeda0767e1b1361aa24bd32f485453079e31854c0c /drivers/s390
parent7da82c06ded105bf601bfa0eafc92e84eb0ceeed (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/s390')
-rw-r--r--drivers/s390/net/qeth_l2_main.c18
-rw-r--r--drivers/s390/net/qeth_l3_main.c9
2 files changed, 16 insertions, 11 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
index a21ae3d549db..c4e2004bd0e8 100644
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -301,21 +301,21 @@ static void qeth_l2_process_vlans(struct qeth_card *card)
301 spin_unlock_bh(&card->vlanlock); 301 spin_unlock_bh(&card->vlanlock);
302} 302}
303 303
304static void qeth_l2_vlan_rx_add_vid(struct net_device *dev, unsigned short vid) 304static int qeth_l2_vlan_rx_add_vid(struct net_device *dev, unsigned short vid)
305{ 305{
306 struct qeth_card *card = dev->ml_priv; 306 struct qeth_card *card = dev->ml_priv;
307 struct qeth_vlan_vid *id; 307 struct qeth_vlan_vid *id;
308 308
309 QETH_CARD_TEXT_(card, 4, "aid:%d", vid); 309 QETH_CARD_TEXT_(card, 4, "aid:%d", vid);
310 if (!vid) 310 if (!vid)
311 return; 311 return 0;
312 if (card->info.type == QETH_CARD_TYPE_OSM) { 312 if (card->info.type == QETH_CARD_TYPE_OSM) {
313 QETH_CARD_TEXT(card, 3, "aidOSM"); 313 QETH_CARD_TEXT(card, 3, "aidOSM");
314 return; 314 return 0;
315 } 315 }
316 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { 316 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) {
317 QETH_CARD_TEXT(card, 3, "aidREC"); 317 QETH_CARD_TEXT(card, 3, "aidREC");
318 return; 318 return 0;
319 } 319 }
320 id = kmalloc(sizeof(struct qeth_vlan_vid), GFP_ATOMIC); 320 id = kmalloc(sizeof(struct qeth_vlan_vid), GFP_ATOMIC);
321 if (id) { 321 if (id) {
@@ -324,10 +324,13 @@ static void qeth_l2_vlan_rx_add_vid(struct net_device *dev, unsigned short vid)
324 spin_lock_bh(&card->vlanlock); 324 spin_lock_bh(&card->vlanlock);
325 list_add_tail(&id->list, &card->vid_list); 325 list_add_tail(&id->list, &card->vid_list);
326 spin_unlock_bh(&card->vlanlock); 326 spin_unlock_bh(&card->vlanlock);
327 } else {
328 return -ENOMEM;
327 } 329 }
330 return 0;
328} 331}
329 332
330static void qeth_l2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) 333static int qeth_l2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
331{ 334{
332 struct qeth_vlan_vid *id, *tmpid = NULL; 335 struct qeth_vlan_vid *id, *tmpid = NULL;
333 struct qeth_card *card = dev->ml_priv; 336 struct qeth_card *card = dev->ml_priv;
@@ -335,11 +338,11 @@ static void qeth_l2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
335 QETH_CARD_TEXT_(card, 4, "kid:%d", vid); 338 QETH_CARD_TEXT_(card, 4, "kid:%d", vid);
336 if (card->info.type == QETH_CARD_TYPE_OSM) { 339 if (card->info.type == QETH_CARD_TYPE_OSM) {
337 QETH_CARD_TEXT(card, 3, "kidOSM"); 340 QETH_CARD_TEXT(card, 3, "kidOSM");
338 return; 341 return 0;
339 } 342 }
340 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { 343 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) {
341 QETH_CARD_TEXT(card, 3, "kidREC"); 344 QETH_CARD_TEXT(card, 3, "kidREC");
342 return; 345 return 0;
343 } 346 }
344 spin_lock_bh(&card->vlanlock); 347 spin_lock_bh(&card->vlanlock);
345 list_for_each_entry(id, &card->vid_list, list) { 348 list_for_each_entry(id, &card->vid_list, list) {
@@ -355,6 +358,7 @@ static void qeth_l2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
355 kfree(tmpid); 358 kfree(tmpid);
356 } 359 }
357 qeth_l2_set_multicast_list(card->dev); 360 qeth_l2_set_multicast_list(card->dev);
361 return 0;
358} 362}
359 363
360static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode) 364static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode)
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index b2a55e3fde0b..b3b045c21e2c 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -1869,15 +1869,15 @@ static void qeth_l3_free_vlan_addresses(struct qeth_card *card,
1869 qeth_l3_free_vlan_addresses6(card, vid); 1869 qeth_l3_free_vlan_addresses6(card, vid);
1870} 1870}
1871 1871
1872static void qeth_l3_vlan_rx_add_vid(struct net_device *dev, unsigned short vid) 1872static int qeth_l3_vlan_rx_add_vid(struct net_device *dev, unsigned short vid)
1873{ 1873{
1874 struct qeth_card *card = dev->ml_priv; 1874 struct qeth_card *card = dev->ml_priv;
1875 1875
1876 set_bit(vid, card->active_vlans); 1876 set_bit(vid, card->active_vlans);
1877 return; 1877 return 0;
1878} 1878}
1879 1879
1880static void qeth_l3_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) 1880static int qeth_l3_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
1881{ 1881{
1882 struct qeth_card *card = dev->ml_priv; 1882 struct qeth_card *card = dev->ml_priv;
1883 unsigned long flags; 1883 unsigned long flags;
@@ -1885,7 +1885,7 @@ static void qeth_l3_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
1885 QETH_CARD_TEXT_(card, 4, "kid:%d", vid); 1885 QETH_CARD_TEXT_(card, 4, "kid:%d", vid);
1886 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { 1886 if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) {
1887 QETH_CARD_TEXT(card, 3, "kidREC"); 1887 QETH_CARD_TEXT(card, 3, "kidREC");
1888 return; 1888 return 0;
1889 } 1889 }
1890 spin_lock_irqsave(&card->vlanlock, flags); 1890 spin_lock_irqsave(&card->vlanlock, flags);
1891 /* unregister IP addresses of vlan device */ 1891 /* unregister IP addresses of vlan device */
@@ -1893,6 +1893,7 @@ static void qeth_l3_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
1893 clear_bit(vid, card->active_vlans); 1893 clear_bit(vid, card->active_vlans);
1894 spin_unlock_irqrestore(&card->vlanlock, flags); 1894 spin_unlock_irqrestore(&card->vlanlock, flags);
1895 qeth_l3_set_multicast_list(card->dev); 1895 qeth_l3_set_multicast_list(card->dev);
1896 return 0;
1896} 1897}
1897 1898
1898static inline int qeth_l3_rebuild_skb(struct qeth_card *card, 1899static inline int qeth_l3_rebuild_skb(struct qeth_card *card,