aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorHannes Frederic Sowa <hannes@stressinduktion.org>2013-04-02 14:36:46 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-05-01 08:56:37 -0700
commitabd70dfd7e1df706a70fb9fa7d7777cf4428fe2c (patch)
tree684642dfe8b63a64eee1ec7b2e852761f0e891af /drivers/net
parentd569e833b770b21d29147c1ed937ab3882647252 (diff)
downloadkernel_samsung_smdk4412-abd70dfd7e1df706a70fb9fa7d7777cf4428fe2c.zip
kernel_samsung_smdk4412-abd70dfd7e1df706a70fb9fa7d7777cf4428fe2c.tar.gz
kernel_samsung_smdk4412-abd70dfd7e1df706a70fb9fa7d7777cf4428fe2c.tar.bz2
atl1e: limit gso segment size to prevent generation of wrong ip length fields
[ Upstream commit 31d1670e73f4911fe401273a8f576edc9c2b5fea ] The limit of 0x3c00 is taken from the windows driver. Suggested-by: Huang, Xiong <xiong@qca.qualcomm.com> Cc: Huang, Xiong <xiong@qca.qualcomm.com> Cc: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/atl1e/atl1e.h2
-rw-r--r--drivers/net/atl1e/atl1e_main.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/atl1e/atl1e.h b/drivers/net/atl1e/atl1e.h
index 4093097..2cec0df 100644
--- a/drivers/net/atl1e/atl1e.h
+++ b/drivers/net/atl1e/atl1e.h
@@ -186,7 +186,7 @@ struct atl1e_tpd_desc {
/* how about 0x2000 */
#define MAX_TX_BUF_LEN 0x2000
#define MAX_TX_BUF_SHIFT 13
-/*#define MAX_TX_BUF_LEN 0x3000 */
+#define MAX_TSO_SEG_SIZE 0x3c00
/* rrs word 1 bit 0:31 */
#define RRS_RX_CSUM_MASK 0xFFFF
diff --git a/drivers/net/atl1e/atl1e_main.c b/drivers/net/atl1e/atl1e_main.c
index b0132bb..8fe1cd3 100644
--- a/drivers/net/atl1e/atl1e_main.c
+++ b/drivers/net/atl1e/atl1e_main.c
@@ -2333,6 +2333,7 @@ static int __devinit atl1e_probe(struct pci_dev *pdev,
INIT_WORK(&adapter->reset_task, atl1e_reset_task);
INIT_WORK(&adapter->link_chg_task, atl1e_link_chg_task);
+ netif_set_gso_max_size(netdev, MAX_TSO_SEG_SIZE);
err = register_netdev(netdev);
if (err) {
netdev_err(netdev, "register netdevice failed\n");