mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 18:10:19 +08:00
sdk_dpaa: What to do with tail queue drop?
The issue is this: static int dpaa_eth_macless_probe(struct platform_device *_of_dev) { [...] INIT_LIST_HEAD(&priv->dpa_fq_list); err = dpa_fq_probe_macless(dev, &priv->dpa_fq_list, RX); if (!err) err = dpa_fq_probe_macless(dev, &priv->dpa_fq_list, TX); if (err < 0) goto fq_probe_failed; [...] /* Add the FQs to the interface, and make them active */ /* For MAC-less devices we only get here for RX frame queues * initialization, which are the TX queues of the other * partition. * It is safe to rely on one partition to set the FQ taildrop * threshold for the TX queues of the other partition * because the ERN notifications will be received by the * partition doing qman_enqueue. */ err = dpa_fqs_init(dev, &priv->dpa_fq_list, true); if (err < 0) goto fq_alloc_failed; [...] The priv->dpa_fq_list contains a list of FQ_TYPE_RX_PCD and FQ_TYPE_TX items. I don't understand what the "For MAC-less devices we only get here for RX frame queues initialization" means in this context. The td_enable == true in dpa_fqs_init(). So, we have: int dpa_fq_init(struct dpa_fq *dpa_fq, bool td_enable) { [...] if (dpa_fq->fq_type == FQ_TYPE_TX || dpa_fq->fq_type == FQ_TYPE_TX_CONFIRM || dpa_fq->fq_type == FQ_TYPE_TX_CONF_MQ) { [...] initfq.we_mask |= QM_INITFQ_WE_OAC; [...] } if (td_enable) { initfq.we_mask |= QM_INITFQ_WE_TDTHRESH; qm_fqd_taildrop_set(&initfq.fqd.td, DPA_FQ_TD, 1); initfq.fqd.fq_ctrl = QM_FQCTRL_TDE; } The td_enable == true && dpa_fq->fq_type == FQ_TYPE_TX causes later: int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) { [...] if (opts && (opts->we_mask & QM_INITFQ_WE_OAC)) { /* And can't be set at the same time as TDTHRESH */ if (opts->we_mask & QM_INITFQ_WE_TDTHRESH) return -EINVAL; } This aborts the initialization of the MAC-less driver. I don't understand why this path doesn't happen on the SDK Linux system. Update #3277.
This commit is contained in:
parent
d62a3df1c7
commit
327f4e1029
@ -475,7 +475,7 @@ static int dpaa_eth_macless_probe(struct platform_device *_of_dev)
|
||||
goto fq_alloc_failed;
|
||||
#else /* __rtems__ */
|
||||
list_for_each_entry_safe(dpaa_fq, tmp, &priv->dpaa_fq_list, list) {
|
||||
err = dpaa_fq_init(dpaa_fq, true);
|
||||
err = dpaa_fq_init(dpaa_fq, false);
|
||||
if (err < 0)
|
||||
goto fq_alloc_failed;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user