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 : RTL8367C switch high-level API for RTL8367C
14 * Feature : Storm control filtering related functions
18 #include <rtl8367c_asicdrv_storm.h>
20 * rtl8367c_setAsicStormFilterBroadcastEnable
22 * Set per-port broadcast storm filter enable/disable
24 * port - Physical port number (0~7)
25 * enabled - 1: enabled, 0: disabled
30 * RT_ERR_SMI - SMI access error
31 * RT_ERR_PORT_ID - Invalid port number
35 ret_t
rtl8367c_setAsicStormFilterBroadcastEnable(rtk_uint32 port
, rtk_uint32 enabled
)
37 if(port
>= RTL8367C_PORTNO
)
38 return RT_ERR_PORT_ID
;
40 return rtl8367c_setAsicRegBit(RTL8367C_STORM_BCAST_REG
, port
, enabled
);
43 * rtl8367c_getAsicStormFilterBroadcastEnable
45 * Get per-port broadcast storm filter enable/disable
47 * port - Physical port number (0~7)
48 * pEnabled - 1: enabled, 0: disabled
53 * RT_ERR_SMI - SMI access error
54 * RT_ERR_PORT_ID - Invalid port number
58 ret_t
rtl8367c_getAsicStormFilterBroadcastEnable(rtk_uint32 port
, rtk_uint32
*pEnabled
)
60 if(port
>= RTL8367C_PORTNO
)
61 return RT_ERR_PORT_ID
;
63 return rtl8367c_getAsicRegBit(RTL8367C_STORM_BCAST_REG
, port
, pEnabled
);
66 * rtl8367c_setAsicStormFilterBroadcastMeter
68 * Set per-port broadcast storm filter meter
70 * port - Physical port number (0~7)
71 * meter - meter index (0~31)
76 * RT_ERR_SMI - SMI access error
77 * RT_ERR_PORT_ID - Invalid port number
78 * RT_ERR_FILTER_METER_ID - Invalid meter index
82 ret_t
rtl8367c_setAsicStormFilterBroadcastMeter(rtk_uint32 port
, rtk_uint32 meter
)
84 if(port
>= RTL8367C_PORTNO
)
85 return RT_ERR_PORT_ID
;
87 if(meter
> RTL8367C_METERMAX
)
88 return RT_ERR_FILTER_METER_ID
;
90 return rtl8367c_setAsicRegBits(RTL8367C_STORM_BCAST_METER_CTRL_REG(port
), RTL8367C_STORM_BCAST_METER_CTRL_MASK(port
), meter
);
93 * rtl8367c_getAsicStormFilterBroadcastMeter
95 * Get per-port broadcast storm filter meter
97 * port - Physical port number (0~7)
98 * pMeter - meter index (0~31)
102 * RT_ERR_OK - Success
103 * RT_ERR_SMI - SMI access error
104 * RT_ERR_PORT_ID - Invalid port number
108 ret_t
rtl8367c_getAsicStormFilterBroadcastMeter(rtk_uint32 port
, rtk_uint32
*pMeter
)
110 if(port
>= RTL8367C_PORTNO
)
111 return RT_ERR_PORT_ID
;
113 return rtl8367c_getAsicRegBits(RTL8367C_STORM_BCAST_METER_CTRL_REG(port
), RTL8367C_STORM_BCAST_METER_CTRL_MASK(port
), pMeter
);
116 * rtl8367c_setAsicStormFilterMulticastEnable
118 * Set per-port multicast storm filter enable/disable
120 * port - Physical port number (0~7)
121 * enabled - 1: enabled, 0: disabled
125 * RT_ERR_OK - Success
126 * RT_ERR_SMI - SMI access error
127 * RT_ERR_PORT_ID - Invalid port number
131 ret_t
rtl8367c_setAsicStormFilterMulticastEnable(rtk_uint32 port
, rtk_uint32 enabled
)
133 if(port
>= RTL8367C_PORTNO
)
134 return RT_ERR_PORT_ID
;
136 return rtl8367c_setAsicRegBit(RTL8367C_STORM_MCAST_REG
, port
, enabled
);
139 * rtl8367c_getAsicStormFilterMulticastEnable
141 * Get per-port multicast storm filter enable/disable
143 * port - Physical port number (0~7)
144 * pEnabled - 1: enabled, 0: disabled
148 * RT_ERR_OK - Success
149 * RT_ERR_SMI - SMI access error
150 * RT_ERR_PORT_ID - Invalid port number
154 ret_t
rtl8367c_getAsicStormFilterMulticastEnable(rtk_uint32 port
, rtk_uint32
*pEnabled
)
156 if(port
>= RTL8367C_PORTNO
)
157 return RT_ERR_PORT_ID
;
159 return rtl8367c_getAsicRegBit(RTL8367C_STORM_MCAST_REG
, port
, pEnabled
);
162 * rtl8367c_setAsicStormFilterMulticastMeter
164 * Set per-port multicast storm filter meter
166 * port - Physical port number (0~7)
167 * meter - meter index (0~31)
171 * RT_ERR_OK - Success
172 * RT_ERR_SMI - SMI access error
173 * RT_ERR_PORT_ID - Invalid port number
174 * RT_ERR_FILTER_METER_ID - Invalid meter index
178 ret_t
rtl8367c_setAsicStormFilterMulticastMeter(rtk_uint32 port
, rtk_uint32 meter
)
180 if(port
>= RTL8367C_PORTNO
)
181 return RT_ERR_PORT_ID
;
183 if(meter
> RTL8367C_METERMAX
)
184 return RT_ERR_FILTER_METER_ID
;
186 return rtl8367c_setAsicRegBits(RTL8367C_STORM_MCAST_METER_CTRL_REG(port
), RTL8367C_STORM_MCAST_METER_CTRL_MASK(port
), meter
);
189 * rtl8367c_getAsicStormFilterMulticastMeter
191 * Get per-port multicast storm filter meter
193 * port - Physical port number (0~7)
194 * pMeter - meter index (0~31)
198 * RT_ERR_OK - Success
199 * RT_ERR_SMI - SMI access error
200 * RT_ERR_PORT_ID - Invalid port number
204 ret_t
rtl8367c_getAsicStormFilterMulticastMeter(rtk_uint32 port
, rtk_uint32
*pMeter
)
206 if(port
>= RTL8367C_PORTNO
)
207 return RT_ERR_PORT_ID
;
209 return rtl8367c_getAsicRegBits(RTL8367C_STORM_MCAST_METER_CTRL_REG(port
), RTL8367C_STORM_MCAST_METER_CTRL_MASK(port
), pMeter
);
212 * rtl8367c_setAsicStormFilterUnknownMulticastEnable
214 * Set per-port unknown multicast storm filter enable/disable
216 * port - Physical port number (0~7)
217 * enabled - 1: enabled, 0: disabled
221 * RT_ERR_OK - Success
222 * RT_ERR_SMI - SMI access error
223 * RT_ERR_PORT_ID - Invalid port number
227 ret_t
rtl8367c_setAsicStormFilterUnknownMulticastEnable(rtk_uint32 port
, rtk_uint32 enabled
)
229 if(port
>= RTL8367C_PORTNO
)
230 return RT_ERR_PORT_ID
;
232 return rtl8367c_setAsicRegBit(RTL8367C_STORM_UNKNOWN_MCAST_REG
, port
, enabled
);
235 * rtl8367c_getAsicStormFilterUnknownMulticastEnable
237 * Get per-port unknown multicast storm filter enable/disable
239 * port - Physical port number (0~7)
240 * pEnabled - 1: enabled, 0: disabled
244 * RT_ERR_OK - Success
245 * RT_ERR_SMI - SMI access error
246 * RT_ERR_PORT_ID - Invalid port number
250 ret_t
rtl8367c_getAsicStormFilterUnknownMulticastEnable(rtk_uint32 port
, rtk_uint32
*pEnabled
)
252 if(port
>= RTL8367C_PORTNO
)
253 return RT_ERR_PORT_ID
;
255 return rtl8367c_getAsicRegBit(RTL8367C_STORM_UNKNOWN_MCAST_REG
, port
, pEnabled
);
258 * rtl8367c_setAsicStormFilterUnknownMulticastMeter
260 * Set per-port unknown multicast storm filter meter
262 * port - Physical port number (0~7)
263 * meter - meter index (0~31)
267 * RT_ERR_OK - Success
268 * RT_ERR_SMI - SMI access error
269 * RT_ERR_PORT_ID - Invalid port number
270 * RT_ERR_FILTER_METER_ID - Invalid meter index
274 ret_t
rtl8367c_setAsicStormFilterUnknownMulticastMeter(rtk_uint32 port
, rtk_uint32 meter
)
278 if(port
>= RTL8367C_PORTNO
)
279 return RT_ERR_PORT_ID
;
281 if(meter
> RTL8367C_METERMAX
)
282 return RT_ERR_FILTER_METER_ID
;
286 retVal
= rtl8367c_setAsicRegBits(RTL8367C_STORM_UNMC_METER_CTRL_REG(port
), RTL8367C_STORM_UNMC_METER_CTRL_MASK(port
), meter
);
287 if(retVal
!= RT_ERR_OK
)
292 retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_UNMC_METER_CTRL4
+ ((port
- 8) >> 1), RTL8367C_STORM_UNMC_METER_CTRL_MASK(port
), meter
);
293 if(retVal
!= RT_ERR_OK
)
300 * rtl8367c_getAsicStormFilterUnknownMulticastMeter
302 * Get per-port unknown multicast storm filter meter
304 * port - Physical port number (0~7)
305 * pMeter - meter index (0~31)
309 * RT_ERR_OK - Success
310 * RT_ERR_SMI - SMI access error
311 * RT_ERR_PORT_ID - Invalid port number
315 ret_t
rtl8367c_getAsicStormFilterUnknownMulticastMeter(rtk_uint32 port
, rtk_uint32
*pMeter
)
319 if(port
>= RTL8367C_PORTNO
)
320 return RT_ERR_PORT_ID
;
324 retVal
= rtl8367c_getAsicRegBits(RTL8367C_STORM_UNMC_METER_CTRL_REG(port
), RTL8367C_STORM_UNMC_METER_CTRL_MASK(port
), pMeter
);
325 if(retVal
!= RT_ERR_OK
)
330 retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_UNMC_METER_CTRL4
+ ((port
- 8) >> 1), RTL8367C_STORM_UNMC_METER_CTRL_MASK(port
), pMeter
);
331 if(retVal
!= RT_ERR_OK
)
338 * rtl8367c_setAsicStormFilterUnknownUnicastEnable
340 * Set per-port unknown unicast storm filter enable/disable
342 * port - Physical port number (0~7)
343 * enabled - 1: enabled, 0: disabled
347 * RT_ERR_OK - Success
348 * RT_ERR_SMI - SMI access error
349 * RT_ERR_PORT_ID - Invalid port number
353 ret_t
rtl8367c_setAsicStormFilterUnknownUnicastEnable(rtk_uint32 port
, rtk_uint32 enabled
)
355 if(port
>= RTL8367C_PORTNO
)
356 return RT_ERR_PORT_ID
;
358 return rtl8367c_setAsicRegBit(RTL8367C_STORM_UNKNOWN_UCAST_REG
, port
, enabled
);
361 * rtl8367c_getAsicStormFilterUnknownUnicastEnable
363 * get per-port unknown unicast storm filter enable/disable
365 * port - Physical port number (0~7)
366 * pEnabled - 1: enabled, 0: disabled
370 * RT_ERR_OK - Success
371 * RT_ERR_SMI - SMI access error
372 * RT_ERR_PORT_ID - Invalid port number
376 ret_t
rtl8367c_getAsicStormFilterUnknownUnicastEnable(rtk_uint32 port
, rtk_uint32
*pEnabled
)
378 if(port
>= RTL8367C_PORTNO
)
379 return RT_ERR_PORT_ID
;
381 return rtl8367c_getAsicRegBit(RTL8367C_STORM_UNKNOWN_UCAST_REG
, port
, pEnabled
);
384 * rtl8367c_setAsicStormFilterUnknownUnicastMeter
386 * Set per-port unknown unicast storm filter meter
388 * port - Physical port number (0~7)
389 * meter - meter index (0~31)
393 * RT_ERR_OK - Success
394 * RT_ERR_SMI - SMI access error
395 * RT_ERR_PORT_ID - Invalid port number
396 * RT_ERR_FILTER_METER_ID - Invalid meter index
400 ret_t
rtl8367c_setAsicStormFilterUnknownUnicastMeter(rtk_uint32 port
, rtk_uint32 meter
)
402 if(port
>= RTL8367C_PORTNO
)
403 return RT_ERR_PORT_ID
;
405 if(meter
> RTL8367C_METERMAX
)
406 return RT_ERR_FILTER_METER_ID
;
408 return rtl8367c_setAsicRegBits(RTL8367C_STORM_UNDA_METER_CTRL_REG(port
), RTL8367C_STORM_UNDA_METER_CTRL_MASK(port
), meter
);
411 * rtl8367c_getAsicStormFilterUnknownUnicastMeter
413 * Get per-port unknown unicast storm filter meter
415 * port - Physical port number (0~7)
416 * pMeter - meter index (0~31)
420 * RT_ERR_OK - Success
421 * RT_ERR_SMI - SMI access error
422 * RT_ERR_PORT_ID - Invalid port number
426 ret_t
rtl8367c_getAsicStormFilterUnknownUnicastMeter(rtk_uint32 port
, rtk_uint32
*pMeter
)
428 if(port
>= RTL8367C_PORTNO
)
429 return RT_ERR_PORT_ID
;
431 return rtl8367c_getAsicRegBits(RTL8367C_STORM_UNDA_METER_CTRL_REG(port
), RTL8367C_STORM_UNDA_METER_CTRL_MASK(port
), pMeter
);
435 * rtl8367c_setAsicStormFilterExtBroadcastMeter
437 * Set extension broadcast storm filter meter
439 * meter - meter index (0~31)
443 * RT_ERR_OK - Success
444 * RT_ERR_SMI - SMI access error
445 * RT_ERR_FILTER_METER_ID - Invalid meter index
449 ret_t
rtl8367c_setAsicStormFilterExtBroadcastMeter(rtk_uint32 meter
)
451 if(meter
> RTL8367C_METERMAX
)
452 return RT_ERR_FILTER_METER_ID
;
454 return rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG0
, RTL8367C_BC_STORM_EXT_METERIDX_MASK
, meter
);
458 * rtl8367c_getAsicStormFilterExtBroadcastMeter
460 * get extension broadcast storm filter meter
464 * pMeter - meter index (0~31)
466 * RT_ERR_OK - Success
467 * RT_ERR_SMI - SMI access error
468 * RT_ERR_NULL_POINTER - Invalid meter index
472 ret_t
rtl8367c_getAsicStormFilterExtBroadcastMeter(rtk_uint32
*pMeter
)
475 return RT_ERR_NULL_POINTER
;
477 return rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG0
, RTL8367C_BC_STORM_EXT_METERIDX_MASK
, pMeter
);
481 * rtl8367c_setAsicStormFilterExtMulticastMeter
483 * Set extension multicast storm filter meter
485 * meter - meter index (0~31)
489 * RT_ERR_OK - Success
490 * RT_ERR_SMI - SMI access error
491 * RT_ERR_FILTER_METER_ID - Invalid meter index
495 ret_t
rtl8367c_setAsicStormFilterExtMulticastMeter(rtk_uint32 meter
)
497 if(meter
> RTL8367C_METERMAX
)
498 return RT_ERR_FILTER_METER_ID
;
500 return rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG0
, RTL8367C_MC_STORM_EXT_METERIDX_MASK
, meter
);
504 * rtl8367c_getAsicStormFilterExtMulticastMeter
506 * get extension multicast storm filter meter
510 * pMeter - meter index (0~31)
512 * RT_ERR_OK - Success
513 * RT_ERR_SMI - SMI access error
514 * RT_ERR_NULL_POINTER - Invalid meter index
518 ret_t
rtl8367c_getAsicStormFilterExtMulticastMeter(rtk_uint32
*pMeter
)
521 return RT_ERR_NULL_POINTER
;
523 return rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG0
, RTL8367C_MC_STORM_EXT_METERIDX_MASK
, pMeter
);
527 * rtl8367c_setAsicStormFilterExtUnknownMulticastMeter
529 * Set extension unknown multicast storm filter meter
531 * meter - meter index (0~31)
535 * RT_ERR_OK - Success
536 * RT_ERR_SMI - SMI access error
537 * RT_ERR_FILTER_METER_ID - Invalid meter index
541 ret_t
rtl8367c_setAsicStormFilterExtUnknownMulticastMeter(rtk_uint32 meter
)
543 if(meter
> RTL8367C_METERMAX
)
544 return RT_ERR_FILTER_METER_ID
;
546 return rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG1
, RTL8367C_UNMC_STORM_EXT_METERIDX_MASK
, meter
);
550 * rtl8367c_getAsicStormFilterExtUnknownMulticastMeter
552 * get extension unknown multicast storm filter meter
556 * pMeter - meter index (0~31)
558 * RT_ERR_OK - Success
559 * RT_ERR_SMI - SMI access error
560 * RT_ERR_NULL_POINTER - Invalid meter index
564 ret_t
rtl8367c_getAsicStormFilterExtUnknownMulticastMeter(rtk_uint32
*pMeter
)
567 return RT_ERR_NULL_POINTER
;
569 return rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG1
, RTL8367C_UNMC_STORM_EXT_METERIDX_MASK
, pMeter
);
573 * rtl8367c_setAsicStormFilterExtUnknownUnicastMeter
575 * Set extension unknown unicast storm filter meter
577 * meter - meter index (0~31)
581 * RT_ERR_OK - Success
582 * RT_ERR_SMI - SMI access error
583 * RT_ERR_FILTER_METER_ID - Invalid meter index
587 ret_t
rtl8367c_setAsicStormFilterExtUnknownUnicastMeter(rtk_uint32 meter
)
589 if(meter
> RTL8367C_METERMAX
)
590 return RT_ERR_FILTER_METER_ID
;
592 return rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG1
, RTL8367C_UNUC_STORM_EXT_METERIDX_MASK
, meter
);
596 * rtl8367c_getAsicStormFilterExtUnknownUnicastMeter
598 * get extension unknown unicast storm filter meter
602 * pMeter - meter index (0~31)
604 * RT_ERR_OK - Success
605 * RT_ERR_SMI - SMI access error
606 * RT_ERR_NULL_POINTER - Invalid meter index
610 ret_t
rtl8367c_getAsicStormFilterExtUnknownUnicastMeter(rtk_uint32
*pMeter
)
613 return RT_ERR_NULL_POINTER
;
615 return rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_EXT_MTRIDX_CFG1
, RTL8367C_UNUC_STORM_EXT_METERIDX_MASK
, pMeter
);
619 * rtl8367c_setAsicStormFilterExtBroadcastEnable
621 * Set extension broadcast storm filter state
627 * RT_ERR_OK - Success
628 * RT_ERR_SMI - SMI access error
632 ret_t
rtl8367c_setAsicStormFilterExtBroadcastEnable(rtk_uint32 enabled
)
634 return rtl8367c_setAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_BCAST_EXT_EN_OFFSET
, enabled
);
638 * rtl8367c_getAsicStormFilterExtBroadcastEnable
640 * Get extension broadcast storm filter state
646 * RT_ERR_OK - Success
647 * RT_ERR_SMI - SMI access error
648 * RT_ERR_NULL_POINTER - Null pointer
652 ret_t
rtl8367c_getAsicStormFilterExtBroadcastEnable(rtk_uint32
*pEnabled
)
655 return RT_ERR_NULL_POINTER
;
657 return rtl8367c_getAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_BCAST_EXT_EN_OFFSET
, pEnabled
);
661 * rtl8367c_setAsicStormFilterExtMulticastEnable
663 * Set extension multicast storm filter state
669 * RT_ERR_OK - Success
670 * RT_ERR_SMI - SMI access error
674 ret_t
rtl8367c_setAsicStormFilterExtMulticastEnable(rtk_uint32 enabled
)
676 return rtl8367c_setAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_MCAST_EXT_EN_OFFSET
, enabled
);
680 * rtl8367c_getAsicStormFilterExtMulticastEnable
682 * Get extension multicast storm filter state
688 * RT_ERR_OK - Success
689 * RT_ERR_SMI - SMI access error
690 * RT_ERR_NULL_POINTER - Null pointer
694 ret_t
rtl8367c_getAsicStormFilterExtMulticastEnable(rtk_uint32
*pEnabled
)
697 return RT_ERR_NULL_POINTER
;
699 return rtl8367c_getAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_MCAST_EXT_EN_OFFSET
, pEnabled
);
703 * rtl8367c_setAsicStormFilterExtUnknownMulticastEnable
705 * Set extension unknown multicast storm filter state
711 * RT_ERR_OK - Success
712 * RT_ERR_SMI - SMI access error
716 ret_t
rtl8367c_setAsicStormFilterExtUnknownMulticastEnable(rtk_uint32 enabled
)
718 return rtl8367c_setAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_UNKNOWN_MCAST_EXT_EN_OFFSET
, enabled
);
722 * rtl8367c_getAsicStormFilterExtUnknownMulticastEnable
724 * Get extension unknown multicast storm filter state
730 * RT_ERR_OK - Success
731 * RT_ERR_SMI - SMI access error
732 * RT_ERR_NULL_POINTER - Null pointer
736 ret_t
rtl8367c_getAsicStormFilterExtUnknownMulticastEnable(rtk_uint32
*pEnabled
)
739 return RT_ERR_NULL_POINTER
;
741 return rtl8367c_getAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_UNKNOWN_MCAST_EXT_EN_OFFSET
, pEnabled
);
745 * rtl8367c_setAsicStormFilterExtUnknownUnicastEnable
747 * Set extension unknown unicast storm filter state
753 * RT_ERR_OK - Success
754 * RT_ERR_SMI - SMI access error
758 ret_t
rtl8367c_setAsicStormFilterExtUnknownUnicastEnable(rtk_uint32 enabled
)
760 return rtl8367c_setAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_UNKNOWN_UCAST_EXT_EN_OFFSET
, enabled
);
764 * rtl8367c_getAsicStormFilterExtUnknownUnicastEnable
766 * Get extension unknown unicast storm filter state
772 * RT_ERR_OK - Success
773 * RT_ERR_SMI - SMI access error
774 * RT_ERR_NULL_POINTER - Null pointer
778 ret_t
rtl8367c_getAsicStormFilterExtUnknownUnicastEnable(rtk_uint32
*pEnabled
)
781 return RT_ERR_NULL_POINTER
;
783 return rtl8367c_getAsicRegBit(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_UNKNOWN_UCAST_EXT_EN_OFFSET
, pEnabled
);
787 * rtl8367c_setAsicStormFilterExtEnablePortMask
789 * Set extension storm filter port mask
791 * portmask - port mask
795 * RT_ERR_OK - Success
796 * RT_ERR_SMI - SMI access error
800 ret_t
rtl8367c_setAsicStormFilterExtEnablePortMask(rtk_uint32 portmask
)
804 retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_EXT_EN_PORTMASK_MASK
, portmask
& 0x3FF);
805 if(retVal
!= RT_ERR_OK
)
808 retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_EXT_EN_PORTMASK_EXT_MASK
, (portmask
>> 10)&1);
809 if(retVal
!= RT_ERR_OK
)
816 * rtl8367c_getAsicStormFilterExtEnablePortMask
818 * Get extension storm filter port mask
820 * portmask - port mask
824 * RT_ERR_OK - Success
825 * RT_ERR_SMI - SMI access error
826 * RT_ERR_NULL_POINTER - Null pointer
830 ret_t
rtl8367c_getAsicStormFilterExtEnablePortMask(rtk_uint32
*pPortmask
)
835 if(NULL
== pPortmask
)
836 return RT_ERR_NULL_POINTER
;
838 retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_EXT_EN_PORTMASK_MASK
, &tmpPmsk
);
839 if(retVal
!= RT_ERR_OK
)
841 *pPortmask
= tmpPmsk
& 0x3ff;
843 retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_STORM_EXT_CFG
, RTL8367C_STORM_EXT_EN_PORTMASK_EXT_MASK
, &tmpPmsk
);
844 if(retVal
!= RT_ERR_OK
)
846 *pPortmask
|= (tmpPmsk
& 1) << 10;