net: marvell: prestera: Refactor router functions
* 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>
This commit is contained in:
parent
6a1ba8758f
commit
32d098bb2e
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user