2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
11 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
13 * Purpose : RTK switch high-level API for RTL8367/RTL8367C
14 * Feature : Here is a list of all functions and variables in Trap module.
18 #include <rtk_switch.h>
19 #include <rtk_error.h>
23 #include <rtl8367c_asicdrv.h>
24 #include <rtl8367c_asicdrv_port.h>
25 #include <rtl8367c_asicdrv_igmp.h>
26 #include <rtl8367c_asicdrv_rma.h>
27 #include <rtl8367c_asicdrv_eav.h>
28 #include <rtl8367c_asicdrv_oam.h>
29 #include <rtl8367c_asicdrv_svlan.h>
30 #include <rtl8367c_asicdrv_unknownMulticast.h>
31 #include <rtl8367c_asicdrv_dot1x.h>
34 * rtk_trap_unknownUnicastPktAction_set
36 * Set unknown unicast packet action configuration.
38 * port - ingress port ID for unknown unicast packet
39 * ucast_action - Unknown unicast action.
44 * RT_ERR_FAILED - Failed
45 * RT_ERR_SMI - SMI access error
46 * RT_ERR_NOT_ALLOWED - Invalid action.
47 * RT_ERR_INPUT - Invalid input parameters.
49 * This API can set unknown unicast packet action configuration.
50 * The unknown unicast action is as following:
51 * - UCAST_ACTION_FORWARD_PMASK
53 * - UCAST_ACTION_TRAP2CPU
54 * - UCAST_ACTION_FLOODING
56 rtk_api_ret_t
rtk_trap_unknownUnicastPktAction_set(rtk_port_t port
, rtk_trap_ucast_action_t ucast_action
)
60 /* Check initialization state */
63 /* check port valid */
64 RTK_CHK_PORT_VALID(port
);
66 if (ucast_action
>= UCAST_ACTION_END
)
69 if ((retVal
= rtl8367c_setAsicPortUnknownDaBehavior(rtk_switch_port_L2P_get(port
), ucast_action
)) != RT_ERR_OK
)
76 * rtk_trap_unknownUnicastPktAction_get
78 * Get unknown unicast packet action configuration.
80 * port - ingress port ID for unknown unicast packet
82 * pUcast_action - Unknown unicast action.
85 * RT_ERR_FAILED - Failed
86 * RT_ERR_SMI - SMI access error
87 * RT_ERR_NOT_ALLOWED - Invalid action.
88 * RT_ERR_INPUT - Invalid input parameters.
89 * RT_ERR_NULL_POINTER - Null pointer
91 * This API can get unknown unicast packet action configuration.
92 * The unknown unicast action is as following:
93 * - UCAST_ACTION_FORWARD_PMASK
95 * - UCAST_ACTION_TRAP2CPU
96 * - UCAST_ACTION_FLOODING
98 rtk_api_ret_t
rtk_trap_unknownUnicastPktAction_get(rtk_port_t port
, rtk_trap_ucast_action_t
*pUcast_action
)
100 rtk_api_ret_t retVal
;
102 /* Check initialization state */
103 RTK_CHK_INIT_STATE();
105 /* check port valid */
106 RTK_CHK_PORT_VALID(port
);
108 if (NULL
== pUcast_action
)
109 return RT_ERR_NULL_POINTER
;
111 if ((retVal
= rtl8367c_getAsicPortUnknownDaBehavior(rtk_switch_port_L2P_get(port
), pUcast_action
)) != RT_ERR_OK
)
118 * rtk_trap_unknownMacPktAction_set
120 * Set unknown source MAC packet action configuration.
122 * ucast_action - Unknown source MAC action.
127 * RT_ERR_FAILED - Failed
128 * RT_ERR_SMI - SMI access error
129 * RT_ERR_NOT_ALLOWED - Invalid action.
130 * RT_ERR_INPUT - Invalid input parameters.
132 * This API can set unknown unicast packet action configuration.
133 * The unknown unicast action is as following:
134 * - UCAST_ACTION_FORWARD_PMASK
135 * - UCAST_ACTION_DROP
136 * - UCAST_ACTION_TRAP2CPU
138 rtk_api_ret_t
rtk_trap_unknownMacPktAction_set(rtk_trap_ucast_action_t ucast_action
)
140 rtk_api_ret_t retVal
;
142 /* Check initialization state */
143 RTK_CHK_INIT_STATE();
145 if (ucast_action
>= UCAST_ACTION_FLOODING
)
148 if ((retVal
= rtl8367c_setAsicPortUnknownSaBehavior(ucast_action
)) != RT_ERR_OK
)
155 * rtk_trap_unknownMacPktAction_get
157 * Get unknown source MAC packet action configuration.
161 * pUcast_action - Unknown source MAC action.
164 * RT_ERR_FAILED - Failed
165 * RT_ERR_SMI - SMI access error
166 * RT_ERR_NULL_POINTER - Null Pointer.
167 * RT_ERR_INPUT - Invalid input parameters.
171 rtk_api_ret_t
rtk_trap_unknownMacPktAction_get(rtk_trap_ucast_action_t
*pUcast_action
)
173 rtk_api_ret_t retVal
;
175 /* Check initialization state */
176 RTK_CHK_INIT_STATE();
178 if(NULL
== pUcast_action
)
179 return RT_ERR_NULL_POINTER
;
181 if ((retVal
= rtl8367c_getAsicPortUnknownSaBehavior(pUcast_action
)) != RT_ERR_OK
)
188 * rtk_trap_unmatchMacPktAction_set
190 * Set unmatch source MAC packet action configuration.
192 * ucast_action - Unknown source MAC action.
197 * RT_ERR_FAILED - Failed
198 * RT_ERR_SMI - SMI access error
199 * RT_ERR_NOT_ALLOWED - Invalid action.
200 * RT_ERR_INPUT - Invalid input parameters.
202 * This API can set unknown unicast packet action configuration.
203 * The unknown unicast action is as following:
204 * - UCAST_ACTION_FORWARD_PMASK
205 * - UCAST_ACTION_DROP
206 * - UCAST_ACTION_TRAP2CPU
208 rtk_api_ret_t
rtk_trap_unmatchMacPktAction_set(rtk_trap_ucast_action_t ucast_action
)
210 rtk_api_ret_t retVal
;
212 /* Check initialization state */
213 RTK_CHK_INIT_STATE();
215 if (ucast_action
>= UCAST_ACTION_FLOODING
)
218 if ((retVal
= rtl8367c_setAsicPortUnmatchedSaBehavior(ucast_action
)) != RT_ERR_OK
)
225 * rtk_trap_unmatchMacPktAction_get
227 * Get unmatch source MAC packet action configuration.
231 * pUcast_action - Unknown source MAC action.
234 * RT_ERR_FAILED - Failed
235 * RT_ERR_SMI - SMI access error
236 * RT_ERR_NOT_ALLOWED - Invalid action.
237 * RT_ERR_INPUT - Invalid input parameters.
239 * This API can set unknown unicast packet action configuration.
240 * The unknown unicast action is as following:
241 * - UCAST_ACTION_FORWARD_PMASK
242 * - UCAST_ACTION_DROP
243 * - UCAST_ACTION_TRAP2CPU
245 rtk_api_ret_t
rtk_trap_unmatchMacPktAction_get(rtk_trap_ucast_action_t
*pUcast_action
)
247 rtk_api_ret_t retVal
;
249 /* Check initialization state */
250 RTK_CHK_INIT_STATE();
252 if(NULL
== pUcast_action
)
253 return RT_ERR_NULL_POINTER
;
255 if ((retVal
= rtl8367c_getAsicPortUnmatchedSaBehavior(pUcast_action
)) != RT_ERR_OK
)
262 * rtk_trap_unmatchMacMoving_set
264 * Set unmatch source MAC packet moving state.
267 * enable - ENABLED: allow SA moving, DISABLE: don't allow SA moving.
272 * RT_ERR_FAILED - Failed
273 * RT_ERR_SMI - SMI access error
274 * RT_ERR_NOT_ALLOWED - Invalid action.
275 * RT_ERR_INPUT - Invalid input parameters.
278 rtk_api_ret_t
rtk_trap_unmatchMacMoving_set(rtk_port_t port
, rtk_enable_t enable
)
280 rtk_api_ret_t retVal
;
282 /* Check initialization state */
283 RTK_CHK_INIT_STATE();
285 /* check port valid */
286 RTK_CHK_PORT_VALID(port
);
288 if(enable
>= RTK_ENABLE_END
)
291 if ((retVal
= rtl8367c_setAsicPortUnmatchedSaMoving(rtk_switch_port_L2P_get(port
), enable
)) != RT_ERR_OK
)
298 * rtk_trap_unmatchMacMoving_get
300 * Set unmatch source MAC packet moving state.
304 * pEnable - ENABLED: allow SA moving, DISABLE: don't allow SA moving.
307 * RT_ERR_FAILED - Failed
308 * RT_ERR_SMI - SMI access error
309 * RT_ERR_NOT_ALLOWED - Invalid action.
310 * RT_ERR_INPUT - Invalid input parameters.
313 rtk_api_ret_t
rtk_trap_unmatchMacMoving_get(rtk_port_t port
, rtk_enable_t
*pEnable
)
315 rtk_api_ret_t retVal
;
317 /* Check initialization state */
318 RTK_CHK_INIT_STATE();
320 /* check port valid */
321 RTK_CHK_PORT_VALID(port
);
324 return RT_ERR_NULL_POINTER
;
326 if ((retVal
= rtl8367c_getAsicPortUnmatchedSaMoving(rtk_switch_port_L2P_get(port
), pEnable
)) != RT_ERR_OK
)
333 * rtk_trap_unknownMcastPktAction_set
335 * Set behavior of unknown multicast
338 * type - unknown multicast packet type.
339 * mcast_action - unknown multicast action.
344 * RT_ERR_FAILED - Failed
345 * RT_ERR_SMI - SMI access error
346 * RT_ERR_PORT_ID - Invalid port number.
347 * RT_ERR_NOT_ALLOWED - Invalid action.
348 * RT_ERR_INPUT - Invalid input parameters.
350 * When receives an unknown multicast packet, switch may trap, drop or flood this packet
351 * (1) The unknown multicast packet type is as following:
355 * (2) The unknown multicast action is as following:
356 * - MCAST_ACTION_FORWARD
357 * - MCAST_ACTION_DROP
358 * - MCAST_ACTION_TRAP2CPU
360 rtk_api_ret_t
rtk_trap_unknownMcastPktAction_set(rtk_port_t port
, rtk_mcast_type_t type
, rtk_trap_mcast_action_t mcast_action
)
362 rtk_api_ret_t retVal
;
363 rtk_uint32 rawAction
;
365 /* Check initialization state */
366 RTK_CHK_INIT_STATE();
368 /* Check Port Valid */
369 RTK_CHK_PORT_VALID(port
);
371 if (type
>= MCAST_END
)
374 if (mcast_action
>= MCAST_ACTION_END
)
381 if (MCAST_ACTION_ROUTER_PORT
== mcast_action
)
383 else if(MCAST_ACTION_DROP_EX_RMA
== mcast_action
)
384 rawAction
= L2_UNKOWN_MULTICAST_DROP_EXCLUDE_RMA
;
386 rawAction
= (rtk_uint32
)mcast_action
;
388 if ((retVal
= rtl8367c_setAsicUnknownL2MulticastBehavior(rtk_switch_port_L2P_get(port
), rawAction
)) != RT_ERR_OK
)
393 if (MCAST_ACTION_DROP_EX_RMA
== mcast_action
)
396 rawAction
= (rtk_uint32
)mcast_action
;
398 if ((retVal
= rtl8367c_setAsicUnknownIPv4MulticastBehavior(rtk_switch_port_L2P_get(port
), rawAction
)) != RT_ERR_OK
)
403 if (MCAST_ACTION_DROP_EX_RMA
== mcast_action
)
406 rawAction
= (rtk_uint32
)mcast_action
;
408 if ((retVal
= rtl8367c_setAsicUnknownIPv6MulticastBehavior(rtk_switch_port_L2P_get(port
), rawAction
)) != RT_ERR_OK
)
420 * rtk_trap_unknownMcastPktAction_get
422 * Get behavior of unknown multicast
424 * type - unknown multicast packet type.
426 * pMcast_action - unknown multicast action.
429 * RT_ERR_FAILED - Failed
430 * RT_ERR_SMI - SMI access error
431 * RT_ERR_PORT_ID - Invalid port number.
432 * RT_ERR_NOT_ALLOWED - Invalid operation.
433 * RT_ERR_INPUT - Invalid input parameters.
435 * When receives an unknown multicast packet, switch may trap, drop or flood this packet
436 * (1) The unknown multicast packet type is as following:
440 * (2) The unknown multicast action is as following:
441 * - MCAST_ACTION_FORWARD
442 * - MCAST_ACTION_DROP
443 * - MCAST_ACTION_TRAP2CPU
445 rtk_api_ret_t
rtk_trap_unknownMcastPktAction_get(rtk_port_t port
, rtk_mcast_type_t type
, rtk_trap_mcast_action_t
*pMcast_action
)
447 rtk_api_ret_t retVal
;
448 rtk_uint32 rawAction
;
450 /* Check initialization state */
451 RTK_CHK_INIT_STATE();
453 /* Check Port Valid */
454 RTK_CHK_PORT_VALID(port
);
456 if (type
>= MCAST_END
)
459 if(NULL
== pMcast_action
)
460 return RT_ERR_NULL_POINTER
;
465 if ((retVal
= rtl8367c_getAsicUnknownL2MulticastBehavior(rtk_switch_port_L2P_get(port
), &rawAction
)) != RT_ERR_OK
)
468 if(L2_UNKOWN_MULTICAST_DROP_EXCLUDE_RMA
== rawAction
)
469 *pMcast_action
= MCAST_ACTION_DROP_EX_RMA
;
471 *pMcast_action
= (rtk_trap_mcast_action_t
)rawAction
;
475 if ((retVal
= rtl8367c_getAsicUnknownIPv4MulticastBehavior(rtk_switch_port_L2P_get(port
), &rawAction
)) != RT_ERR_OK
)
478 *pMcast_action
= (rtk_trap_mcast_action_t
)rawAction
;
481 if ((retVal
= rtl8367c_getAsicUnknownIPv6MulticastBehavior(rtk_switch_port_L2P_get(port
), &rawAction
)) != RT_ERR_OK
)
484 *pMcast_action
= (rtk_trap_mcast_action_t
)rawAction
;
494 * rtk_trap_lldpEnable_set
498 * enabled - LLDP enable, 0: follow RMA, 1: use LLDP action.
503 * RT_ERR_FAILED - Failed
504 * RT_ERR_SMI - SMI access error
505 * RT_ERR_NOT_ALLOWED - Invalid action.
506 * RT_ERR_INPUT - Invalid input parameters.
509 * - 01:80:c2:00:00:0e ethertype = 0x88CC LLDP
510 * - 01:80:c2:00:00:03 ethertype = 0x88CC
511 * - 01:80:c2:00:00:00 ethertype = 0x88CC
514 rtk_api_ret_t
rtk_trap_lldpEnable_set(rtk_enable_t enabled
)
516 rtk_api_ret_t retVal
;
517 rtl8367c_rma_t rmacfg
;
520 /* Check initialization state */
521 RTK_CHK_INIT_STATE();
523 if (enabled
>= RTK_ENABLE_END
)
524 return RT_ERR_ENABLE
;
526 if ((retVal
= rtl8367c_getAsicRmaLldp(&tmp
, &rmacfg
)) != RT_ERR_OK
)
529 if ((retVal
= rtl8367c_setAsicRmaLldp(enabled
, &rmacfg
)) != RT_ERR_OK
)
536 * rtk_trap_lldpEnable_get
542 * pEnabled - LLDP enable, 0: follow RMA, 1: use LLDP action.
545 * RT_ERR_FAILED - Failed
546 * RT_ERR_SMI - SMI access error
547 * RT_ERR_INPUT - Invalid input parameters.
549 * LLDP is as following definition.
551 * - 01:80:c2:00:00:0e ethertype = 0x88CC LLDP
552 * - 01:80:c2:00:00:03 ethertype = 0x88CC
553 * - 01:80:c2:00:00:00 ethertype = 0x88CC
555 rtk_api_ret_t
rtk_trap_lldpEnable_get(rtk_enable_t
*pEnabled
)
557 rtk_api_ret_t retVal
;
558 rtl8367c_rma_t rmacfg
;
560 /* Check initialization state */
561 RTK_CHK_INIT_STATE();
564 return RT_ERR_NULL_POINTER
;
566 if ((retVal
= rtl8367c_getAsicRmaLldp(pEnabled
, &rmacfg
)) != RT_ERR_OK
)
573 * rtk_trap_reasonTrapToCpuPriority_set
575 * Set priority value of a packet that trapped to CPU port according to specific reason.
577 * type - reason that trap to CPU port.
578 * priority - internal priority that is going to be set for specific trap reason.
584 * RT_ERR_NOT_INIT - The module is not initial
585 * RT_ERR_INPUT - Invalid input parameter
587 * Currently the trap reason that supported are listed as follows:
590 * - TRAP_REASON_1XUNAUTH
591 * - TRAP_REASON_VLANSTACK
592 * - TRAP_REASON_UNKNOWNMC
594 rtk_api_ret_t
rtk_trap_reasonTrapToCpuPriority_set(rtk_trap_reason_type_t type
, rtk_pri_t priority
)
596 rtk_api_ret_t retVal
;
597 rtl8367c_rma_t rmacfg
;
599 /* Check initialization state */
600 RTK_CHK_INIT_STATE();
602 if (type
>= TRAP_REASON_END
)
605 if (priority
> RTL8367C_PRIMAX
)
606 return RT_ERR_QOS_INT_PRIORITY
;
610 case TRAP_REASON_RMA
:
611 if ((retVal
= rtl8367c_getAsicRma(0, &rmacfg
)) != RT_ERR_OK
)
613 rmacfg
.trap_priority
= priority
;
614 if ((retVal
= rtl8367c_setAsicRma(0, &rmacfg
)) != RT_ERR_OK
)
618 case TRAP_REASON_OAM
:
619 if ((retVal
= rtl8367c_setAsicOamCpuPri(priority
)) != RT_ERR_OK
)
623 case TRAP_REASON_1XUNAUTH
:
624 if ((retVal
= rtl8367c_setAsic1xTrapPriority(priority
)) != RT_ERR_OK
)
628 case TRAP_REASON_VLANSTACK
:
629 if ((retVal
= rtl8367c_setAsicSvlanTrapPriority(priority
)) != RT_ERR_OK
)
633 case TRAP_REASON_UNKNOWNMC
:
634 if ((retVal
= rtl8367c_setAsicUnknownMulticastTrapPriority(priority
)) != RT_ERR_OK
)
639 return RT_ERR_CHIP_NOT_SUPPORTED
;
648 * rtk_trap_reasonTrapToCpuPriority_get
650 * Get priority value of a packet that trapped to CPU port according to specific reason.
652 * type - reason that trap to CPU port.
654 * pPriority - configured internal priority for such reason.
658 * RT_ERR_NOT_INIT - The module is not initial
659 * RT_ERR_INPUT - Invalid input parameter
660 * RT_ERR_NULL_POINTER - NULL pointer
662 * Currently the trap reason that supported are listed as follows:
665 * - TRAP_REASON_1XUNAUTH
666 * - TRAP_REASON_VLANSTACK
667 * - TRAP_REASON_UNKNOWNMC
669 rtk_api_ret_t
rtk_trap_reasonTrapToCpuPriority_get(rtk_trap_reason_type_t type
, rtk_pri_t
*pPriority
)
671 rtk_api_ret_t retVal
;
672 rtl8367c_rma_t rmacfg
;
674 /* Check initialization state */
675 RTK_CHK_INIT_STATE();
677 if (type
>= TRAP_REASON_END
)
680 if(NULL
== pPriority
)
681 return RT_ERR_NULL_POINTER
;
685 case TRAP_REASON_RMA
:
686 if ((retVal
= rtl8367c_getAsicRma(0, &rmacfg
)) != RT_ERR_OK
)
688 *pPriority
= rmacfg
.trap_priority
;
691 case TRAP_REASON_OAM
:
692 if ((retVal
= rtl8367c_getAsicOamCpuPri(pPriority
)) != RT_ERR_OK
)
696 case TRAP_REASON_1XUNAUTH
:
697 if ((retVal
= rtl8367c_getAsic1xTrapPriority(pPriority
)) != RT_ERR_OK
)
701 case TRAP_REASON_VLANSTACK
:
702 if ((retVal
= rtl8367c_getAsicSvlanTrapPriority(pPriority
)) != RT_ERR_OK
)
706 case TRAP_REASON_UNKNOWNMC
:
707 if ((retVal
= rtl8367c_getAsicUnknownMulticastTrapPriority(pPriority
)) != RT_ERR_OK
)
712 return RT_ERR_CHIP_NOT_SUPPORTED
;
722 * rtk_trap_rmaAction_set
724 * Set Reserved multicast address action configuration.
727 * rma_action - RMA action.
732 * RT_ERR_FAILED - Failed
733 * RT_ERR_SMI - SMI access error
734 * RT_ERR_INPUT - Invalid input parameters.
737 * There are 48 types of Reserved Multicast Address frame for application usage.
738 * (1)They are as following definition.
743 * - TRAP_UNDEF_BRG_04,
744 * - TRAP_UNDEF_BRG_05,
745 * - TRAP_UNDEF_BRG_06,
746 * - TRAP_UNDEF_BRG_07,
747 * - TRAP_PROVIDER_BRIDGE_GROUP_ADDRESS,
748 * - TRAP_UNDEF_BRG_09,
749 * - TRAP_UNDEF_BRG_0A,
750 * - TRAP_UNDEF_BRG_0B,
751 * - TRAP_UNDEF_BRG_0C,
752 * - TRAP_PROVIDER_BRIDGE_GVRP_ADDRESS,
754 * - TRAP_UNDEF_BRG_0F,
755 * - TRAP_BRG_MNGEMENT,
756 * - TRAP_UNDEFINED_11,
757 * - TRAP_UNDEFINED_12,
758 * - TRAP_UNDEFINED_13,
759 * - TRAP_UNDEFINED_14,
760 * - TRAP_UNDEFINED_15,
761 * - TRAP_UNDEFINED_16,
762 * - TRAP_UNDEFINED_17,
763 * - TRAP_UNDEFINED_18,
764 * - TRAP_UNDEFINED_19,
765 * - TRAP_UNDEFINED_1A,
766 * - TRAP_UNDEFINED_1B,
767 * - TRAP_UNDEFINED_1C,
768 * - TRAP_UNDEFINED_1D,
769 * - TRAP_UNDEFINED_1E,
770 * - TRAP_UNDEFINED_1F,
773 * - TRAP_UNDEF_GARP_22,
774 * - TRAP_UNDEF_GARP_23,
775 * - TRAP_UNDEF_GARP_24,
776 * - TRAP_UNDEF_GARP_25,
777 * - TRAP_UNDEF_GARP_26,
778 * - TRAP_UNDEF_GARP_27,
779 * - TRAP_UNDEF_GARP_28,
780 * - TRAP_UNDEF_GARP_29,
781 * - TRAP_UNDEF_GARP_2A,
782 * - TRAP_UNDEF_GARP_2B,
783 * - TRAP_UNDEF_GARP_2C,
784 * - TRAP_UNDEF_GARP_2D,
785 * - TRAP_UNDEF_GARP_2E,
786 * - TRAP_UNDEF_GARP_2F,
790 * (2) The RMA action is as following:
791 * - RMA_ACTION_FORWARD
792 * - RMA_ACTION_TRAP2CPU
794 * - RMA_ACTION_FORWARD_EXCLUDE_CPU
796 rtk_api_ret_t
rtk_trap_rmaAction_set(rtk_trap_type_t type
, rtk_trap_rma_action_t rma_action
)
798 rtk_api_ret_t retVal
;
799 rtl8367c_rma_t rmacfg
;
802 /* Check initialization state */
803 RTK_CHK_INIT_STATE();
805 if (type
>= TRAP_END
)
808 if (rma_action
>= RMA_ACTION_END
)
809 return RT_ERR_RMA_ACTION
;
811 if (type
>= 0 && type
<= TRAP_UNDEF_GARP_2F
)
813 if ((retVal
= rtl8367c_getAsicRma(type
, &rmacfg
)) != RT_ERR_OK
)
816 rmacfg
.operation
= rma_action
;
818 if ((retVal
= rtl8367c_setAsicRma(type
, &rmacfg
)) != RT_ERR_OK
)
821 else if (type
== TRAP_CDP
)
823 if ((retVal
= rtl8367c_getAsicRmaCdp(&rmacfg
)) != RT_ERR_OK
)
826 rmacfg
.operation
= rma_action
;
828 if ((retVal
= rtl8367c_setAsicRmaCdp(&rmacfg
)) != RT_ERR_OK
)
831 else if (type
== TRAP_CSSTP
)
833 if ((retVal
= rtl8367c_getAsicRmaCsstp(&rmacfg
)) != RT_ERR_OK
)
836 rmacfg
.operation
= rma_action
;
838 if ((retVal
= rtl8367c_setAsicRmaCsstp(&rmacfg
)) != RT_ERR_OK
)
841 else if (type
== TRAP_LLDP
)
843 if ((retVal
= rtl8367c_getAsicRmaLldp(&tmp
, &rmacfg
)) != RT_ERR_OK
)
846 rmacfg
.operation
= rma_action
;
848 if ((retVal
= rtl8367c_setAsicRmaLldp(tmp
, &rmacfg
)) != RT_ERR_OK
)
858 * rtk_trap_rmaAction_get
860 * Get Reserved multicast address action configuration.
864 * pRma_action - RMA action.
867 * RT_ERR_FAILED - Failed
868 * RT_ERR_SMI - SMI access error
869 * RT_ERR_INPUT - Invalid input parameters.
871 * There are 48 types of Reserved Multicast Address frame for application usage.
872 * (1)They are as following definition.
877 * - TRAP_UNDEF_BRG_04,
878 * - TRAP_UNDEF_BRG_05,
879 * - TRAP_UNDEF_BRG_06,
880 * - TRAP_UNDEF_BRG_07,
881 * - TRAP_PROVIDER_BRIDGE_GROUP_ADDRESS,
882 * - TRAP_UNDEF_BRG_09,
883 * - TRAP_UNDEF_BRG_0A,
884 * - TRAP_UNDEF_BRG_0B,
885 * - TRAP_UNDEF_BRG_0C,
886 * - TRAP_PROVIDER_BRIDGE_GVRP_ADDRESS,
888 * - TRAP_UNDEF_BRG_0F,
889 * - TRAP_BRG_MNGEMENT,
890 * - TRAP_UNDEFINED_11,
891 * - TRAP_UNDEFINED_12,
892 * - TRAP_UNDEFINED_13,
893 * - TRAP_UNDEFINED_14,
894 * - TRAP_UNDEFINED_15,
895 * - TRAP_UNDEFINED_16,
896 * - TRAP_UNDEFINED_17,
897 * - TRAP_UNDEFINED_18,
898 * - TRAP_UNDEFINED_19,
899 * - TRAP_UNDEFINED_1A,
900 * - TRAP_UNDEFINED_1B,
901 * - TRAP_UNDEFINED_1C,
902 * - TRAP_UNDEFINED_1D,
903 * - TRAP_UNDEFINED_1E,
904 * - TRAP_UNDEFINED_1F,
907 * - TRAP_UNDEF_GARP_22,
908 * - TRAP_UNDEF_GARP_23,
909 * - TRAP_UNDEF_GARP_24,
910 * - TRAP_UNDEF_GARP_25,
911 * - TRAP_UNDEF_GARP_26,
912 * - TRAP_UNDEF_GARP_27,
913 * - TRAP_UNDEF_GARP_28,
914 * - TRAP_UNDEF_GARP_29,
915 * - TRAP_UNDEF_GARP_2A,
916 * - TRAP_UNDEF_GARP_2B,
917 * - TRAP_UNDEF_GARP_2C,
918 * - TRAP_UNDEF_GARP_2D,
919 * - TRAP_UNDEF_GARP_2E,
920 * - TRAP_UNDEF_GARP_2F,
924 * (2) The RMA action is as following:
925 * - RMA_ACTION_FORWARD
926 * - RMA_ACTION_TRAP2CPU
928 * - RMA_ACTION_FORWARD_EXCLUDE_CPU
930 rtk_api_ret_t
rtk_trap_rmaAction_get(rtk_trap_type_t type
, rtk_trap_rma_action_t
*pRma_action
)
932 rtk_api_ret_t retVal
;
933 rtl8367c_rma_t rmacfg
;
936 /* Check initialization state */
937 RTK_CHK_INIT_STATE();
939 if (type
>= TRAP_END
)
942 if(NULL
== pRma_action
)
943 return RT_ERR_NULL_POINTER
;
945 if (type
>= 0 && type
<= TRAP_UNDEF_GARP_2F
)
947 if ((retVal
= rtl8367c_getAsicRma(type
, &rmacfg
)) != RT_ERR_OK
)
950 *pRma_action
= rmacfg
.operation
;
952 else if (type
== TRAP_CDP
)
954 if ((retVal
= rtl8367c_getAsicRmaCdp(&rmacfg
)) != RT_ERR_OK
)
957 *pRma_action
= rmacfg
.operation
;
959 else if (type
== TRAP_CSSTP
)
961 if ((retVal
= rtl8367c_getAsicRmaCsstp(&rmacfg
)) != RT_ERR_OK
)
964 *pRma_action
= rmacfg
.operation
;
966 else if (type
== TRAP_LLDP
)
968 if ((retVal
= rtl8367c_getAsicRmaLldp(&tmp
,&rmacfg
)) != RT_ERR_OK
)
971 *pRma_action
= rmacfg
.operation
;
980 * rtk_trap_rmaKeepFormat_set
982 * Set Reserved multicast address keep format configuration.
985 * enable - enable keep format.
990 * RT_ERR_FAILED - Failed
991 * RT_ERR_SMI - SMI access error
992 * RT_ERR_INPUT - Invalid input parameters.
993 * RT_ERR_ENABLE - Invalid IFG parameter
996 * There are 48 types of Reserved Multicast Address frame for application usage.
997 * They are as following definition.
1002 * - TRAP_UNDEF_BRG_04,
1003 * - TRAP_UNDEF_BRG_05,
1004 * - TRAP_UNDEF_BRG_06,
1005 * - TRAP_UNDEF_BRG_07,
1006 * - TRAP_PROVIDER_BRIDGE_GROUP_ADDRESS,
1007 * - TRAP_UNDEF_BRG_09,
1008 * - TRAP_UNDEF_BRG_0A,
1009 * - TRAP_UNDEF_BRG_0B,
1010 * - TRAP_UNDEF_BRG_0C,
1011 * - TRAP_PROVIDER_BRIDGE_GVRP_ADDRESS,
1013 * - TRAP_UNDEF_BRG_0F,
1014 * - TRAP_BRG_MNGEMENT,
1015 * - TRAP_UNDEFINED_11,
1016 * - TRAP_UNDEFINED_12,
1017 * - TRAP_UNDEFINED_13,
1018 * - TRAP_UNDEFINED_14,
1019 * - TRAP_UNDEFINED_15,
1020 * - TRAP_UNDEFINED_16,
1021 * - TRAP_UNDEFINED_17,
1022 * - TRAP_UNDEFINED_18,
1023 * - TRAP_UNDEFINED_19,
1024 * - TRAP_UNDEFINED_1A,
1025 * - TRAP_UNDEFINED_1B,
1026 * - TRAP_UNDEFINED_1C,
1027 * - TRAP_UNDEFINED_1D,
1028 * - TRAP_UNDEFINED_1E,
1029 * - TRAP_UNDEFINED_1F,
1032 * - TRAP_UNDEF_GARP_22,
1033 * - TRAP_UNDEF_GARP_23,
1034 * - TRAP_UNDEF_GARP_24,
1035 * - TRAP_UNDEF_GARP_25,
1036 * - TRAP_UNDEF_GARP_26,
1037 * - TRAP_UNDEF_GARP_27,
1038 * - TRAP_UNDEF_GARP_28,
1039 * - TRAP_UNDEF_GARP_29,
1040 * - TRAP_UNDEF_GARP_2A,
1041 * - TRAP_UNDEF_GARP_2B,
1042 * - TRAP_UNDEF_GARP_2C,
1043 * - TRAP_UNDEF_GARP_2D,
1044 * - TRAP_UNDEF_GARP_2E,
1045 * - TRAP_UNDEF_GARP_2F,
1050 rtk_api_ret_t
rtk_trap_rmaKeepFormat_set(rtk_trap_type_t type
, rtk_enable_t enable
)
1052 rtk_api_ret_t retVal
;
1053 rtl8367c_rma_t rmacfg
;
1056 /* Check initialization state */
1057 RTK_CHK_INIT_STATE();
1059 if (type
>= TRAP_END
)
1060 return RT_ERR_INPUT
;
1062 if (enable
>= RTK_ENABLE_END
)
1063 return RT_ERR_INPUT
;
1065 if (type
>= 0 && type
<= TRAP_UNDEF_GARP_2F
)
1067 if ((retVal
= rtl8367c_getAsicRma(type
, &rmacfg
)) != RT_ERR_OK
)
1070 rmacfg
.keep_format
= enable
;
1072 if ((retVal
= rtl8367c_setAsicRma(type
, &rmacfg
)) != RT_ERR_OK
)
1075 else if (type
== TRAP_CDP
)
1077 if ((retVal
= rtl8367c_getAsicRmaCdp(&rmacfg
)) != RT_ERR_OK
)
1080 rmacfg
.keep_format
= enable
;
1082 if ((retVal
= rtl8367c_setAsicRmaCdp(&rmacfg
)) != RT_ERR_OK
)
1085 else if (type
== TRAP_CSSTP
)
1087 if ((retVal
= rtl8367c_getAsicRmaCsstp(&rmacfg
)) != RT_ERR_OK
)
1090 rmacfg
.keep_format
= enable
;
1092 if ((retVal
= rtl8367c_setAsicRmaCsstp(&rmacfg
)) != RT_ERR_OK
)
1095 else if (type
== TRAP_LLDP
)
1097 if ((retVal
= rtl8367c_getAsicRmaLldp(&tmp
, &rmacfg
)) != RT_ERR_OK
)
1100 rmacfg
.keep_format
= enable
;
1102 if ((retVal
= rtl8367c_setAsicRmaLldp(tmp
, &rmacfg
)) != RT_ERR_OK
)
1106 return RT_ERR_INPUT
;
1112 * rtk_trap_rmaKeepFormat_get
1114 * Get Reserved multicast address action configuration.
1118 * pEnable - keep format status.
1121 * RT_ERR_FAILED - Failed
1122 * RT_ERR_SMI - SMI access error
1123 * RT_ERR_INPUT - Invalid input parameters.
1125 * There are 48 types of Reserved Multicast Address frame for application usage.
1126 * They are as following definition.
1131 * - TRAP_UNDEF_BRG_04,
1132 * - TRAP_UNDEF_BRG_05,
1133 * - TRAP_UNDEF_BRG_06,
1134 * - TRAP_UNDEF_BRG_07,
1135 * - TRAP_PROVIDER_BRIDGE_GROUP_ADDRESS,
1136 * - TRAP_UNDEF_BRG_09,
1137 * - TRAP_UNDEF_BRG_0A,
1138 * - TRAP_UNDEF_BRG_0B,
1139 * - TRAP_UNDEF_BRG_0C,
1140 * - TRAP_PROVIDER_BRIDGE_GVRP_ADDRESS,
1142 * - TRAP_UNDEF_BRG_0F,
1143 * - TRAP_BRG_MNGEMENT,
1144 * - TRAP_UNDEFINED_11,
1145 * - TRAP_UNDEFINED_12,
1146 * - TRAP_UNDEFINED_13,
1147 * - TRAP_UNDEFINED_14,
1148 * - TRAP_UNDEFINED_15,
1149 * - TRAP_UNDEFINED_16,
1150 * - TRAP_UNDEFINED_17,
1151 * - TRAP_UNDEFINED_18,
1152 * - TRAP_UNDEFINED_19,
1153 * - TRAP_UNDEFINED_1A,
1154 * - TRAP_UNDEFINED_1B,
1155 * - TRAP_UNDEFINED_1C,
1156 * - TRAP_UNDEFINED_1D,
1157 * - TRAP_UNDEFINED_1E,
1158 * - TRAP_UNDEFINED_1F,
1161 * - TRAP_UNDEF_GARP_22,
1162 * - TRAP_UNDEF_GARP_23,
1163 * - TRAP_UNDEF_GARP_24,
1164 * - TRAP_UNDEF_GARP_25,
1165 * - TRAP_UNDEF_GARP_26,
1166 * - TRAP_UNDEF_GARP_27,
1167 * - TRAP_UNDEF_GARP_28,
1168 * - TRAP_UNDEF_GARP_29,
1169 * - TRAP_UNDEF_GARP_2A,
1170 * - TRAP_UNDEF_GARP_2B,
1171 * - TRAP_UNDEF_GARP_2C,
1172 * - TRAP_UNDEF_GARP_2D,
1173 * - TRAP_UNDEF_GARP_2E,
1174 * - TRAP_UNDEF_GARP_2F,
1179 rtk_api_ret_t
rtk_trap_rmaKeepFormat_get(rtk_trap_type_t type
, rtk_enable_t
*pEnable
)
1181 rtk_api_ret_t retVal
;
1182 rtl8367c_rma_t rmacfg
;
1185 /* Check initialization state */
1186 RTK_CHK_INIT_STATE();
1188 if (type
>= TRAP_END
)
1189 return RT_ERR_INPUT
;
1192 return RT_ERR_NULL_POINTER
;
1194 if (type
>= 0 && type
<= TRAP_UNDEF_GARP_2F
)
1196 if ((retVal
= rtl8367c_getAsicRma(type
, &rmacfg
)) != RT_ERR_OK
)
1199 *pEnable
= rmacfg
.keep_format
;
1201 else if (type
== TRAP_CDP
)
1203 if ((retVal
= rtl8367c_getAsicRmaCdp(&rmacfg
)) != RT_ERR_OK
)
1206 *pEnable
= rmacfg
.keep_format
;
1208 else if (type
== TRAP_CSSTP
)
1210 if ((retVal
= rtl8367c_getAsicRmaCsstp(&rmacfg
)) != RT_ERR_OK
)
1213 *pEnable
= rmacfg
.keep_format
;
1215 else if (type
== TRAP_LLDP
)
1217 if ((retVal
= rtl8367c_getAsicRmaLldp(&tmp
,&rmacfg
)) != RT_ERR_OK
)
1220 *pEnable
= rmacfg
.keep_format
;
1223 return RT_ERR_INPUT
;