diff mbox series

net: systemport: Correct IPG length settings

Message ID 20171028003000.6114-1-f.fainelli@gmail.com
State Superseded, archived
Delegated to: David Miller
Headers show
Series net: systemport: Correct IPG length settings | expand

Commit Message

Florian Fainelli Oct. 28, 2017, 12:30 a.m. UTC
Due to a documentation mistake, the IPG length was set to 0x12 while it
should have been 12 (decimal). This would affect short packet (64B
typically) performance since the IPG was bigger than necessary.

Fixes: 44a4524c54af ("net: systemport: Add support for SYSTEMPORT Lite")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/broadcom/bcmsysport.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Florian Fainelli Oct. 28, 2017, 12:52 a.m. UTC | #1
On October 27, 2017 5:30:00 PM PDT, Florian Fainelli <f.fainelli@gmail.com> wrote:
>Due to a documentation mistake, the IPG length was set to 0x12 while it
>should have been 12 (decimal). This would affect short packet (64B
>typically) performance since the IPG was bigger than necessary.
>

David, I will be sending a v2 which moves the IPG fix outside of the netdev_uses_dsa() clause since that is independent, unlike the GIB extension. Thanks!
diff mbox series

Patch

diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index 83eec9a8c275..7c51332eb3d9 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -1811,11 +1811,13 @@  static inline void gib_set_pad_extension(struct bcm_sysport_priv *priv)
 {
 	u32 __maybe_unused reg;
 
-	/* Include Broadcom tag in pad extension */
+	/* Include Broadcom tag in pad extension and fix up IPG_LENGTH */
 	if (netdev_uses_dsa(priv->netdev)) {
 		reg = gib_readl(priv, GIB_CONTROL);
 		reg &= ~(GIB_PAD_EXTENSION_MASK << GIB_PAD_EXTENSION_SHIFT);
 		reg |= ENET_BRCM_TAG_LEN << GIB_PAD_EXTENSION_SHIFT;
+		reg &= ~(GIB_IPG_LEN_MASK << GIB_IPG_LEN_SHIFT);
+		reg |= 12 << GIB_IPG_LEN_SHIFT;
 		gib_writel(priv, reg, GIB_CONTROL);
 	}
 }