core: update code for TSN

- Update CTOV recommended value
- Update PTOV recommended value
- Disable PEC filed on preemption disable
- Disable EEST with message to reprogram
  GCL instead of dropping packet on HLBF/HLBS
- Configure code not to drop any packet silently
  on HLBF and HLBS error
- Q2TC mapping with CBS enable

Bug 200763256
Bug 200765943

Change-Id: I7a2581af488e22a23d32ce1819440c21f4748800
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/kernel/nvethernetrm/+/2593162
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Rakesh Goyal
2021-09-12 20:25:33 +05:30
committed by Bhadram Varka
parent 964255eba4
commit bb634e1af4
4 changed files with 107 additions and 57 deletions

View File

@@ -1935,35 +1935,34 @@ static void eqos_tsn_init(struct osi_core_priv_data *osi_core,
/* 6*1/(78.6 MHz) in ns*/ /* 6*1/(78.6 MHz) in ns*/
temp = (6U * 13U); temp = (6U * 13U);
} else { } else {
/* 6*1/(312 MHz) in ns*/ temp = EQOS_MTL_EST_PTOV_RECOMMEND;
temp = (6U * 3U);
} }
temp = temp << EQOS_MTL_EST_CONTROL_PTOV_SHIFT; temp = temp << EQOS_MTL_EST_CONTROL_PTOV_SHIFT;
val |= temp; val |= temp;
/* We have a bug on CTOV for Qbv that synopsys is yet to
* fix[Case 8001147927, Bug 200468714]. You can go ahead
* with 128*8ns for now. TODO */
val &= ~EQOS_MTL_EST_CONTROL_CTOV; val &= ~EQOS_MTL_EST_CONTROL_CTOV;
temp = (128U * 8U); temp = EQOS_MTL_EST_CTOV_RECOMMEND;
temp = temp << EQOS_MTL_EST_CONTROL_CTOV_SHIFT; temp = temp << EQOS_MTL_EST_CONTROL_CTOV_SHIFT;
val |= temp; val |= temp;
/*Loop Count to report Scheduling Error*/ /*Loop Count to report Scheduling Error*/
val &= ~EQOS_MTL_EST_CONTROL_LCSE; val &= ~EQOS_MTL_EST_CONTROL_LCSE;
val |= EQOS_MTL_EST_CONTROL_LCSE_VAL; val |= EQOS_MTL_EST_CONTROL_LCSE_VAL;
/* Drop Frames causing Scheduling Error */
val |= EQOS_MTL_EST_CONTROL_DFBS; val &= ~(EQOS_MTL_EST_CONTROL_DDBF |
EQOS_MTL_EST_CONTROL_DFBS);
val |= EQOS_MTL_EST_CONTROL_DDBF;
osi_writela(osi_core, val, (nveu8_t *)osi_core->base + osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_CONTROL); EQOS_MTL_EST_CONTROL);
val = osi_readla(osi_core, (nveu8_t *)osi_core->base + val = osi_readla(osi_core, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_OVERHEAD); EQOS_MTL_EST_OVERHEAD);
val &= ~EQOS_MTL_EST_OVERHEAD_OVHD; val &= ~EQOS_MTL_EST_OVERHEAD_OVHD;
/* As per hardware team recommendation */ /* As per hardware team recommendation */
val |= EQOS_MTL_EST_OVERHEAD_RECOMMEND; val |= EQOS_MTL_EST_OVERHEAD_RECOMMEND;
osi_writela(osi_core, val, (nveu8_t *)osi_core->base + osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_OVERHEAD); EQOS_MTL_EST_OVERHEAD);
eqos_enable_mtl_interrupts(osi_core); eqos_enable_mtl_interrupts(osi_core);
} }
@@ -2400,12 +2399,13 @@ static inline void update_dma_sr_stats(
*/ */
static void eqos_handle_mtl_intrs(struct osi_core_priv_data *osi_core) static void eqos_handle_mtl_intrs(struct osi_core_priv_data *osi_core)
{ {
unsigned int val = 0; unsigned int val = 0U;
unsigned int sch_err = 0; unsigned int sch_err = 0U;
unsigned int frm_err = 0; unsigned int frm_err = 0U;
unsigned int temp = 0U; unsigned int temp = 0U;
unsigned int i = 0; unsigned int i = 0;
unsigned long stat_val = 0; unsigned long stat_val = 0U;
unsigned int value = 0U;
val = osi_readla(osi_core, val = osi_readla(osi_core,
(unsigned char *)osi_core->base + EQOS_MTL_EST_STATUS); (unsigned char *)osi_core->base + EQOS_MTL_EST_STATUS);
@@ -2446,6 +2446,18 @@ static void eqos_handle_mtl_intrs(struct osi_core_priv_data *osi_core)
sch_err &= 0xFFU; /* only 8 TC allowed so clearing all */ sch_err &= 0xFFU; /* only 8 TC allowed so clearing all */
osi_writela(osi_core, sch_err, osi_writela(osi_core, sch_err,
(nveu8_t *)osi_core->base + EQOS_MTL_EST_SCH_ERR); (nveu8_t *)osi_core->base + EQOS_MTL_EST_SCH_ERR);
/* Disable est as error happen */
value = osi_readla(osi_core, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_CONTROL);
/* DBFS 0 means do not packet */
if ((value & EQOS_MTL_EST_CONTROL_DFBS) == OSI_DISABLE) {
value &= ~EQOS_MTL_EST_CONTROL_EEST;
osi_writela(osi_core, value, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_CONTROL);
OSI_CORE_ERR(OSI_NULL, OSI_LOG_ARG_INVALID,
"Disabling EST due to HLBS, correct GCL\n",
OSI_NONE);
}
} }
if ((val & EQOS_MTL_EST_STATUS_HLBF) == EQOS_MTL_EST_STATUS_HLBF) { if ((val & EQOS_MTL_EST_STATUS_HLBF) == EQOS_MTL_EST_STATUS_HLBF) {
@@ -2468,6 +2480,19 @@ static void eqos_handle_mtl_intrs(struct osi_core_priv_data *osi_core)
frm_err &= 0xFFU; /* 8 TC allowed so clearing all */ frm_err &= 0xFFU; /* 8 TC allowed so clearing all */
osi_writela(osi_core, frm_err, (nveu8_t *)osi_core->base + osi_writela(osi_core, frm_err, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_FRMS_ERR); EQOS_MTL_EST_FRMS_ERR);
/* Disable est as error happen */
value = osi_readla(osi_core, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_CONTROL);
/* DDBF 1 means don't drop packet */
if ((value & EQOS_MTL_EST_CONTROL_DDBF) ==
EQOS_MTL_EST_CONTROL_DDBF) {
value &= ~EQOS_MTL_EST_CONTROL_EEST;
osi_writela(osi_core, value, (nveu8_t *)osi_core->base +
EQOS_MTL_EST_CONTROL);
OSI_CORE_ERR(OSI_NULL, OSI_LOG_ARG_INVALID,
"Disabling EST due to HLBF, correct GCL\n",
OSI_NONE);
}
} }
if ((val & EQOS_MTL_EST_STATUS_SWLC) == EQOS_MTL_EST_STATUS_SWLC) { if ((val & EQOS_MTL_EST_STATUS_SWLC) == EQOS_MTL_EST_STATUS_SWLC) {
@@ -4675,24 +4700,26 @@ static int eqos_hw_config_fpe(struct osi_core_priv_data *osi_core,
osi_core->fpe_ready = OSI_DISABLE; osi_core->fpe_ready = OSI_DISABLE;
val = osi_readla(osi_core,
(unsigned char *)osi_core->base + EQOS_MTL_FPE_CTS);
if (((fpe->tx_queue_preemption_enable << EQOS_MTL_FPE_CTS_PEC_SHIFT) & if (((fpe->tx_queue_preemption_enable << EQOS_MTL_FPE_CTS_PEC_SHIFT) &
EQOS_MTL_FPE_CTS_PEC) == OSI_DISABLE) { EQOS_MTL_FPE_CTS_PEC) == OSI_DISABLE) {
val &= ~EQOS_MAC_FPE_CTS_EFPE; val = osi_readla(osi_core,
osi_writela(osi_core, val, (unsigned char *)osi_core->base + (nveu8_t *)osi_core->base + EQOS_MTL_FPE_CTS);
EQOS_MAC_FPE_CTS); val &= ~EQOS_MTL_FPE_CTS_PEC;
osi_writela(osi_core, val,
(nveu8_t *)osi_core->base + EQOS_MTL_FPE_CTS);
val = osi_readla(osi_core, (unsigned char *)osi_core->base + val = osi_readla(osi_core,
EQOS_MAC_RQC1R); (nveu8_t *)osi_core->base + EQOS_MAC_FPE_CTS);
val &= ~EQOS_MAC_RQC1R_FPRQ; val &= ~EQOS_MAC_FPE_CTS_EFPE;
osi_writela(osi_core, val, (unsigned char *)osi_core->base + osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
EQOS_MAC_RQC1R); EQOS_MAC_FPE_CTS);
return 0; return 0;
} }
val = osi_readla(osi_core,
(nveu8_t *)osi_core->base + EQOS_MTL_FPE_CTS);
val &= ~EQOS_MTL_FPE_CTS_PEC; val &= ~EQOS_MTL_FPE_CTS_PEC;
for (i = 0U; i < OSI_MAX_TC_NUM; i++) { for (i = 0U; i < OSI_MAX_TC_NUM; i++) {
/* max 8 bit for this structure fot TC/TXQ. Set the TC for express or /* max 8 bit for this structure fot TC/TXQ. Set the TC for express or
@@ -4712,7 +4739,7 @@ static int eqos_hw_config_fpe(struct osi_core_priv_data *osi_core,
} }
} }
osi_writela(osi_core, val, osi_writela(osi_core, val,
(unsigned char *)osi_core->base + EQOS_MTL_FPE_CTS); (nveu8_t *)osi_core->base + EQOS_MTL_FPE_CTS);
/* Setting RQ as RxQ 0 is not allowed */ /* Setting RQ as RxQ 0 is not allowed */
if (fpe->rq == 0x0U || fpe->rq >= OSI_EQOS_MAX_NUM_CHANS) { if (fpe->rq == 0x0U || fpe->rq >= OSI_EQOS_MAX_NUM_CHANS) {
@@ -5330,6 +5357,7 @@ static nve32_t eqos_set_avb_algorithm(
EQOS_MTL_CH0_TX_OP_MODE_IDX + qinx); EQOS_MTL_CH0_TX_OP_MODE_IDX + qinx);
/* Set Algo and Credit control */ /* Set Algo and Credit control */
value = OSI_DISABLE;
if (avb->algo == OSI_MTL_TXQ_AVALG_CBS) { if (avb->algo == OSI_MTL_TXQ_AVALG_CBS) {
value = (avb->credit_control << EQOS_MTL_TXQ_ETS_CR_CC_SHIFT) & value = (avb->credit_control << EQOS_MTL_TXQ_ETS_CR_CC_SHIFT) &
EQOS_MTL_TXQ_ETS_CR_CC; EQOS_MTL_TXQ_ETS_CR_CC;

View File

@@ -538,6 +538,7 @@
OSI_BIT(28) | OSI_BIT(29) | \ OSI_BIT(28) | OSI_BIT(29) | \
OSI_BIT(30) | OSI_BIT(31)) OSI_BIT(30) | OSI_BIT(31))
#define EQOS_MTL_EST_CONTROL_PTOV_SHIFT 24U #define EQOS_MTL_EST_CONTROL_PTOV_SHIFT 24U
#define EQOS_MTL_EST_PTOV_RECOMMEND 32U
#define EQOS_MTL_EST_CONTROL_CTOV (OSI_BIT(12) | OSI_BIT(13) | \ #define EQOS_MTL_EST_CONTROL_CTOV (OSI_BIT(12) | OSI_BIT(13) | \
OSI_BIT(14) | OSI_BIT(15) | \ OSI_BIT(14) | OSI_BIT(15) | \
OSI_BIT(16) | OSI_BIT(17) | \ OSI_BIT(16) | OSI_BIT(17) | \
@@ -545,6 +546,7 @@
OSI_BIT(20) | OSI_BIT(21) | \ OSI_BIT(20) | OSI_BIT(21) | \
OSI_BIT(22) | OSI_BIT(23)) OSI_BIT(22) | OSI_BIT(23))
#define EQOS_MTL_EST_CONTROL_CTOV_SHIFT 12U #define EQOS_MTL_EST_CONTROL_CTOV_SHIFT 12U
#define EQOS_MTL_EST_CTOV_RECOMMEND 94U
#define EQOS_MTL_EST_CONTROL_TILS (OSI_BIT(8) | OSI_BIT(9) | \ #define EQOS_MTL_EST_CONTROL_TILS (OSI_BIT(8) | OSI_BIT(9) | \
OSI_BIT(10)) OSI_BIT(10))
#define EQOS_MTL_EST_CONTROL_LCSE (OSI_BIT(6) | OSI_BIT(5)) #define EQOS_MTL_EST_CONTROL_LCSE (OSI_BIT(6) | OSI_BIT(5))

View File

@@ -2927,23 +2927,22 @@ static void mgbe_tsn_init(struct osi_core_priv_data *osi_core,
/* 6*1/(78.6 MHz) in ns*/ /* 6*1/(78.6 MHz) in ns*/
temp = (6U * 13U); temp = (6U * 13U);
} else { } else {
/* 6*1/(312 MHz) in ns*/ temp = MGBE_MTL_EST_PTOV_RECOMMEND;
temp = (6U * 3U);
} }
temp = temp << MGBE_MTL_EST_CONTROL_PTOV_SHIFT; temp = temp << MGBE_MTL_EST_CONTROL_PTOV_SHIFT;
val |= temp; val |= temp;
/* We have a bug on CTOV for Qbv that synopsys is yet to
* fix[Case 8001147927, Bug 200468714]. You can go ahead
* with 128*8ns for now. TODO */
val &= ~MGBE_MTL_EST_CONTROL_CTOV; val &= ~MGBE_MTL_EST_CONTROL_CTOV;
temp = (128U * 8U); temp = MGBE_MTL_EST_CTOV_RECOMMEND;
temp = temp << MGBE_MTL_EST_CONTROL_CTOV_SHIFT; temp = temp << MGBE_MTL_EST_CONTROL_CTOV_SHIFT;
val |= temp; val |= temp;
/*Loop Count to report Scheduling Error*/ /*Loop Count to report Scheduling Error*/
val &= ~MGBE_MTL_EST_CONTROL_LCSE; val &= ~MGBE_MTL_EST_CONTROL_LCSE;
val |= MGBE_MTL_EST_CONTROL_LCSE_VAL; val |= MGBE_MTL_EST_CONTROL_LCSE_VAL;
val &= ~MGBE_MTL_EST_CONTROL_DDBF;
val |= MGBE_MTL_EST_CONTROL_DDBF;
osi_writela(osi_core, val, (unsigned char *)osi_core->base + osi_writela(osi_core, val, (unsigned char *)osi_core->base +
MGBE_MTL_EST_CONTROL); MGBE_MTL_EST_CONTROL);
@@ -2951,7 +2950,7 @@ static void mgbe_tsn_init(struct osi_core_priv_data *osi_core,
MGBE_MTL_EST_OVERHEAD); MGBE_MTL_EST_OVERHEAD);
val &= ~MGBE_MTL_EST_OVERHEAD_OVHD; val &= ~MGBE_MTL_EST_OVERHEAD_OVHD;
/* As per hardware programming info */ /* As per hardware programming info */
val |= OVHD_MGBE_MAC; val |= MGBE_MTL_EST_OVERHEAD_RECOMMEND;
osi_writela(osi_core, val, (nveu8_t *)osi_core->base + osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_OVERHEAD); MGBE_MTL_EST_OVERHEAD);
@@ -3449,6 +3448,7 @@ static int mgbe_set_avb_algorithm(
value |= ((avb->oper_mode << MGBE_MTL_TX_OP_MODE_TXQEN_SHIFT) & value |= ((avb->oper_mode << MGBE_MTL_TX_OP_MODE_TXQEN_SHIFT) &
MGBE_MTL_TX_OP_MODE_TXQEN); MGBE_MTL_TX_OP_MODE_TXQEN);
/* Set TC mapping */ /* Set TC mapping */
value &= ~MGBE_MTL_TX_OP_MODE_Q2TCMAP;
value |= ((tcinx << MGBE_MTL_TX_OP_MODE_Q2TCMAP_SHIFT) & value |= ((tcinx << MGBE_MTL_TX_OP_MODE_Q2TCMAP_SHIFT) &
MGBE_MTL_TX_OP_MODE_Q2TCMAP); MGBE_MTL_TX_OP_MODE_Q2TCMAP);
osi_writela(osi_core, value, (unsigned char *)osi_core->base + osi_writela(osi_core, value, (unsigned char *)osi_core->base +
@@ -3612,12 +3612,13 @@ static int mgbe_get_avb_algorithm(struct osi_core_priv_data *const osi_core,
*/ */
static void mgbe_handle_mtl_intrs(struct osi_core_priv_data *osi_core) static void mgbe_handle_mtl_intrs(struct osi_core_priv_data *osi_core)
{ {
unsigned int val = 0; unsigned int val = 0U;
unsigned int sch_err = 0; unsigned int sch_err = 0U;
unsigned int frm_err = 0; unsigned int frm_err = 0U;
unsigned int temp = 0U; unsigned int temp = 0U;
unsigned int i = 0; unsigned int i = 0;
unsigned long stat_val = 0; unsigned long stat_val = 0U;
unsigned int value = 0U;
val = osi_readla(osi_core, val = osi_readla(osi_core,
(nveu8_t *)osi_core->base + MGBE_MTL_EST_STATUS); (nveu8_t *)osi_core->base + MGBE_MTL_EST_STATUS);
@@ -3658,6 +3659,14 @@ static void mgbe_handle_mtl_intrs(struct osi_core_priv_data *osi_core)
sch_err &= 0xFFU; //only 8 TC allowed so clearing all sch_err &= 0xFFU; //only 8 TC allowed so clearing all
osi_writela(osi_core, sch_err, (nveu8_t *)osi_core->base + osi_writela(osi_core, sch_err, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_SCH_ERR); MGBE_MTL_EST_SCH_ERR);
/* Reset EST with print to configure it properly */
value = osi_readla(osi_core, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_CONTROL);
value &= ~MGBE_MTL_EST_EEST;
osi_writela(osi_core, value, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_CONTROL);
OSI_CORE_ERR(OSI_NULL, OSI_LOG_ARG_INVALID,
"Disabling EST due to HLBS, correct GCL\n", OSI_NONE);
} }
if ((val & MGBE_MTL_EST_STATUS_HLBF) == MGBE_MTL_EST_STATUS_HLBF) { if ((val & MGBE_MTL_EST_STATUS_HLBF) == MGBE_MTL_EST_STATUS_HLBF) {
@@ -3680,6 +3689,20 @@ static void mgbe_handle_mtl_intrs(struct osi_core_priv_data *osi_core)
frm_err &= 0xFFU; //only 8 TC allowed so clearing all frm_err &= 0xFFU; //only 8 TC allowed so clearing all
osi_writela(osi_core, frm_err, (nveu8_t *)osi_core->base + osi_writela(osi_core, frm_err, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_FRMS_ERR); MGBE_MTL_EST_FRMS_ERR);
/* Reset EST with print to configure it properly */
value = osi_readla(osi_core, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_CONTROL);
/* DDBF 1 means don't drop packets */
if ((value & MGBE_MTL_EST_CONTROL_DDBF) ==
MGBE_MTL_EST_CONTROL_DDBF) {
value &= ~MGBE_MTL_EST_EEST;
osi_writela(osi_core, value, (nveu8_t *)osi_core->base +
MGBE_MTL_EST_CONTROL);
OSI_CORE_ERR(OSI_NULL, OSI_LOG_ARG_INVALID,
"Disabling EST due to HLBF, correct GCL\n",
OSI_NONE);
}
} }
if ((val & MGBE_MTL_EST_STATUS_SWLC) == MGBE_MTL_EST_STATUS_SWLC) { if ((val & MGBE_MTL_EST_STATUS_SWLC) == MGBE_MTL_EST_STATUS_SWLC) {
@@ -4698,23 +4721,25 @@ static int mgbe_hw_config_fpe(struct osi_core_priv_data *osi_core,
osi_core->fpe_ready = OSI_DISABLE; osi_core->fpe_ready = OSI_DISABLE;
val = osi_readla(osi_core, (unsigned char *)
osi_core->base + MGBE_MTL_FPE_CTS);
if (((fpe->tx_queue_preemption_enable << MGBE_MTL_FPE_CTS_PEC_SHIFT) & if (((fpe->tx_queue_preemption_enable << MGBE_MTL_FPE_CTS_PEC_SHIFT) &
MGBE_MTL_FPE_CTS_PEC) == OSI_DISABLE) { MGBE_MTL_FPE_CTS_PEC) == OSI_DISABLE) {
val &= ~MGBE_MAC_FPE_CTS_EFPE; val = osi_readla(osi_core, (nveu8_t *)osi_core->base +
osi_writela(osi_core, val, (unsigned char *)osi_core->base + MGBE_MTL_FPE_CTS);
MGBE_MAC_FPE_CTS); val &= ~MGBE_MTL_FPE_CTS_PEC;
osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
MGBE_MTL_FPE_CTS);
val = osi_readla(osi_core, (unsigned char *)osi_core->base + val = osi_readla(osi_core, (nveu8_t *)osi_core->base +
MGBE_MAC_RQC1R); MGBE_MAC_FPE_CTS);
val &= ~MGBE_MAC_RQC1R_RQ; val &= ~MGBE_MAC_FPE_CTS_EFPE;
osi_writela(osi_core, val, (unsigned char *)osi_core->base + osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
MGBE_MAC_RQC1R); MGBE_MAC_FPE_CTS);
return 0; return 0;
} }
val = osi_readla(osi_core, (nveu8_t *)osi_core->base +
MGBE_MTL_FPE_CTS);
val &= ~MGBE_MTL_FPE_CTS_PEC; val &= ~MGBE_MTL_FPE_CTS_PEC;
for (i = 0U; i < OSI_MAX_TC_NUM; i++) { for (i = 0U; i < OSI_MAX_TC_NUM; i++) {
/* max 8 bit for this structure fot TC/TXQ. Set the TC for express or /* max 8 bit for this structure fot TC/TXQ. Set the TC for express or
@@ -4733,8 +4758,8 @@ static int mgbe_hw_config_fpe(struct osi_core_priv_data *osi_core,
} }
} }
} }
osi_writela(osi_core, val, (unsigned char *) osi_writela(osi_core, val, (nveu8_t *)osi_core->base +
osi_core->base + MGBE_MTL_FPE_CTS); MGBE_MTL_FPE_CTS);
if (fpe->rq == 0x0U || fpe->rq >= OSI_MGBE_MAX_NUM_CHANS) { if (fpe->rq == 0x0U || fpe->rq >= OSI_MGBE_MAX_NUM_CHANS) {
OSI_CORE_ERR(osi_core->osd, OSI_LOG_ARG_INVALID, OSI_CORE_ERR(osi_core->osd, OSI_LOG_ARG_INVALID,

View File

@@ -609,6 +609,7 @@
OSI_BIT(29) | OSI_BIT(30) | \ OSI_BIT(29) | OSI_BIT(30) | \
OSI_BIT(31)) OSI_BIT(31))
#define MGBE_MTL_EST_CONTROL_PTOV_SHIFT 23U #define MGBE_MTL_EST_CONTROL_PTOV_SHIFT 23U
#define MGBE_MTL_EST_PTOV_RECOMMEND 32U
#define MGBE_MTL_EST_CONTROL_CTOV (OSI_BIT(11) | OSI_BIT(12) | \ #define MGBE_MTL_EST_CONTROL_CTOV (OSI_BIT(11) | OSI_BIT(12) | \
OSI_BIT(13) | OSI_BIT(14) | \ OSI_BIT(13) | OSI_BIT(14) | \
OSI_BIT(15) | OSI_BIT(16) | \ OSI_BIT(15) | OSI_BIT(16) | \
@@ -616,6 +617,7 @@
OSI_BIT(19) | OSI_BIT(20) | \ OSI_BIT(19) | OSI_BIT(20) | \
OSI_BIT(21) | OSI_BIT(22)) OSI_BIT(21) | OSI_BIT(22))
#define MGBE_MTL_EST_CONTROL_CTOV_SHIFT 11U #define MGBE_MTL_EST_CONTROL_CTOV_SHIFT 11U
#define MGBE_MTL_EST_CTOV_RECOMMEND 42U
#define MGBE_MTL_EST_CONTROL_TILS (OSI_BIT(8) | OSI_BIT(9) | \ #define MGBE_MTL_EST_CONTROL_TILS (OSI_BIT(8) | OSI_BIT(9) | \
OSI_BIT(10)) OSI_BIT(10))
#define MGBE_MTL_EST_CONTROL_LCSE (OSI_BIT(7) | OSI_BIT(6)) #define MGBE_MTL_EST_CONTROL_LCSE (OSI_BIT(7) | OSI_BIT(6))
@@ -627,6 +629,7 @@
#define MGBE_MTL_EST_OVERHEAD_OVHD (OSI_BIT(0) | OSI_BIT(1) | \ #define MGBE_MTL_EST_OVERHEAD_OVHD (OSI_BIT(0) | OSI_BIT(1) | \
OSI_BIT(2) | OSI_BIT(3) | \ OSI_BIT(2) | OSI_BIT(3) | \
OSI_BIT(4) | OSI_BIT(5)) OSI_BIT(4) | OSI_BIT(5))
#define MGBE_MTL_EST_OVERHEAD_RECOMMEND 56U
/* EST controlOSI_BITmap */ /* EST controlOSI_BITmap */
#define MGBE_MTL_EST_EEST OSI_BIT(0) #define MGBE_MTL_EST_EEST OSI_BIT(0)
#define MGBE_MTL_EST_SSWL OSI_BIT(1) #define MGBE_MTL_EST_SSWL OSI_BIT(1)
@@ -853,14 +856,6 @@
OSI_MGBE_MAX_MAC_ADDRESS_FILTER + 1U)) OSI_MGBE_MAX_MAC_ADDRESS_FILTER + 1U))
/** @} */ /** @} */
/**
* @addtogroup IPG over head
*
* @brief OVHD value for MGBE MAC
* @{
*/
#define OVHD_MGBE_MAC 56U
/** /**
* @addtogroup MGBE-MAC MGBE MAC HW feature registers * @addtogroup MGBE-MAC MGBE MAC HW feature registers
* *