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 : Qos related functions
18 #include <rtl8367c_asicdrv_qos.h>
20 * rtl8367c_setAsicPriorityDot1qRemapping
22 * Set 802.1Q absolutely priority
24 * srcpriority - Priority value
25 * priority - Absolute priority value
30 * RT_ERR_SMI - SMI access error
31 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
35 ret_t
rtl8367c_setAsicPriorityDot1qRemapping(rtk_uint32 srcpriority
, rtk_uint32 priority
)
37 if((srcpriority
> RTL8367C_PRIMAX
) || (priority
> RTL8367C_PRIMAX
))
38 return RT_ERR_QOS_INT_PRIORITY
;
40 return rtl8367c_setAsicRegBits(RTL8367C_QOS_1Q_PRIORITY_REMAPPING_REG(srcpriority
), RTL8367C_QOS_1Q_PRIORITY_REMAPPING_MASK(srcpriority
),priority
);
43 * rtl8367c_getAsicPriorityDot1qRemapping
45 * Get 802.1Q absolutely priority
47 * srcpriority - Priority value
48 * pPriority - Absolute priority value
53 * RT_ERR_SMI - SMI access error
57 ret_t
rtl8367c_getAsicPriorityDot1qRemapping(rtk_uint32 srcpriority
, rtk_uint32
*pPriority
)
59 if(srcpriority
> RTL8367C_PRIMAX
)
60 return RT_ERR_QOS_INT_PRIORITY
;
62 return rtl8367c_getAsicRegBits(RTL8367C_QOS_1Q_PRIORITY_REMAPPING_REG(srcpriority
), RTL8367C_QOS_1Q_PRIORITY_REMAPPING_MASK(srcpriority
), pPriority
);
65 * rtl8367c_setAsicPriorityPortBased
67 * Set port based priority
69 * port - Physical port number (0~7)
70 * priority - Priority value
75 * RT_ERR_SMI - SMI access error
76 * RT_ERR_PORT_ID - Invalid port number
77 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
81 ret_t
rtl8367c_setAsicPriorityPortBased(rtk_uint32 port
, rtk_uint32 priority
)
85 if(port
> RTL8367C_PORTIDMAX
)
86 return RT_ERR_PORT_ID
;
88 if(priority
> RTL8367C_PRIMAX
)
89 return RT_ERR_QOS_INT_PRIORITY
;
93 retVal
= rtl8367c_setAsicRegBits(RTL8367C_QOS_PORTBASED_PRIORITY_REG(port
), RTL8367C_QOS_PORTBASED_PRIORITY_MASK(port
), priority
);
94 if(retVal
!= RT_ERR_OK
)
99 retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_QOS_PORTBASED_PRIORITY_CTRL2
, 0x7 << ((port
- 8) << 2), priority
);
100 if(retVal
!= RT_ERR_OK
)
107 * rtl8367c_getAsicPriorityPortBased
109 * Get port based priority
111 * port - Physical port number (0~7)
112 * pPriority - Priority value
116 * RT_ERR_OK - Success
117 * RT_ERR_SMI - SMI access error
118 * RT_ERR_PORT_ID - Invalid port number
122 ret_t
rtl8367c_getAsicPriorityPortBased(rtk_uint32 port
, rtk_uint32
*pPriority
)
126 if(port
> RTL8367C_PORTIDMAX
)
127 return RT_ERR_PORT_ID
;
131 retVal
= rtl8367c_getAsicRegBits(RTL8367C_QOS_PORTBASED_PRIORITY_REG(port
), RTL8367C_QOS_PORTBASED_PRIORITY_MASK(port
), pPriority
);
132 if(retVal
!= RT_ERR_OK
)
137 retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_QOS_PORTBASED_PRIORITY_CTRL2
, 0x7 << ((port
- 8) << 2), pPriority
);
138 if(retVal
!= RT_ERR_OK
)
145 * rtl8367c_setAsicPriorityDscpBased
147 * Set DSCP-based priority
150 * priority - Priority value
154 * RT_ERR_OK - Success
155 * RT_ERR_SMI - SMI access error
156 * RT_ERR_QOS_DSCP_VALUE - Invalid DSCP value
157 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
161 ret_t
rtl8367c_setAsicPriorityDscpBased(rtk_uint32 dscp
, rtk_uint32 priority
)
163 if(priority
> RTL8367C_PRIMAX
)
164 return RT_ERR_QOS_INT_PRIORITY
;
166 if(dscp
> RTL8367C_DSCPMAX
)
167 return RT_ERR_QOS_DSCP_VALUE
;
169 return rtl8367c_setAsicRegBits(RTL8367C_QOS_DSCP_TO_PRIORITY_REG(dscp
), RTL8367C_QOS_DSCP_TO_PRIORITY_MASK(dscp
), priority
);
172 * rtl8367c_getAsicPriorityDscpBased
174 * Get DSCP-based priority
177 * pPriority - Priority value
181 * RT_ERR_OK - Success
182 * RT_ERR_SMI - SMI access error
183 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
187 ret_t
rtl8367c_getAsicPriorityDscpBased(rtk_uint32 dscp
, rtk_uint32
*pPriority
)
189 if(dscp
> RTL8367C_DSCPMAX
)
190 return RT_ERR_QOS_DSCP_VALUE
;
192 return rtl8367c_getAsicRegBits(RTL8367C_QOS_DSCP_TO_PRIORITY_REG(dscp
), RTL8367C_QOS_DSCP_TO_PRIORITY_MASK(dscp
), pPriority
);
195 * rtl8367c_setAsicPriorityDecision
197 * Set priority decision table
199 * prisrc - Priority decision source
200 * decisionPri - Decision priority assignment
204 * RT_ERR_OK - Success
205 * RT_ERR_SMI - SMI access error
206 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
207 * RT_ERR_QOS_SEL_PRI_SOURCE - Invalid priority decision source parameter
211 ret_t
rtl8367c_setAsicPriorityDecision(rtk_uint32 index
, rtk_uint32 prisrc
, rtk_uint32 decisionPri
)
215 if(index
>= PRIDEC_IDX_END
)
216 return RT_ERR_ENTRY_INDEX
;
218 if(prisrc
>= PRIDEC_END
)
219 return RT_ERR_QOS_SEL_PRI_SOURCE
;
221 if(decisionPri
> RTL8367C_DECISIONPRIMAX
)
222 return RT_ERR_QOS_INT_PRIORITY
;
227 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_QOS_INTERNAL_PRIORITY_DECISION_REG(prisrc
), RTL8367C_QOS_INTERNAL_PRIORITY_DECISION_MASK(prisrc
), decisionPri
))!= RT_ERR_OK
)
231 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_QOS_INTERNAL_PRIORITY_DECISION2_REG(prisrc
), RTL8367C_QOS_INTERNAL_PRIORITY_DECISION2_MASK(prisrc
), decisionPri
))!= RT_ERR_OK
)
244 * rtl8367c_getAsicPriorityDecision
246 * Get priority decision table
248 * prisrc - Priority decision source
249 * pDecisionPri - Decision priority assignment
253 * RT_ERR_OK - Success
254 * RT_ERR_SMI - SMI access error
255 * RT_ERR_QOS_SEL_PRI_SOURCE - Invalid priority decision source parameter
259 ret_t
rtl8367c_getAsicPriorityDecision(rtk_uint32 index
, rtk_uint32 prisrc
, rtk_uint32
* pDecisionPri
)
263 if(index
>= PRIDEC_IDX_END
)
264 return RT_ERR_ENTRY_INDEX
;
266 if(prisrc
>= PRIDEC_END
)
267 return RT_ERR_QOS_SEL_PRI_SOURCE
;
272 if((retVal
= rtl8367c_getAsicRegBits(RTL8367C_QOS_INTERNAL_PRIORITY_DECISION_REG(prisrc
), RTL8367C_QOS_INTERNAL_PRIORITY_DECISION_MASK(prisrc
), pDecisionPri
))!= RT_ERR_OK
)
276 if((retVal
= rtl8367c_getAsicRegBits(RTL8367C_QOS_INTERNAL_PRIORITY_DECISION2_REG(prisrc
), RTL8367C_QOS_INTERNAL_PRIORITY_DECISION2_MASK(prisrc
), pDecisionPri
))!= RT_ERR_OK
)
288 * rtl8367c_setAsicPortPriorityDecisionIndex
290 * Set priority decision index for each port
292 * port - Physical port number (0~7)
293 * index - Table index
297 * RT_ERR_OK - Success
298 * RT_ERR_SMI - SMI access error
299 * RT_ERR_PORT_ID - Invalid port number
300 * RT_ERR_QUEUE_NUM - Invalid queue number
304 ret_t
rtl8367c_setAsicPortPriorityDecisionIndex(rtk_uint32 port
, rtk_uint32 index
)
306 if(port
> RTL8367C_PORTIDMAX
)
307 return RT_ERR_PORT_ID
;
309 if(index
>= PRIDEC_IDX_END
)
310 return RT_ERR_ENTRY_INDEX
;
312 return rtl8367c_setAsicRegBit(RTL8367C_QOS_INTERNAL_PRIORITY_DECISION_IDX_CTRL
, port
, index
);
315 * rtl8367c_getAsicPortPriorityDecisionIndex
317 * Get priority decision index for each port
319 * port - Physical port number (0~7)
320 * pIndex - Table index
324 * RT_ERR_OK - Success
325 * RT_ERR_SMI - SMI access error
326 * RT_ERR_PORT_ID - Invalid port number
330 ret_t
rtl8367c_getAsicPortPriorityDecisionIndex(rtk_uint32 port
, rtk_uint32
*pIndex
)
332 if(port
> RTL8367C_PORTIDMAX
)
333 return RT_ERR_PORT_ID
;
335 return rtl8367c_getAsicRegBit(RTL8367C_QOS_INTERNAL_PRIORITY_DECISION_IDX_CTRL
, port
, pIndex
);
339 * rtl8367c_setAsicOutputQueueMappingIndex
341 * Set output queue number for each port
343 * port - Physical port number (0~7)
344 * index - Mapping table index
348 * RT_ERR_OK - Success
349 * RT_ERR_SMI - SMI access error
350 * RT_ERR_PORT_ID - Invalid port number
351 * RT_ERR_QUEUE_NUM - Invalid queue number
355 ret_t
rtl8367c_setAsicOutputQueueMappingIndex(rtk_uint32 port
, rtk_uint32 index
)
357 if(port
> RTL8367C_PORTIDMAX
)
358 return RT_ERR_PORT_ID
;
360 if(index
>= RTL8367C_QUEUENO
)
361 return RT_ERR_QUEUE_NUM
;
363 return rtl8367c_setAsicRegBits(RTL8367C_QOS_PORT_QUEUE_NUMBER_REG(port
), RTL8367C_QOS_PORT_QUEUE_NUMBER_MASK(port
), index
);
366 * rtl8367c_getAsicOutputQueueMappingIndex
368 * Get output queue number for each port
370 * port - Physical port number (0~7)
371 * pIndex - Mapping table index
375 * RT_ERR_OK - Success
376 * RT_ERR_SMI - SMI access error
377 * RT_ERR_PORT_ID - Invalid port number
381 ret_t
rtl8367c_getAsicOutputQueueMappingIndex(rtk_uint32 port
, rtk_uint32
*pIndex
)
383 if(port
> RTL8367C_PORTIDMAX
)
384 return RT_ERR_PORT_ID
;
386 return rtl8367c_getAsicRegBits(RTL8367C_QOS_PORT_QUEUE_NUMBER_REG(port
), RTL8367C_QOS_PORT_QUEUE_NUMBER_MASK(port
), pIndex
);
389 * rtl8367c_setAsicPriorityToQIDMappingTable
391 * Set priority to QID mapping table parameters
393 * index - Mapping table index
394 * priority - The priority value
399 * RT_ERR_OK - Success
400 * RT_ERR_SMI - SMI access error
401 * RT_ERR_QUEUE_ID - Invalid queue id
402 * RT_ERR_QUEUE_NUM - Invalid queue number
403 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
407 ret_t
rtl8367c_setAsicPriorityToQIDMappingTable(rtk_uint32 index
, rtk_uint32 priority
, rtk_uint32 qid
)
409 if(index
>= RTL8367C_QUEUENO
)
410 return RT_ERR_QUEUE_NUM
;
412 if(priority
> RTL8367C_PRIMAX
)
413 return RT_ERR_QOS_INT_PRIORITY
;
415 if(qid
> RTL8367C_QIDMAX
)
416 return RT_ERR_QUEUE_ID
;
418 return rtl8367c_setAsicRegBits(RTL8367C_QOS_1Q_PRIORITY_TO_QID_REG(index
, priority
), RTL8367C_QOS_1Q_PRIORITY_TO_QID_MASK(priority
), qid
);
421 * rtl8367c_getAsicPriorityToQIDMappingTable
423 * Get priority to QID mapping table parameters
425 * index - Mapping table index
426 * priority - The priority value
431 * RT_ERR_OK - Success
432 * RT_ERR_SMI - SMI access error
433 * RT_ERR_QUEUE_NUM - Invalid queue number
434 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
438 ret_t
rtl8367c_getAsicPriorityToQIDMappingTable(rtk_uint32 index
, rtk_uint32 priority
, rtk_uint32
* pQid
)
440 if(index
>= RTL8367C_QUEUENO
)
441 return RT_ERR_QUEUE_NUM
;
443 if(priority
> RTL8367C_PRIMAX
)
444 return RT_ERR_QOS_INT_PRIORITY
;
446 return rtl8367c_getAsicRegBits(RTL8367C_QOS_1Q_PRIORITY_TO_QID_REG(index
, priority
), RTL8367C_QOS_1Q_PRIORITY_TO_QID_MASK(priority
), pQid
);
449 * rtl8367c_setAsicRemarkingDot1pAbility
451 * Set 802.1p remarking ability
453 * port - Physical port number (0~7)
454 * enabled - 1: enabled, 0: disabled
458 * RT_ERR_OK - Success
459 * RT_ERR_SMI - SMI access error
460 * RT_ERR_PORT_ID - Invalid port number
464 ret_t
rtl8367c_setAsicRemarkingDot1pAbility(rtk_uint32 port
, rtk_uint32 enabled
)
466 return rtl8367c_setAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port
), RTL8367C_1QREMARK_ENABLE_OFFSET
, enabled
);
469 * rtl8367c_getAsicRemarkingDot1pAbility
471 * Get 802.1p remarking ability
473 * port - Physical port number (0~7)
474 * pEnabled - 1: enabled, 0: disabled
478 * RT_ERR_OK - Success
479 * RT_ERR_SMI - SMI access error
483 ret_t
rtl8367c_getAsicRemarkingDot1pAbility(rtk_uint32 port
, rtk_uint32
* pEnabled
)
485 return rtl8367c_getAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port
), RTL8367C_1QREMARK_ENABLE_OFFSET
, pEnabled
);
488 * rtl8367c_setAsicRemarkingDot1pParameter
490 * Set 802.1p remarking parameter
492 * priority - Priority value
493 * newPriority - New priority value
497 * RT_ERR_OK - Success
498 * RT_ERR_SMI - SMI access error
499 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
503 ret_t
rtl8367c_setAsicRemarkingDot1pParameter(rtk_uint32 priority
, rtk_uint32 newPriority
)
505 if(priority
> RTL8367C_PRIMAX
|| newPriority
> RTL8367C_PRIMAX
)
506 return RT_ERR_QOS_INT_PRIORITY
;
508 return rtl8367c_setAsicRegBits(RTL8367C_QOS_1Q_REMARK_REG(priority
), RTL8367C_QOS_1Q_REMARK_MASK(priority
), newPriority
);
511 * rtl8367c_getAsicRemarkingDot1pParameter
513 * Get 802.1p remarking parameter
515 * priority - Priority value
516 * pNewPriority - New priority value
520 * RT_ERR_OK - Success
521 * RT_ERR_SMI - SMI access error
522 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
526 ret_t
rtl8367c_getAsicRemarkingDot1pParameter(rtk_uint32 priority
, rtk_uint32
*pNewPriority
)
528 if(priority
> RTL8367C_PRIMAX
)
529 return RT_ERR_QOS_INT_PRIORITY
;
531 return rtl8367c_getAsicRegBits(RTL8367C_QOS_1Q_REMARK_REG(priority
), RTL8367C_QOS_1Q_REMARK_MASK(priority
), pNewPriority
);
535 * rtl8367c_setAsicRemarkingDot1pSrc
537 * Set remarking source of 802.1p remarking.
539 * type - remarking source
545 * RT_ERR_NOT_INIT - The module is not initial
546 * RT_ERR_PORT_ID - invalid port id
547 * RT_ERR_INPUT - invalid input parameter
550 * The API can configure 802.1p remark functionality to map original DSCP value or internal
551 * priority to TX DSCP value.
553 ret_t
rtl8367c_setAsicRemarkingDot1pSrc(rtk_uint32 type
)
556 if(type
>= DOT1P_PRISEL_END
)
557 return RT_ERR_QOS_SEL_PRI_SOURCE
;
559 return rtl8367c_setAsicRegBit(RTL8367C_REG_RMK_CFG_SEL_CTRL
, RTL8367C_RMK_1Q_CFG_SEL_OFFSET
, type
);
564 * rtl8367c_getAsicRemarkingDot1pSrc
566 * Get remarking source of 802.1p remarking.
568 * pType - remarking source
572 * RT_ERR_NOT_INIT - The module is not initial
573 * RT_ERR_PORT_ID - invalid port id
574 * RT_ERR_INPUT - invalid input parameter
575 * RT_ERR_NULL_POINTER - input parameter may be null pointer
580 ret_t
rtl8367c_getAsicRemarkingDot1pSrc(rtk_uint32
*pType
)
582 return rtl8367c_getAsicRegBit(RTL8367C_REG_RMK_CFG_SEL_CTRL
, RTL8367C_RMK_1Q_CFG_SEL_OFFSET
, pType
);
590 * rtl8367c_setAsicRemarkingDscpAbility
592 * Set DSCP remarking ability
594 * enabled - 1: enabled, 0: disabled
598 * RT_ERR_OK - Success
599 * RT_ERR_SMI - SMI access error
603 ret_t
rtl8367c_setAsicRemarkingDscpAbility(rtk_uint32 enabled
)
605 return rtl8367c_setAsicRegBit(RTL8367C_REMARKING_CTRL_REG
, RTL8367C_REMARKING_DSCP_ENABLE_OFFSET
, enabled
);
608 * rtl8367c_getAsicRemarkingDscpAbility
610 * Get DSCP remarking ability
612 * enabled - 1: enabled, 0: disabled
616 * RT_ERR_OK - Success
617 * RT_ERR_SMI - SMI access error
621 ret_t
rtl8367c_getAsicRemarkingDscpAbility(rtk_uint32
* pEnabled
)
623 return rtl8367c_getAsicRegBit(RTL8367C_REMARKING_CTRL_REG
, RTL8367C_REMARKING_DSCP_ENABLE_OFFSET
, pEnabled
);
626 * rtl8367c_setAsicRemarkingDscpParameter
628 * Set DSCP remarking parameter
630 * priority - Priority value
631 * newDscp - New DSCP value
635 * RT_ERR_OK - Success
636 * RT_ERR_SMI - SMI access error
637 * RT_ERR_QOS_DSCP_VALUE - Invalid DSCP value
638 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
642 ret_t
rtl8367c_setAsicRemarkingDscpParameter(rtk_uint32 priority
, rtk_uint32 newDscp
)
644 if(priority
> RTL8367C_PRIMAX
)
645 return RT_ERR_QOS_INT_PRIORITY
;
647 if(newDscp
> RTL8367C_DSCPMAX
)
648 return RT_ERR_QOS_DSCP_VALUE
;
650 return rtl8367c_setAsicRegBits(RTL8367C_QOS_DSCP_REMARK_REG(priority
), RTL8367C_QOS_DSCP_REMARK_MASK(priority
), newDscp
);
653 * rtl8367c_getAsicRemarkingDscpParameter
655 * Get DSCP remarking parameter
657 * priority - Priority value
658 * pNewDscp - New DSCP value
662 * RT_ERR_OK - Success
663 * RT_ERR_SMI - SMI access error
664 * RT_ERR_QOS_INT_PRIORITY - Invalid priority
668 ret_t
rtl8367c_getAsicRemarkingDscpParameter(rtk_uint32 priority
, rtk_uint32
* pNewDscp
)
670 if(priority
> RTL8367C_PRIMAX
)
671 return RT_ERR_QOS_INT_PRIORITY
;
673 return rtl8367c_getAsicRegBits(RTL8367C_QOS_DSCP_REMARK_REG(priority
), RTL8367C_QOS_DSCP_REMARK_MASK(priority
), pNewDscp
);
677 * rtl8367c_setAsicRemarkingDscpSrc
679 * Set remarking source of DSCP remarking.
681 * type - remarking source
687 * RT_ERR_NOT_INIT - The module is not initial
688 * RT_ERR_PORT_ID - invalid port id
689 * RT_ERR_INPUT - invalid input parameter
692 * The API can configure DSCP remark functionality to map original DSCP value or internal
693 * priority to TX DSCP value.
695 ret_t
rtl8367c_setAsicRemarkingDscpSrc(rtk_uint32 type
)
698 if(type
>= DSCP_PRISEL_END
)
699 return RT_ERR_QOS_SEL_PRI_SOURCE
;
701 return rtl8367c_setAsicRegBits(RTL8367C_REG_RMK_CFG_SEL_CTRL
, RTL8367C_RMK_DSCP_CFG_SEL_MASK
, type
);
706 * rtl8367c_getAsicRemarkingDscpSrc
708 * Get remarking source of DSCP remarking.
710 * pType - remarking source
714 * RT_ERR_NOT_INIT - The module is not initial
715 * RT_ERR_PORT_ID - invalid port id
716 * RT_ERR_INPUT - invalid input parameter
717 * RT_ERR_NULL_POINTER - input parameter may be null pointer
722 ret_t
rtl8367c_getAsicRemarkingDscpSrc(rtk_uint32
*pType
)
724 return rtl8367c_getAsicRegBits(RTL8367C_REG_RMK_CFG_SEL_CTRL
, RTL8367C_RMK_DSCP_CFG_SEL_MASK
, pType
);
728 * rtl8367c_setAsicRemarkingDscp2Dscp
730 * Set DSCP to remarked DSCP mapping.
733 * rmkDscp - remarked DSCP value
739 * RT_ERR_UNIT_ID - Invalid unit id
740 * RT_ERR_QOS_DSCP_VALUE - Invalid dscp value
742 * dscp parameter can be DSCP value or internal priority according to configuration of API
743 * dal_apollomp_qos_dscpRemarkSrcSel_set(), because DSCP remark functionality can map original DSCP
744 * value or internal priority to TX DSCP value.
746 ret_t
rtl8367c_setAsicRemarkingDscp2Dscp(rtk_uint32 dscp
, rtk_uint32 rmkDscp
)
748 if((dscp
> RTL8367C_DSCPMAX
) || (rmkDscp
> RTL8367C_DSCPMAX
))
749 return RT_ERR_QOS_INT_PRIORITY
;
751 return rtl8367c_setAsicRegBits(RTL8367C_QOS_DSCP_TO_DSCP_REG(dscp
), RTL8367C_QOS_DSCP_TO_DSCP_MASK(dscp
), rmkDscp
);
755 * rtl8367c_getAsicRemarkingDscp2Dscp
757 * Get DSCP to remarked DSCP mapping.
761 * pRmkDscp - remarked DSCP value
765 * RT_ERR_QOS_DSCP_VALUE - Invalid dscp value
766 * RT_ERR_NULL_POINTER - NULL pointer
770 ret_t
rtl8367c_getAsicRemarkingDscp2Dscp(rtk_uint32 dscp
, rtk_uint32
*pRmkDscp
)
772 if(dscp
> RTL8367C_DSCPMAX
)
773 return RT_ERR_QOS_DSCP_VALUE
;
775 return rtl8367c_getAsicRegBits(RTL8367C_QOS_DSCP_TO_DSCP_REG(dscp
), RTL8367C_QOS_DSCP_TO_DSCP_MASK(dscp
), pRmkDscp
);