ralink: use fe_max_buf_size to get rx buffer size

the rx_buf_size now is 1534 when mtu is 1500.
the ethernet frame with vlan tag and FCS is 1522.
so the buffer is enough.

Signed-off-by: michael lee <igvtee@gmail.com>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44116 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Felix Fietkau 2015-01-24 22:45:16 +00:00
parent ff3864e8a4
commit 2bc783064d
1 changed files with 5 additions and 7 deletions

View File

@ -178,7 +178,7 @@ static inline int fe_max_frag_size(int mtu)
static inline int fe_max_buf_size(int frag_size) static inline int fe_max_buf_size(int frag_size)
{ {
return frag_size - FE_RX_HLEN - return frag_size - NET_SKB_PAD - NET_IP_ALIGN -
SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
} }
@ -1284,13 +1284,11 @@ static int fe_change_mtu(struct net_device *dev, int new_mtu)
if (old_mtu > ETH_DATA_LEN && new_mtu > ETH_DATA_LEN) if (old_mtu > ETH_DATA_LEN && new_mtu > ETH_DATA_LEN)
return 0; return 0;
if (new_mtu <= ETH_DATA_LEN) { if (new_mtu <= ETH_DATA_LEN)
priv->frag_size = fe_max_frag_size(ETH_DATA_LEN); priv->frag_size = fe_max_frag_size(ETH_DATA_LEN);
priv->rx_buf_size = MAX_RX_LENGTH; else
} else {
priv->frag_size = PAGE_SIZE; priv->frag_size = PAGE_SIZE;
priv->rx_buf_size = fe_max_buf_size(PAGE_SIZE); priv->rx_buf_size = fe_max_buf_size(priv->frag_size);
}
if (!netif_running(dev)) if (!netif_running(dev))
return 0; return 0;
@ -1443,7 +1441,7 @@ static int fe_probe(struct platform_device *pdev)
priv->soc = soc; priv->soc = soc;
priv->msg_enable = netif_msg_init(fe_msg_level, FE_DEFAULT_MSG_ENABLE); priv->msg_enable = netif_msg_init(fe_msg_level, FE_DEFAULT_MSG_ENABLE);
priv->frag_size = fe_max_frag_size(ETH_DATA_LEN); priv->frag_size = fe_max_frag_size(ETH_DATA_LEN);
priv->rx_buf_size = MAX_RX_LENGTH; priv->rx_buf_size = fe_max_buf_size(priv->frag_size);
if (priv->frag_size > PAGE_SIZE) { if (priv->frag_size > PAGE_SIZE) {
dev_err(&pdev->dev, "error frag size.\n"); dev_err(&pdev->dev, "error frag size.\n");
err = -EINVAL; err = -EINVAL;