All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] rtnetlink: handle multiple vlan tags in set_vf_vlan
@ 2019-02-21 17:54 Stephen Hemminger
  2019-02-21 18:34 ` Stefano Brivio
  2019-02-22  4:58 ` Moshe Shemesh
  0 siblings, 2 replies; 5+ messages in thread
From: Stephen Hemminger @ 2019-02-21 17:54 UTC (permalink / raw)
  To: Moshe Shemesh; +Cc: netdev, Stephen Hemminger, Stephen Hemminger

The netlink API for IFLA_VF_VLAN_LIST allows multiple VLAN tags to
be passed (and the message was validated) but only the first VLAN
tag was being passed to the device. Change to iterate over each tag received.

Fixes: 79aab093a0b5 ("net: Update API for VF vlan protocol 802.1ad support")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 net/core/rtnetlink.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index a51cab95ba64..3a9ec988ae21 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -2207,11 +2207,10 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb)
 	if (tb[IFLA_VF_VLAN_LIST]) {
 		struct ifla_vf_vlan_info *ivvl[MAX_VLAN_LIST_LEN];
 		struct nlattr *attr;
-		int rem, len = 0;
+		int i, rem, len = 0;
 
-		err = -EOPNOTSUPP;
 		if (!ops->ndo_set_vf_vlan)
-			return err;
+			return -EOPNOTSUPP;
 
 		nla_for_each_nested(attr, tb[IFLA_VF_VLAN_LIST], rem) {
 			if (nla_type(attr) != IFLA_VF_VLAN_INFO ||
@@ -2224,13 +2223,15 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb)
 
 			len++;
 		}
-		if (len == 0)
-			return -EINVAL;
 
-		err = ops->ndo_set_vf_vlan(dev, ivvl[0]->vf, ivvl[0]->vlan,
-					   ivvl[0]->qos, ivvl[0]->vlan_proto);
-		if (err < 0)
-			return err;
+		err = -EINVAL; /* empty list error */
+		for (i = 0; i < len; i++) {
+			err = ops->ndo_set_vf_vlan(dev, ivvl[i]->vf,
+						   ivvl[i]->vlan, ivvl[i]->qos,
+						   ivvl[i]->vlan_proto);
+			if (err < 0)
+				return err;
+		}
 	}
 
 	if (tb[IFLA_VF_TX_RATE]) {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-02-22 18:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-21 17:54 [RFC] rtnetlink: handle multiple vlan tags in set_vf_vlan Stephen Hemminger
2019-02-21 18:34 ` Stefano Brivio
2019-02-21 18:52   ` Stephen Hemminger
2019-02-22  4:58 ` Moshe Shemesh
2019-02-22 18:09   ` Stephen Hemminger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.