All of lore.kernel.org
 help / color / mirror / Atom feed
From: roopa <roopa@cumulusnetworks.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: sfeldma@gmail.com, netdev@vger.kernel.org, linux@roeck-us.net,
	f.fainelli@gmail.com
Subject: Re: [PATCH net-next 04/18] switchdev: convert STP update to swdev attr set
Date: Mon, 30 Mar 2015 06:47:10 -0700	[thread overview]
Message-ID: <551953DE.90702@cumulusnetworks.com> (raw)
In-Reply-To: <20150330115417.GC2045@nanopsycho.orion>

On 3/30/15, 4:54 AM, Jiri Pirko wrote:
> Mon, Mar 30, 2015 at 10:40:22AM CEST, sfeldma@gmail.com wrote:
>> From: Scott Feldman <sfeldma@gmail.com>
>>
>> STP update is just a writable port attribute, so convert swdev_port_stp_update
>> to an attr set.
>>
>> Signed-off-by: Scott Feldman <sfeldma@gmail.com>
>> ---
>> drivers/net/ethernet/rocker/rocker.c |   16 +++++++++++++---
>> include/net/switchdev.h              |   13 ++-----------
>> net/bridge/br_stp.c                  |    6 +++++-
>> net/dsa/slave.c                      |   19 ++++++++++++++++++-
>> net/switchdev/switchdev.c            |   28 ----------------------------
>> 5 files changed, 38 insertions(+), 44 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
>> index 4bcc555..224f91d 100644
>> --- a/drivers/net/ethernet/rocker/rocker.c
>> +++ b/drivers/net/ethernet/rocker/rocker.c
>> @@ -4237,11 +4237,21 @@ static int rocker_port_attr_get(struct net_device *dev, struct swdev_attr *attr)
>> 	return 0;
>> }
>>
>> -static int rocker_port_swdev_port_stp_update(struct net_device *dev, u8 state)
>> +static int rocker_port_attr_set(struct net_device *dev, struct swdev_attr *attr)
>> {
>> 	struct rocker_port *rocker_port = netdev_priv(dev);
>> +	int err = 0;
>> +
>> +	switch (attr->attr) {
>> +	case SWDEV_ATTR_PORT_STP_STATE:
>> +		err = rocker_port_stp_update(rocker_port, attr->stp_state);
>> +		break;
>> +	default:
>> +		err = -EOPNOTSUPP;
>> +		break;
>> +	}
>>
>> -	return rocker_port_stp_update(rocker_port, state);
>> +	return err;
>> }
>>
>> static int rocker_port_swdev_fib_ipv4_add(struct net_device *dev,
>> @@ -4271,7 +4281,7 @@ static int rocker_port_swdev_fib_ipv4_del(struct net_device *dev,
>>
>> static const struct swdev_ops rocker_port_swdev_ops = {
>> 	.swdev_port_attr_get		= rocker_port_attr_get,
>> -	.swdev_port_stp_update		= rocker_port_swdev_port_stp_update,
>> +	.swdev_port_attr_set		= rocker_port_attr_set,
>> 	.swdev_fib_ipv4_add		= rocker_port_swdev_fib_ipv4_add,
>> 	.swdev_fib_ipv4_del		= rocker_port_swdev_fib_ipv4_del,
>> };
>> diff --git a/include/net/switchdev.h b/include/net/switchdev.h
>> index fd36b5c..99050b0 100644
>> --- a/include/net/switchdev.h
>> +++ b/include/net/switchdev.h
>> @@ -17,6 +17,7 @@
>> enum swdev_attr_id {
>> 	SWDEV_ATTR_UNDEFINED,
>> 	SWDEV_ATTR_PORT_PARENT_ID,
>> +	SWDEV_ATTR_PORT_STP_STATE,
>> };
>>
>> #define SWDEV_ATTR_F_NO_RECURSE		BIT(0)
>> @@ -27,6 +28,7 @@ struct swdev_attr {
>> 	u32 flags;
>> 	union {
>> 		struct netdev_phys_item_id ppid;	/* PORT_PARENT_ID */
>> +		u8 stp_state;				/* PORT_STP_STATE */
>> 	};
>> };
>>
>> @@ -39,9 +41,6 @@ struct fib_info;
>>   *
>>   * @swdev_port_attr_set: Set a port attribute (see swdev_attr).
>>   *
>> - * @swdev_port_stp_update: Called to notify switch device port of bridge
>> - *   port STP state change.
>> - *
>>   * @swdev_fib_ipv4_add: Called to add/modify IPv4 route to switch device.
>>   *
>>   * @swdev_fib_ipv4_del: Called to delete IPv4 route from switch device.
>> @@ -51,7 +50,6 @@ struct swdev_ops {
>> 				       struct swdev_attr *attr);
>> 	int	(*swdev_port_attr_set)(struct net_device *dev,
>> 				       struct swdev_attr *attr);
>> -	int	(*swdev_port_stp_update)(struct net_device *dev, u8 state);
>> 	int	(*swdev_fib_ipv4_add)(struct net_device *dev, __be32 dst,
>> 				      int dst_len, struct fib_info *fi,
>> 				      u8 tos, u8 type, u32 nlflags,
>> @@ -86,7 +84,6 @@ netdev_switch_notifier_info_to_dev(const struct netdev_switch_notifier_info *inf
>>
>> int swdev_port_attr_get(struct net_device *dev, struct swdev_attr *attr);
>> int swdev_port_attr_set(struct net_device *dev, struct swdev_attr *attr);
>> -int netdev_switch_port_stp_update(struct net_device *dev, u8 state);
>> int register_netdev_switch_notifier(struct notifier_block *nb);
>> int unregister_netdev_switch_notifier(struct notifier_block *nb);
>> int call_netdev_switch_notifiers(unsigned long val, struct net_device *dev,
>> @@ -119,12 +116,6 @@ static inline int swdev_port_attr_set(struct net_device *dev,
>> 	return -EOPNOTSUPP;
>> }
>>
>> -static inline int netdev_switch_port_stp_update(struct net_device *dev,
>> -						u8 state)
>> -{
>> -	return -EOPNOTSUPP;
>> -}
>> -
>> static inline int register_netdev_switch_notifier(struct notifier_block *nb)
>> {
>> 	return 0;
>> diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c
>> index fb3ebe6..8b2ef23 100644
>> --- a/net/bridge/br_stp.c
>> +++ b/net/bridge/br_stp.c
>> @@ -39,10 +39,14 @@ void br_log_state(const struct net_bridge_port *p)
>>
>> void br_set_state(struct net_bridge_port *p, unsigned int state)
>> {
>> +	struct swdev_attr attr = {
>> +		.attr = SWDEV_ATTR_PORT_STP_STATE,
>> +		.stp_state = state,
>> +	};
>> 	int err;
>>
>> 	p->state = state;
>> -	err = netdev_switch_port_stp_update(p->dev, state);
>> +	err = swdev_port_attr_set(p->dev, &attr);
> Seems nicer to me to provide a wrapper for callers so they don't call
> directly swdev_port_attr_set and have no knowledge of swdev_attr.
+1. I had a similar patch long back. swdev_port_attr_set can take a 
attrname and void argument.
the caller only needs to know the attrname in that case.

I had used netlink attribute names at that time to not have another set 
of duplicate attribute names in the swdev layer. But then the api has to 
be called swdev_bridge_port_attr_set to match the bridge attribute 
policy name.
but, i have no objections to having  the new attribute names 
SWDEV_ATTR_PORT_*

  reply	other threads:[~2015-03-30 13:47 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-30  8:40 [PATCH net-next 00/18] switchdev: spring cleanup sfeldma
2015-03-30  8:40 ` [PATCH net-next 01/18] switchdev: introduce get/set attrs ops sfeldma
2015-03-30  8:40 ` [PATCH net-next 02/18] switchdev: flesh out get/set attr ops sfeldma
2015-03-30 11:55   ` Jiri Pirko
2015-03-30 18:32   ` Arad, Ronen
2015-03-30 20:46     ` Jiri Pirko
2015-03-30 21:00       ` Scott Feldman
2015-03-31  0:22   ` Arad, Ronen
2015-03-31  0:38     ` Scott Feldman
2015-03-31 15:37       ` roopa
     [not found]       ` <CAJieiUh0Svt3LZsgoi7RaV8Be0eFyRvoJU3BmW7v3fEvwfXiHg@mail.gmail.com>
2015-03-31 16:05         ` Scott Feldman
2015-03-30  8:40 ` [PATCH net-next 03/18] switchdev: convert parent_id_get to swdev attr get sfeldma
2015-03-30  8:40 ` [PATCH net-next 04/18] switchdev: convert STP update to swdev attr set sfeldma
2015-03-30 11:54   ` Jiri Pirko
2015-03-30 13:47     ` roopa [this message]
2015-03-30  8:40 ` [PATCH net-next 05/18] switchdev: add bridge port flags attr sfeldma
2015-03-30  8:40 ` [PATCH net-next 06/18] rocker: use swdev get/set attr for bridge port flags sfeldma
2015-03-30 12:01   ` Jiri Pirko
2015-03-30  8:40 ` [PATCH net-next 07/18] switchdev: add new swdev bridge setlink sfeldma
2015-03-30 12:31   ` Jiri Pirko
2015-03-30  8:40 ` [PATCH net-next 08/18] rocker: cut over to new swdev_port_bridge_setlink sfeldma
2015-03-30  8:40 ` [PATCH net-next 09/18] bonding: " sfeldma
2015-03-30  8:40 ` [PATCH net-next 10/18] team: " sfeldma
2015-03-30  8:40 ` [PATCH net-next 11/18] switchdev: remove old netdev_switch_port_bridge_setlink sfeldma
2015-03-30 13:23   ` roopa
2015-03-30 20:20     ` Scott Feldman
2015-03-30 20:46       ` Arad, Ronen
2015-03-30 21:27         ` Scott Feldman
2015-03-31  0:08           ` Arad, Ronen
2015-03-31  0:44             ` Scott Feldman
2015-03-31  5:52             ` Jiri Pirko
2015-03-31 19:15               ` Arad, Ronen
2015-03-31 21:52                 ` Jiri Pirko
2015-03-31 23:32                   ` Arad, Ronen
2015-04-01  2:38                     ` Scott Feldman
2015-04-01 12:03                       ` Jamal Hadi Salim
2015-04-01 17:56                         ` Scott Feldman
2015-04-02  1:01                     ` Florian Fainelli
2015-03-30  8:40 ` [PATCH net-next 12/18] switchdev: remove unused netdev_switch_port_bridge_dellink sfeldma
2015-03-30 13:23   ` roopa
2015-03-30  8:40 ` [PATCH net-next 13/18] switchdev: remove unused NETIF_F_HW_SWITCH_OFFLOAD sfeldma
2015-03-30 13:38   ` roopa
2015-03-30 20:48     ` Samudrala, Sridhar
2015-03-30 21:20     ` Scott Feldman
2015-03-31 15:34       ` roopa
     [not found]       ` <CAJieiUiL4QRQAC30=bkYadYD2L2cOcn7mNLV98uH3Go0exMO+A@mail.gmail.com>
2015-03-31 16:03         ` Scott Feldman
2015-03-30  8:40 ` [PATCH net-next 14/18] switchdev: add new swdev_port_bridge_getlink sfeldma
2015-03-30  8:40 ` [PATCH net-next 15/18] rocker: cut over to " sfeldma
2015-03-30  8:40 ` [PATCH net-next 16/18] switchdev: rename netdev_switch_fib_* to swdev_fib_* sfeldma
2015-03-30  8:40 ` [PATCH net-next 17/18] switchdev: rename netdev_switch_notifier_* to swdev_notifier_* sfeldma
2015-03-30  8:40 ` [PATCH net-next 18/18] switchdev: bring documentation up-to-date sfeldma
2015-03-30 12:00 ` [PATCH net-next 00/18] switchdev: spring cleanup Jiri Pirko
2015-03-30 13:11   ` Andy Gospodarek
2015-03-30 15:00     ` roopa
2015-03-30 16:11       ` Or Gerlitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=551953DE.90702@cumulusnetworks.com \
    --to=roopa@cumulusnetworks.com \
    --cc=f.fainelli@gmail.com \
    --cc=jiri@resnulli.us \
    --cc=linux@roeck-us.net \
    --cc=netdev@vger.kernel.org \
    --cc=sfeldma@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.