Message ID | 20190209003248.31088-11-f.fainelli@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | net: Remove switchdev_ops | expand |
Sat, Feb 09, 2019 at 01:32:42AM CET, f.fainelli@gmail.com wrote: >Following patches will change the way we communicate getting or setting Just "setting", no "getting". >a port's attribute and use a blocking notifier to perform those tasks. > >Prepare rocker to support receiving notifier events targeting >SWITCHDEV_PORT_ATTR_SET and simply translate that into the existing >rocker_port_attr_set call. > >Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> >--- > drivers/net/ethernet/rocker/rocker_main.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > >diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c >index ff3f14504f4f..f10e4888ecff 100644 >--- a/drivers/net/ethernet/rocker/rocker_main.c >+++ b/drivers/net/ethernet/rocker/rocker_main.c >@@ -2811,6 +2811,24 @@ rocker_switchdev_port_obj_event(unsigned long event, struct net_device *netdev, > return notifier_from_errno(err); > } > >+static int >+rocker_switchdev_port_attr_event(unsigned long event, struct net_device *netdev, >+ struct switchdev_notifier_port_attr_info >+ *port_attr_info) >+{ >+ int err = -EOPNOTSUPP; >+ >+ switch (event) { >+ case SWITCHDEV_PORT_ATTR_SET: Do you expect some other event to be handled in rocker_switchdev_port_attr_event()? Because you have SWITCHDEV_PORT_ATTR_SET selected in case here and in rocker_switchdev_blocking_event. Perhaps you can rename rocker_switchdev_port_attr_event() to rocker_switchdev_port_attr_set_event() and avoid this switchcase. >+ err = rocker_port_attr_set(netdev, port_attr_info->attr, >+ port_attr_info->trans); >+ break; >+ } >+ >+ port_attr_info->handled = true; >+ return notifier_from_errno(err); >+} >+ > static int rocker_switchdev_blocking_event(struct notifier_block *unused, > unsigned long event, void *ptr) > { >@@ -2823,6 +2841,8 @@ static int rocker_switchdev_blocking_event(struct notifier_block *unused, > case SWITCHDEV_PORT_OBJ_ADD: > case SWITCHDEV_PORT_OBJ_DEL: > return rocker_switchdev_port_obj_event(event, dev, ptr); >+ case SWITCHDEV_PORT_ATTR_SET: >+ return rocker_switchdev_port_attr_event(event, dev, ptr); > } > > return NOTIFY_DONE; >-- >2.17.1 >
Sat, Feb 09, 2019 at 07:21:47PM CET, jiri@resnulli.us wrote: [...] >>+static int >>+rocker_switchdev_port_attr_event(unsigned long event, struct net_device *netdev, >>+ struct switchdev_notifier_port_attr_info >>+ *port_attr_info) >>+{ >>+ int err = -EOPNOTSUPP; >>+ >>+ switch (event) { >>+ case SWITCHDEV_PORT_ATTR_SET: > >Do you expect some other event to be handled in >rocker_switchdev_port_attr_event()? Because you have SWITCHDEV_PORT_ATTR_SET >selected in case here and in rocker_switchdev_blocking_event. >Perhaps you can rename rocker_switchdev_port_attr_event() to >rocker_switchdev_port_attr_set_event() and avoid this switchcase. Same comment applies on next 4 patches.
Le 2/9/19 à 10:21 AM, Jiri Pirko a écrit : > Sat, Feb 09, 2019 at 01:32:42AM CET, f.fainelli@gmail.com wrote: >> Following patches will change the way we communicate getting or setting > > Just "setting", no "getting". > > >> a port's attribute and use a blocking notifier to perform those tasks. >> >> Prepare rocker to support receiving notifier events targeting >> SWITCHDEV_PORT_ATTR_SET and simply translate that into the existing >> rocker_port_attr_set call. >> >> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> >> --- >> drivers/net/ethernet/rocker/rocker_main.c | 20 ++++++++++++++++++++ >> 1 file changed, 20 insertions(+) >> >> diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c >> index ff3f14504f4f..f10e4888ecff 100644 >> --- a/drivers/net/ethernet/rocker/rocker_main.c >> +++ b/drivers/net/ethernet/rocker/rocker_main.c >> @@ -2811,6 +2811,24 @@ rocker_switchdev_port_obj_event(unsigned long event, struct net_device *netdev, >> return notifier_from_errno(err); >> } >> >> +static int >> +rocker_switchdev_port_attr_event(unsigned long event, struct net_device *netdev, >> + struct switchdev_notifier_port_attr_info >> + *port_attr_info) >> +{ >> + int err = -EOPNOTSUPP; >> + >> + switch (event) { >> + case SWITCHDEV_PORT_ATTR_SET: > > Do you expect some other event to be handled in > rocker_switchdev_port_attr_event()? Because you have SWITCHDEV_PORT_ATTR_SET > selected in case here and in rocker_switchdev_blocking_event. > Perhaps you can rename rocker_switchdev_port_attr_event() to > rocker_switchdev_port_attr_set_event() and avoid this switchcase. That's a good point, I have PORT_ATTR_{GET_SET} initially which was the reason for the switch/case statement, will change it according to your suggestion. Thanks!
diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c index ff3f14504f4f..f10e4888ecff 100644 --- a/drivers/net/ethernet/rocker/rocker_main.c +++ b/drivers/net/ethernet/rocker/rocker_main.c @@ -2811,6 +2811,24 @@ rocker_switchdev_port_obj_event(unsigned long event, struct net_device *netdev, return notifier_from_errno(err); } +static int +rocker_switchdev_port_attr_event(unsigned long event, struct net_device *netdev, + struct switchdev_notifier_port_attr_info + *port_attr_info) +{ + int err = -EOPNOTSUPP; + + switch (event) { + case SWITCHDEV_PORT_ATTR_SET: + err = rocker_port_attr_set(netdev, port_attr_info->attr, + port_attr_info->trans); + break; + } + + port_attr_info->handled = true; + return notifier_from_errno(err); +} + static int rocker_switchdev_blocking_event(struct notifier_block *unused, unsigned long event, void *ptr) { @@ -2823,6 +2841,8 @@ static int rocker_switchdev_blocking_event(struct notifier_block *unused, case SWITCHDEV_PORT_OBJ_ADD: case SWITCHDEV_PORT_OBJ_DEL: return rocker_switchdev_port_obj_event(event, dev, ptr); + case SWITCHDEV_PORT_ATTR_SET: + return rocker_switchdev_port_attr_event(event, dev, ptr); } return NOTIFY_DONE;
Following patches will change the way we communicate getting or setting a port's attribute and use a blocking notifier to perform those tasks. Prepare rocker to support receiving notifier events targeting SWITCHDEV_PORT_ATTR_SET and simply translate that into the existing rocker_port_attr_set call. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> --- drivers/net/ethernet/rocker/rocker_main.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)