aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/netxen/netxen_nic.h1
-rw-r--r--drivers/net/netxen/netxen_nic_init.c8
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 224a74691312..ede2fa7477ac 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -149,6 +149,7 @@
149#define NX_P2_RX_JUMBO_BUF_MAX_LEN (NX_MAX_ETHERHDR + P2_MAX_MTU) 149#define NX_P2_RX_JUMBO_BUF_MAX_LEN (NX_MAX_ETHERHDR + P2_MAX_MTU)
150#define NX_P3_RX_JUMBO_BUF_MAX_LEN (NX_MAX_ETHERHDR + P3_MAX_MTU) 150#define NX_P3_RX_JUMBO_BUF_MAX_LEN (NX_MAX_ETHERHDR + P3_MAX_MTU)
151#define NX_CT_DEFAULT_RX_BUF_LEN 2048 151#define NX_CT_DEFAULT_RX_BUF_LEN 2048
152#define NX_LRO_BUFFER_EXTRA 2048
152 153
153#define NX_RX_LRO_BUFFER_LENGTH (8060) 154#define NX_RX_LRO_BUFFER_LENGTH (8060)
154 155
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 8d4aa6f74bff..04e36f2b1a93 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -265,6 +265,10 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter)
265 else 265 else
266 rds_ring->dma_size = 266 rds_ring->dma_size =
267 NX_P2_RX_JUMBO_BUF_MAX_LEN; 267 NX_P2_RX_JUMBO_BUF_MAX_LEN;
268
269 if (adapter->capabilities & NX_CAP0_HW_LRO)
270 rds_ring->dma_size += NX_LRO_BUFFER_EXTRA;
271
268 rds_ring->skb_size = 272 rds_ring->skb_size =
269 rds_ring->dma_size + NET_IP_ALIGN; 273 rds_ring->dma_size + NET_IP_ALIGN;
270 break; 274 break;
@@ -1217,6 +1221,7 @@ netxen_process_rcv(struct netxen_adapter *adapter,
1217 if (pkt_offset) 1221 if (pkt_offset)
1218 skb_pull(skb, pkt_offset); 1222 skb_pull(skb, pkt_offset);
1219 1223
1224 skb->truesize = skb->len + sizeof(struct sk_buff);
1220 skb->protocol = eth_type_trans(skb, netdev); 1225 skb->protocol = eth_type_trans(skb, netdev);
1221 1226
1222 napi_gro_receive(&sds_ring->napi, skb); 1227 napi_gro_receive(&sds_ring->napi, skb);
@@ -1278,8 +1283,7 @@ netxen_process_lro(struct netxen_adapter *adapter,
1278 1283
1279 skb_put(skb, lro_length + data_offset); 1284 skb_put(skb, lro_length + data_offset);
1280 1285
1281 skb->truesize = (skb->len + sizeof(struct sk_buff) + 1286 skb->truesize = skb->len + sizeof(struct sk_buff) + skb_headroom(skb);
1282 ((unsigned long)skb->data - (unsigned long)skb->head));
1283 1287
1284 skb_pull(skb, l2_hdr_offset); 1288 skb_pull(skb, l2_hdr_offset);
1285 skb->protocol = eth_type_trans(skb, netdev); 1289 skb->protocol = eth_type_trans(skb, netdev);