Loading...
// SPDX-License-Identifier: GPL-2.0+ #include "lan966x_main.h" #include "vcap_api_client.h" int lan966x_goto_port_add(struct lan966x_port *port, int from_cid, int to_cid, unsigned long goto_id, struct netlink_ext_ack *extack) { struct lan966x *lan966x = port->lan966x; int err; err = vcap_enable_lookups(lan966x->vcap_ctrl, port->dev, from_cid, to_cid, goto_id, true); if (err == -EFAULT) { NL_SET_ERR_MSG_MOD(extack, "Unsupported goto chain"); return -EOPNOTSUPP; } if (err == -EADDRINUSE) { NL_SET_ERR_MSG_MOD(extack, "VCAP already enabled"); return -EOPNOTSUPP; } if (err) { NL_SET_ERR_MSG_MOD(extack, "Could not enable VCAP lookups"); return err; } return 0; } int lan966x_goto_port_del(struct lan966x_port *port, unsigned long goto_id, struct netlink_ext_ack *extack) { struct lan966x *lan966x = port->lan966x; int err; err = vcap_enable_lookups(lan966x->vcap_ctrl, port->dev, 0, 0, goto_id, false); if (err) { NL_SET_ERR_MSG_MOD(extack, "Could not disable VCAP lookups"); return err; } return 0; } |