net: marvell: prestera: Refactor router functions
authorYevhen Orlov <yevhen.orlov@plvision.eu>
Tue, 11 Jan 2022 01:10:51 +0000 (03:10 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 12 Jan 2022 18:17:04 +0000 (10:17 -0800)
* Reverse xmas tree variables order
* User friendly messages on error paths
* Refactor __prestera_inetaddr_event to use early return

Signed-off-by: Yevhen Orlov <yevhen.orlov@plvision.eu>
Link: https://lore.kernel.org/r/20220111011051.4941-1-yevhen.orlov@plvision.eu
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/prestera/prestera_hw.c
drivers/net/ethernet/marvell/prestera/prestera_router.c
drivers/net/ethernet/marvell/prestera/prestera_router_hw.c

index 51fc841..e6bfadc 100644 (file)
@@ -1831,8 +1831,8 @@ static int prestera_iface_to_msg(struct prestera_iface *iface,
 int prestera_hw_rif_create(struct prestera_switch *sw,
                           struct prestera_iface *iif, u8 *mac, u16 *rif_id)
 {
-       struct prestera_msg_rif_req req;
        struct prestera_msg_rif_resp resp;
+       struct prestera_msg_rif_req req;
        int err;
 
        memcpy(req.mac, mac, ETH_ALEN);
@@ -1868,9 +1868,9 @@ int prestera_hw_rif_delete(struct prestera_switch *sw, u16 rif_id,
 
 int prestera_hw_vr_create(struct prestera_switch *sw, u16 *vr_id)
 {
-       int err;
        struct prestera_msg_vr_resp resp;
        struct prestera_msg_vr_req req;
+       int err;
 
        err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_VR_CREATE,
                               &req.cmd, sizeof(req), &resp.ret, sizeof(resp));
index 8a3b7b6..607b88b 100644 (file)
@@ -25,10 +25,10 @@ static int __prestera_inetaddr_port_event(struct net_device *port_dev,
                                          struct netlink_ext_ack *extack)
 {
        struct prestera_port *port = netdev_priv(port_dev);
-       int err;
-       struct prestera_rif_entry *re;
        struct prestera_rif_entry_key re_key = {};
+       struct prestera_rif_entry *re;
        u32 kern_tb_id;
+       int err;
 
        err = prestera_is_valid_mac_addr(port, port_dev->dev_addr);
        if (err) {
@@ -45,21 +45,21 @@ static int __prestera_inetaddr_port_event(struct net_device *port_dev,
        switch (event) {
        case NETDEV_UP:
                if (re) {
-                       NL_SET_ERR_MSG_MOD(extack, "rif_entry already exist");
+                       NL_SET_ERR_MSG_MOD(extack, "RIF already exist");
                        return -EEXIST;
                }
                re = prestera_rif_entry_create(port->sw, &re_key,
                                               prestera_fix_tb_id(kern_tb_id),
                                               port_dev->dev_addr);
                if (!re) {
-                       NL_SET_ERR_MSG_MOD(extack, "Can't create rif_entry");
+                       NL_SET_ERR_MSG_MOD(extack, "Can't create RIF");
                        return -EINVAL;
                }
                dev_hold(port_dev);
                break;
        case NETDEV_DOWN:
                if (!re) {
-                       NL_SET_ERR_MSG_MOD(extack, "rif_entry not exist");
+                       NL_SET_ERR_MSG_MOD(extack, "Can't find RIF");
                        return -EEXIST;
                }
                prestera_rif_entry_destroy(port->sw, re);
@@ -75,11 +75,11 @@ static int __prestera_inetaddr_event(struct prestera_switch *sw,
                                     unsigned long event,
                                     struct netlink_ext_ack *extack)
 {
-       if (prestera_netdev_check(dev) && !netif_is_bridge_port(dev) &&
-           !netif_is_lag_port(dev) && !netif_is_ovs_port(dev))
-               return __prestera_inetaddr_port_event(dev, event, extack);
+       if (!prestera_netdev_check(dev) || netif_is_bridge_port(dev) ||
+           netif_is_lag_port(dev) || netif_is_ovs_port(dev))
+               return 0;
 
-       return 0;
+       return __prestera_inetaddr_port_event(dev, event, extack);
 }
 
 static int __prestera_inetaddr_cb(struct notifier_block *nb,
@@ -126,6 +126,8 @@ static int __prestera_inetaddr_valid_cb(struct notifier_block *nb,
                goto out;
 
        if (ipv4_is_multicast(ivi->ivi_addr)) {
+               NL_SET_ERR_MSG_MOD(ivi->extack,
+                                  "Multicast addr on RIF is not supported");
                err = -EINVAL;
                goto out;
        }
index d5befd1..490e9b6 100644 (file)
@@ -123,7 +123,7 @@ __prestera_rif_entry_key_copy(const struct prestera_rif_entry_key *in,
                out->iface.vlan_id = in->iface.vlan_id;
                break;
        default:
-               pr_err("Unsupported iface type");
+               WARN(1, "Unsupported iface type");
                return -EINVAL;
        }