brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · 9b18156 Raw
51 lines · c
1// SPDX-License-Identifier: GPL-2.0+2 3#include "lan966x_main.h"4#include "vcap_api_client.h"5 6int lan966x_goto_port_add(struct lan966x_port *port,7			  int from_cid, int to_cid,8			  unsigned long goto_id,9			  struct netlink_ext_ack *extack)10{11	struct lan966x *lan966x = port->lan966x;12	int err;13 14	err = vcap_enable_lookups(lan966x->vcap_ctrl, port->dev,15				  from_cid, to_cid, goto_id,16				  true);17	if (err == -EFAULT) {18		NL_SET_ERR_MSG_MOD(extack, "Unsupported goto chain");19		return -EOPNOTSUPP;20	}21 22	if (err == -EADDRINUSE) {23		NL_SET_ERR_MSG_MOD(extack, "VCAP already enabled");24		return -EOPNOTSUPP;25	}26 27	if (err) {28		NL_SET_ERR_MSG_MOD(extack, "Could not enable VCAP lookups");29		return err;30	}31 32	return 0;33}34 35int lan966x_goto_port_del(struct lan966x_port *port,36			  unsigned long goto_id,37			  struct netlink_ext_ack *extack)38{39	struct lan966x *lan966x = port->lan966x;40	int err;41 42	err = vcap_enable_lookups(lan966x->vcap_ctrl, port->dev, 0, 0,43				  goto_id, false);44	if (err) {45		NL_SET_ERR_MSG_MOD(extack, "Could not disable VCAP lookups");46		return err;47	}48 49	return 0;50}51