diff options
Diffstat (limited to 'net/dsa/user.c')
| -rw-r--r-- | net/dsa/user.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/net/dsa/user.c b/net/dsa/user.c index 74eda9b30608..64f660d2334b 100644 --- a/net/dsa/user.c +++ b/net/dsa/user.c @@ -1392,6 +1392,14 @@ dsa_user_add_cls_matchall_mirred(struct net_device *dev,  	if (!dsa_user_dev_check(act->dev))  		return -EOPNOTSUPP; +	to_dp = dsa_user_to_port(act->dev); + +	if (dp->ds != to_dp->ds) { +		NL_SET_ERR_MSG_MOD(extack, +				   "Cross-chip mirroring not implemented"); +		return -EOPNOTSUPP; +	} +  	mall_tc_entry = kzalloc(sizeof(*mall_tc_entry), GFP_KERNEL);  	if (!mall_tc_entry)  		return -ENOMEM; @@ -1399,9 +1407,6 @@ dsa_user_add_cls_matchall_mirred(struct net_device *dev,  	mall_tc_entry->cookie = cls->cookie;  	mall_tc_entry->type = DSA_PORT_MALL_MIRROR;  	mirror = &mall_tc_entry->mirror; - -	to_dp = dsa_user_to_port(act->dev); -  	mirror->to_local_port = to_dp->index;  	mirror->ingress = ingress;  | 
