diff mbox series

[1/1] net: stmmac: dwmac4: extract MAC_HW_Feature regs MSB first

Message ID 20230810095929.246901-1-0x1207@gmail.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series [1/1] net: stmmac: dwmac4: extract MAC_HW_Feature regs MSB first | expand

Checks

Context Check Description
netdev/series_format warning Single patches do not need cover letters; Target tree name not specified in the subject
netdev/tree_selection success Guessed tree name to be net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 1330 this patch: 1330
netdev/cc_maintainers success CCed 10 of 10 maintainers
netdev/build_clang fail Errors and warnings before: 1363 this patch: 1363
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 1353 this patch: 1353
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 91 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Furong Xu Aug. 10, 2023, 9:59 a.m. UTC
The bit extraction sequences are a little messy.
No code changes, just reorder them.

Signed-off-by: Furong Xu <0x1207@gmail.com>
---
 .../net/ethernet/stmicro/stmmac/dwmac4_dma.c  | 54 +++++++++----------
 1 file changed, 26 insertions(+), 28 deletions(-)

Comments

Alexandre TORGUE Aug. 10, 2023, 12:55 p.m. UTC | #1
Hi Furong

On 8/10/23 11:59, Furong Xu wrote:
> The bit extraction sequences are a little messy.
> No code changes, just reorder them.
> 
> Signed-off-by: Furong Xu <0x1207@gmail.com>
> ---
>   .../net/ethernet/stmicro/stmmac/dwmac4_dma.c  | 54 +++++++++----------
>   1 file changed, 26 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
> index 84d3a8551b03..3d9e20078193 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
> @@ -379,27 +379,27 @@ static int dwmac4_get_hw_feature(void __iomem *ioaddr,
>   {
>   	u32 hw_cap = readl(ioaddr + GMAC_HW_FEATURE0);
>   
> -	/*  MAC HW feature0 */

Why to not start with the LSB ?

> -	dma_cap->mbps_10_100 = (hw_cap & GMAC_HW_FEAT_MIISEL);
> -	dma_cap->mbps_1000 = (hw_cap & GMAC_HW_FEAT_GMIISEL) >> 1;
> -	dma_cap->half_duplex = (hw_cap & GMAC_HW_FEAT_HDSEL) >> 2;
> -	dma_cap->vlhash = (hw_cap & GMAC_HW_FEAT_VLHASH) >> 4;
> +	/* MAC HW feature0 */
> +	dma_cap->vlins = (hw_cap & GMAC_HW_FEAT_SAVLANINS) >> 27;
>   	dma_cap->multi_addr = (hw_cap & GMAC_HW_FEAT_ADDMAC) >> 18;
> -	dma_cap->pcs = (hw_cap & GMAC_HW_FEAT_PCSSEL) >> 3;
> -	dma_cap->sma_mdio = (hw_cap & GMAC_HW_FEAT_SMASEL) >> 5;
> -	dma_cap->pmt_remote_wake_up = (hw_cap & GMAC_HW_FEAT_RWKSEL) >> 6;
> -	dma_cap->pmt_magic_frame = (hw_cap & GMAC_HW_FEAT_MGKSEL) >> 7;
> -	/* MMC */
> -	dma_cap->rmon = (hw_cap & GMAC_HW_FEAT_MMCSEL) >> 8;
> -	/* IEEE 1588-2008 */
> -	dma_cap->atime_stamp = (hw_cap & GMAC_HW_FEAT_TSSEL) >> 12;
> -	/* 802.3az - Energy-Efficient Ethernet (EEE) */
> -	dma_cap->eee = (hw_cap & GMAC_HW_FEAT_EEESEL) >> 13;
>   	/* TX and RX csum */
> -	dma_cap->tx_coe = (hw_cap & GMAC_HW_FEAT_TXCOSEL) >> 14;
>   	dma_cap->rx_coe =  (hw_cap & GMAC_HW_FEAT_RXCOESEL) >> 16;
> -	dma_cap->vlins = (hw_cap & GMAC_HW_FEAT_SAVLANINS) >> 27;
> +	dma_cap->tx_coe = (hw_cap & GMAC_HW_FEAT_TXCOSEL) >> 14;
> +	/* 802.3az - Energy-Efficient Ethernet (EEE) */
> +	dma_cap->eee = (hw_cap & GMAC_HW_FEAT_EEESEL) >> 13;
> +	/* IEEE 1588-2008 */
> +	dma_cap->atime_stamp = (hw_cap & GMAC_HW_FEAT_TSSEL) >> 12;
>   	dma_cap->arpoffsel = (hw_cap & GMAC_HW_FEAT_ARPOFFSEL) >> 9;
> +	/* MMC */
> +	dma_cap->rmon = (hw_cap & GMAC_HW_FEAT_MMCSEL) >> 8;
> +	dma_cap->pmt_magic_frame = (hw_cap & GMAC_HW_FEAT_MGKSEL) >> 7;
> +	dma_cap->pmt_remote_wake_up = (hw_cap & GMAC_HW_FEAT_RWKSEL) >> 6;
> +	dma_cap->sma_mdio = (hw_cap & GMAC_HW_FEAT_SMASEL) >> 5;
> +	dma_cap->vlhash = (hw_cap & GMAC_HW_FEAT_VLHASH) >> 4;
> +	dma_cap->pcs = (hw_cap & GMAC_HW_FEAT_PCSSEL) >> 3;
> +	dma_cap->half_duplex = (hw_cap & GMAC_HW_FEAT_HDSEL) >> 2;
> +	dma_cap->mbps_1000 = (hw_cap & GMAC_HW_FEAT_GMIISEL) >> 1;
> +	dma_cap->mbps_10_100 = (hw_cap & GMAC_HW_FEAT_MIISEL);
>   
>   	/* MAC HW feature1 */
>   	hw_cap = readl(ioaddr + GMAC_HW_FEATURE1);
> @@ -408,7 +408,6 @@ static int dwmac4_get_hw_feature(void __iomem *ioaddr,
>   	dma_cap->av = (hw_cap & GMAC_HW_FEAT_AVSEL) >> 20;
>   	dma_cap->tsoen = (hw_cap & GMAC_HW_TSOEN) >> 18;
>   	dma_cap->sphen = (hw_cap & GMAC_HW_FEAT_SPHEN) >> 17;
> -
>   	dma_cap->addr64 = (hw_cap & GMAC_HW_ADDR64) >> 14;
>   	switch (dma_cap->addr64) {
>   	case 0:
> @@ -424,31 +423,30 @@ static int dwmac4_get_hw_feature(void __iomem *ioaddr,
>   		dma_cap->addr64 = 32;
>   		break;
>   	}
> -
>   	/* RX and TX FIFO sizes are encoded as log2(n / 128). Undo that by
>   	 * shifting and store the sizes in bytes.
>   	 */
>   	dma_cap->tx_fifo_size = 128 << ((hw_cap & GMAC_HW_TXFIFOSIZE) >> 6);
>   	dma_cap->rx_fifo_size = 128 << ((hw_cap & GMAC_HW_RXFIFOSIZE) >> 0);
> +
>   	/* MAC HW feature2 */
>   	hw_cap = readl(ioaddr + GMAC_HW_FEATURE2);
> +	/* Number of Auxiliary Snapshot Inputs */
> +	dma_cap->aux_snapshot_n = (hw_cap & GMAC_HW_FEAT_AUXSNAPNUM) >> 28;
> +	/* PPS output */
> +	dma_cap->pps_out_num = (hw_cap & GMAC_HW_FEAT_PPSOUTNUM) >> 24;
>   	/* TX and RX number of channels */
> -	dma_cap->number_rx_channel =
> -		((hw_cap & GMAC_HW_FEAT_RXCHCNT) >> 12) + 1;
>   	dma_cap->number_tx_channel =
>   		((hw_cap & GMAC_HW_FEAT_TXCHCNT) >> 18) + 1;
> +	dma_cap->number_rx_channel =
> +		((hw_cap & GMAC_HW_FEAT_RXCHCNT) >> 12) + 1;
>   	/* TX and RX number of queues */
> -	dma_cap->number_rx_queues =
> -		((hw_cap & GMAC_HW_FEAT_RXQCNT) >> 0) + 1;
>   	dma_cap->number_tx_queues =
>   		((hw_cap & GMAC_HW_FEAT_TXQCNT) >> 6) + 1;
> -	/* PPS output */
> -	dma_cap->pps_out_num = (hw_cap & GMAC_HW_FEAT_PPSOUTNUM) >> 24;
> -
> +	dma_cap->number_rx_queues =
> +		((hw_cap & GMAC_HW_FEAT_RXQCNT) >> 0) + 1;
>   	/* IEEE 1588-2002 */
>   	dma_cap->time_stamp = 0;
> -	/* Number of Auxiliary Snapshot Inputs */
> -	dma_cap->aux_snapshot_n = (hw_cap & GMAC_HW_FEAT_AUXSNAPNUM) >> 28;
>   
>   	/* MAC HW feature3 */
>   	hw_cap = readl(ioaddr + GMAC_HW_FEATURE3);
Andrew Lunn Aug. 10, 2023, 1:59 p.m. UTC | #2
On Thu, Aug 10, 2023 at 05:59:29PM +0800, Furong Xu wrote:
> The bit extraction sequences are a little messy.
> No code changes, just reorder them.

How is this substantially better?

If bugs are found in this code, your change is going to make it harder
to back port the fixes to stable kernels. cherry-pick is unlikely to
work, it will need a human to look at it. Not hard, but still effort
for somebody.

So i think there needs to be a clear benefit to this, and you should
mention the benefit in the commit message.

    Andrew
Furong Xu Aug. 11, 2023, 4:14 a.m. UTC | #3
On Thu, 10 Aug 2023 15:59:25 +0200
Andrew Lunn <andrew@lunn.ch> wrote:

> On Thu, Aug 10, 2023 at 05:59:29PM +0800, Furong Xu wrote:
> > The bit extraction sequences are a little messy.
> > No code changes, just reorder them.  
> 
> How is this substantially better?
> 
> If bugs are found in this code, your change is going to make it harder
> to back port the fixes to stable kernels. cherry-pick is unlikely to
> work, it will need a human to look at it. Not hard, but still effort
> for somebody.
> 
> So i think there needs to be a clear benefit to this, and you should
> mention the benefit in the commit message.
> 
>     Andrew

Hi Andrew, Alexandre

In Synopsys databook, the description tables about all registers
start with the MSB.
So we can read one line code and then check it against one table row,
and goto next line of code against next row of table.

I agree with that this commit make cherry-pick less compatible.

If the benefit above is not worthy enough, we abandon this commit :)

Thanks.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
index 84d3a8551b03..3d9e20078193 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
@@ -379,27 +379,27 @@  static int dwmac4_get_hw_feature(void __iomem *ioaddr,
 {
 	u32 hw_cap = readl(ioaddr + GMAC_HW_FEATURE0);
 
-	/*  MAC HW feature0 */
-	dma_cap->mbps_10_100 = (hw_cap & GMAC_HW_FEAT_MIISEL);
-	dma_cap->mbps_1000 = (hw_cap & GMAC_HW_FEAT_GMIISEL) >> 1;
-	dma_cap->half_duplex = (hw_cap & GMAC_HW_FEAT_HDSEL) >> 2;
-	dma_cap->vlhash = (hw_cap & GMAC_HW_FEAT_VLHASH) >> 4;
+	/* MAC HW feature0 */
+	dma_cap->vlins = (hw_cap & GMAC_HW_FEAT_SAVLANINS) >> 27;
 	dma_cap->multi_addr = (hw_cap & GMAC_HW_FEAT_ADDMAC) >> 18;
-	dma_cap->pcs = (hw_cap & GMAC_HW_FEAT_PCSSEL) >> 3;
-	dma_cap->sma_mdio = (hw_cap & GMAC_HW_FEAT_SMASEL) >> 5;
-	dma_cap->pmt_remote_wake_up = (hw_cap & GMAC_HW_FEAT_RWKSEL) >> 6;
-	dma_cap->pmt_magic_frame = (hw_cap & GMAC_HW_FEAT_MGKSEL) >> 7;
-	/* MMC */
-	dma_cap->rmon = (hw_cap & GMAC_HW_FEAT_MMCSEL) >> 8;
-	/* IEEE 1588-2008 */
-	dma_cap->atime_stamp = (hw_cap & GMAC_HW_FEAT_TSSEL) >> 12;
-	/* 802.3az - Energy-Efficient Ethernet (EEE) */
-	dma_cap->eee = (hw_cap & GMAC_HW_FEAT_EEESEL) >> 13;
 	/* TX and RX csum */
-	dma_cap->tx_coe = (hw_cap & GMAC_HW_FEAT_TXCOSEL) >> 14;
 	dma_cap->rx_coe =  (hw_cap & GMAC_HW_FEAT_RXCOESEL) >> 16;
-	dma_cap->vlins = (hw_cap & GMAC_HW_FEAT_SAVLANINS) >> 27;
+	dma_cap->tx_coe = (hw_cap & GMAC_HW_FEAT_TXCOSEL) >> 14;
+	/* 802.3az - Energy-Efficient Ethernet (EEE) */
+	dma_cap->eee = (hw_cap & GMAC_HW_FEAT_EEESEL) >> 13;
+	/* IEEE 1588-2008 */
+	dma_cap->atime_stamp = (hw_cap & GMAC_HW_FEAT_TSSEL) >> 12;
 	dma_cap->arpoffsel = (hw_cap & GMAC_HW_FEAT_ARPOFFSEL) >> 9;
+	/* MMC */
+	dma_cap->rmon = (hw_cap & GMAC_HW_FEAT_MMCSEL) >> 8;
+	dma_cap->pmt_magic_frame = (hw_cap & GMAC_HW_FEAT_MGKSEL) >> 7;
+	dma_cap->pmt_remote_wake_up = (hw_cap & GMAC_HW_FEAT_RWKSEL) >> 6;
+	dma_cap->sma_mdio = (hw_cap & GMAC_HW_FEAT_SMASEL) >> 5;
+	dma_cap->vlhash = (hw_cap & GMAC_HW_FEAT_VLHASH) >> 4;
+	dma_cap->pcs = (hw_cap & GMAC_HW_FEAT_PCSSEL) >> 3;
+	dma_cap->half_duplex = (hw_cap & GMAC_HW_FEAT_HDSEL) >> 2;
+	dma_cap->mbps_1000 = (hw_cap & GMAC_HW_FEAT_GMIISEL) >> 1;
+	dma_cap->mbps_10_100 = (hw_cap & GMAC_HW_FEAT_MIISEL);
 
 	/* MAC HW feature1 */
 	hw_cap = readl(ioaddr + GMAC_HW_FEATURE1);
@@ -408,7 +408,6 @@  static int dwmac4_get_hw_feature(void __iomem *ioaddr,
 	dma_cap->av = (hw_cap & GMAC_HW_FEAT_AVSEL) >> 20;
 	dma_cap->tsoen = (hw_cap & GMAC_HW_TSOEN) >> 18;
 	dma_cap->sphen = (hw_cap & GMAC_HW_FEAT_SPHEN) >> 17;
-
 	dma_cap->addr64 = (hw_cap & GMAC_HW_ADDR64) >> 14;
 	switch (dma_cap->addr64) {
 	case 0:
@@ -424,31 +423,30 @@  static int dwmac4_get_hw_feature(void __iomem *ioaddr,
 		dma_cap->addr64 = 32;
 		break;
 	}
-
 	/* RX and TX FIFO sizes are encoded as log2(n / 128). Undo that by
 	 * shifting and store the sizes in bytes.
 	 */
 	dma_cap->tx_fifo_size = 128 << ((hw_cap & GMAC_HW_TXFIFOSIZE) >> 6);
 	dma_cap->rx_fifo_size = 128 << ((hw_cap & GMAC_HW_RXFIFOSIZE) >> 0);
+
 	/* MAC HW feature2 */
 	hw_cap = readl(ioaddr + GMAC_HW_FEATURE2);
+	/* Number of Auxiliary Snapshot Inputs */
+	dma_cap->aux_snapshot_n = (hw_cap & GMAC_HW_FEAT_AUXSNAPNUM) >> 28;
+	/* PPS output */
+	dma_cap->pps_out_num = (hw_cap & GMAC_HW_FEAT_PPSOUTNUM) >> 24;
 	/* TX and RX number of channels */
-	dma_cap->number_rx_channel =
-		((hw_cap & GMAC_HW_FEAT_RXCHCNT) >> 12) + 1;
 	dma_cap->number_tx_channel =
 		((hw_cap & GMAC_HW_FEAT_TXCHCNT) >> 18) + 1;
+	dma_cap->number_rx_channel =
+		((hw_cap & GMAC_HW_FEAT_RXCHCNT) >> 12) + 1;
 	/* TX and RX number of queues */
-	dma_cap->number_rx_queues =
-		((hw_cap & GMAC_HW_FEAT_RXQCNT) >> 0) + 1;
 	dma_cap->number_tx_queues =
 		((hw_cap & GMAC_HW_FEAT_TXQCNT) >> 6) + 1;
-	/* PPS output */
-	dma_cap->pps_out_num = (hw_cap & GMAC_HW_FEAT_PPSOUTNUM) >> 24;
-
+	dma_cap->number_rx_queues =
+		((hw_cap & GMAC_HW_FEAT_RXQCNT) >> 0) + 1;
 	/* IEEE 1588-2002 */
 	dma_cap->time_stamp = 0;
-	/* Number of Auxiliary Snapshot Inputs */
-	dma_cap->aux_snapshot_n = (hw_cap & GMAC_HW_FEAT_AUXSNAPNUM) >> 28;
 
 	/* MAC HW feature3 */
 	hw_cap = readl(ioaddr + GMAC_HW_FEATURE3);