Message ID | 20240207224001.2109224-1-quic_abchauha@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [net-next,v3] net: stmmac: dwmac-qcom-ethqos: Enable TBS on all queues but 0 | expand |
On 2/7/2024 2:40 PM, Abhishek Chauhan wrote: > TSO and TBS cannot co-exist. TBS requires special descriptor to be > allocated at bootup. Initialising Tx queues at probe to support > TSO and TBS can help in allocating those resources at bootup. > > TX queues with TBS can support etf qdisc hw offload. > > This is similar to the patch raised by NXP > commit 3b12ec8f618e ("net: stmmac: dwmac-imx: set TSO/TBS TX queues default > settings") > > Changes since v2: > - Fixed the styling of comment in the dwmac-qcom-ethqos.c > - Followed the upstream format to give other glue > driver references to solve the same problem > - Appended the subject with net-next > - Discussion of why this patch is required is discussed in > https://lore.kernel.org/netdev/c2497eef-1041-4cd0-8220-42622c8902f4@quicinc.com/ > > Changes since v1: > - Subject is changed as per upstream guidelines > - Added a reference of a similar change done by NXP in > body of the commit message Note that your patch change history should not be part of your commit text, but instead should be below the "---" line. > > Signed-off-by: Abhishek Chauhan <quic_abchauha@quicinc.com> > --- in other words put it here. the change history will not be part of the git history I strongly suggest looking at b4 since it will manage your patch history: https://b4.docs.kernel.org/en/latest/index.html#for-developers > drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > index 31631e3f89d0..2691a250a5a7 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > @@ -728,7 +728,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev) > struct stmmac_resources stmmac_res; > struct device *dev = &pdev->dev; > struct qcom_ethqos *ethqos; > - int ret; > + int ret, i; > > ret = stmmac_get_platform_resources(pdev, &stmmac_res); > if (ret) > @@ -822,6 +822,10 @@ static int qcom_ethqos_probe(struct platform_device *pdev) > plat_dat->serdes_powerdown = qcom_ethqos_serdes_powerdown; > } > > + /* Enable TSO on queue0 and enable TBS on rest of the queues */ > + for (i = 1; i < plat_dat->tx_queues_to_use; i++) > + plat_dat->tx_queues_cfg[i].tbs_en = 1; > + > return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); > } >
On Wed, Feb 07, 2024 at 02:40:01PM -0800, Abhishek Chauhan wrote: > TSO and TBS cannot co-exist. TBS requires special descriptor to be > allocated at bootup. Initialising Tx queues at probe to support > TSO and TBS can help in allocating those resources at bootup. > > TX queues with TBS can support etf qdisc hw offload. > > This is similar to the patch raised by NXP > commit 3b12ec8f618e ("net: stmmac: dwmac-imx: set TSO/TBS TX queues default > settings") > > Changes since v2: > - Fixed the styling of comment in the dwmac-qcom-ethqos.c > - Followed the upstream format to give other glue > driver references to solve the same problem > - Appended the subject with net-next > - Discussion of why this patch is required is discussed in > https://lore.kernel.org/netdev/c2497eef-1041-4cd0-8220-42622c8902f4@quicinc.com/ > > Changes since v1: > - Subject is changed as per upstream guidelines > - Added a reference of a similar change done by NXP in > body of the commit message > > Signed-off-by: Abhishek Chauhan <quic_abchauha@quicinc.com> Please add my: Tested-by: Andrew Halaney <ahalaney@redhat.com> # sa8775p-ride when submitting v4 with the changelog moved as Jeff mentioned. This seems to work well (I can enable ETF on all queues but 0, and as far as I can tell after trying to test that for a while it seems to work as expected). Thanks, Andrew > --- > drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > index 31631e3f89d0..2691a250a5a7 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > @@ -728,7 +728,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev) > struct stmmac_resources stmmac_res; > struct device *dev = &pdev->dev; > struct qcom_ethqos *ethqos; > - int ret; > + int ret, i; > > ret = stmmac_get_platform_resources(pdev, &stmmac_res); > if (ret) > @@ -822,6 +822,10 @@ static int qcom_ethqos_probe(struct platform_device *pdev) > plat_dat->serdes_powerdown = qcom_ethqos_serdes_powerdown; > } > > + /* Enable TSO on queue0 and enable TBS on rest of the queues */ > + for (i = 1; i < plat_dat->tx_queues_to_use; i++) > + plat_dat->tx_queues_cfg[i].tbs_en = 1; > + > return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); > } > > -- > 2.25.1 >
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index 31631e3f89d0..2691a250a5a7 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -728,7 +728,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev) struct stmmac_resources stmmac_res; struct device *dev = &pdev->dev; struct qcom_ethqos *ethqos; - int ret; + int ret, i; ret = stmmac_get_platform_resources(pdev, &stmmac_res); if (ret) @@ -822,6 +822,10 @@ static int qcom_ethqos_probe(struct platform_device *pdev) plat_dat->serdes_powerdown = qcom_ethqos_serdes_powerdown; } + /* Enable TSO on queue0 and enable TBS on rest of the queues */ + for (i = 1; i < plat_dat->tx_queues_to_use; i++) + plat_dat->tx_queues_cfg[i].tbs_en = 1; + return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); }
TSO and TBS cannot co-exist. TBS requires special descriptor to be allocated at bootup. Initialising Tx queues at probe to support TSO and TBS can help in allocating those resources at bootup. TX queues with TBS can support etf qdisc hw offload. This is similar to the patch raised by NXP commit 3b12ec8f618e ("net: stmmac: dwmac-imx: set TSO/TBS TX queues default settings") Changes since v2: - Fixed the styling of comment in the dwmac-qcom-ethqos.c - Followed the upstream format to give other glue driver references to solve the same problem - Appended the subject with net-next - Discussion of why this patch is required is discussed in https://lore.kernel.org/netdev/c2497eef-1041-4cd0-8220-42622c8902f4@quicinc.com/ Changes since v1: - Subject is changed as per upstream guidelines - Added a reference of a similar change done by NXP in body of the commit message Signed-off-by: Abhishek Chauhan <quic_abchauha@quicinc.com> --- drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)