| From db7408189c80397d5b036a2cc7a2eda889cd437e Mon Sep 17 00:00:00 2001 |
| From: Hannes Frederic Sowa <hannes@stressinduktion.org> |
| Date: Tue, 2 Apr 2013 14:36:46 +0000 |
| Subject: atl1e: limit gso segment size to prevent generation of wrong ip length fields |
| |
| |
| From: Hannes Frederic Sowa <hannes@stressinduktion.org> |
| |
| [ 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> |
| --- |
| drivers/net/ethernet/atheros/atl1e/atl1e.h | 2 +- |
| drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 1 + |
| 2 files changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/atheros/atl1e/atl1e.h |
| +++ b/drivers/net/ethernet/atheros/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 |
| --- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c |
| +++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c |
| @@ -2354,6 +2354,7 @@ static int __devinit atl1e_probe(struct |
| |
| 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"); |