Skip to content

Commit 48febf7

Browse files
cavagiudavem330
authored andcommitted
stmmac: allow mtu bigger than 1500 in case of normal desc (V4)
This patch allows to set the mtu bigger than 1500 in case of normal descriptors. This is helping some SPEAr customers. Signed-off-by: Deepak SIKRI <deepak.sikri@st.com> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 51e3137 commit 48febf7

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

drivers/net/ethernet/stmicro/stmmac/norm_desc.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ static void ndesc_init_rx_desc(struct dma_desc *p, unsigned int ring_size,
126126
for (i = 0; i < ring_size; i++) {
127127
p->des01.rx.own = 1;
128128
p->des01.rx.buffer1_size = BUF_SIZE_2KiB - 1;
129+
p->des01.rx.buffer2_size = BUF_SIZE_2KiB - 1;
129130
if (i == ring_size - 1)
130131
p->des01.rx.end_ring = 1;
131132
if (disable_rx_ic)
@@ -183,7 +184,12 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,
183184
int csum_flag)
184185
{
185186
p->des01.tx.first_segment = is_fs;
186-
p->des01.tx.buffer1_size = len;
187+
188+
if (unlikely(len > BUF_SIZE_2KiB)) {
189+
p->des01.etx.buffer1_size = BUF_SIZE_2KiB - 1;
190+
p->des01.etx.buffer2_size = len - p->des01.etx.buffer1_size;
191+
} else
192+
p->des01.tx.buffer1_size = len;
187193
}
188194

189195
static void ndesc_clear_tx_ic(struct dma_desc *p)

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,10 +1412,10 @@ static int stmmac_change_mtu(struct net_device *dev, int new_mtu)
14121412
return -EBUSY;
14131413
}
14141414

1415-
if (priv->plat->has_gmac)
1415+
if (priv->plat->enh_desc)
14161416
max_mtu = JUMBO_LEN;
14171417
else
1418-
max_mtu = ETH_DATA_LEN;
1418+
max_mtu = BUF_SIZE_4KiB;
14191419

14201420
if ((new_mtu < 46) || (new_mtu > max_mtu)) {
14211421
pr_err("%s: invalid MTU, max MTU is: %d\n", dev->name, max_mtu);

0 commit comments

Comments
 (0)