atl1.c (8b0c11679fd37522d8d34a76101319a085d80912) atl1.c (9e903e085262ffbf1fc44a17ac06058aca03524a)
1/*
2 * Copyright(c) 2005 - 2006 Attansic Corporation. All rights reserved.
3 * Copyright(c) 2006 - 2007 Chris Snook <csnook@redhat.com>
4 * Copyright(c) 2006 - 2008 Jay Cliburn <jcliburn@gmail.com>
5 *
6 * Derived from Intel e1000 driver
7 * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
8 *

--- 2253 unchanged lines hidden (view full) ---

2262 offset = (unsigned long)skb->data & ~PAGE_MASK;
2263 buffer_info->dma = pci_map_page(adapter->pdev, page,
2264 offset, buf_len, PCI_DMA_TODEVICE);
2265 if (++next_to_use == tpd_ring->count)
2266 next_to_use = 0;
2267 }
2268
2269 for (f = 0; f < nr_frags; f++) {
1/*
2 * Copyright(c) 2005 - 2006 Attansic Corporation. All rights reserved.
3 * Copyright(c) 2006 - 2007 Chris Snook <csnook@redhat.com>
4 * Copyright(c) 2006 - 2008 Jay Cliburn <jcliburn@gmail.com>
5 *
6 * Derived from Intel e1000 driver
7 * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
8 *

--- 2253 unchanged lines hidden (view full) ---

2262 offset = (unsigned long)skb->data & ~PAGE_MASK;
2263 buffer_info->dma = pci_map_page(adapter->pdev, page,
2264 offset, buf_len, PCI_DMA_TODEVICE);
2265 if (++next_to_use == tpd_ring->count)
2266 next_to_use = 0;
2267 }
2268
2269 for (f = 0; f < nr_frags; f++) {
2270 struct skb_frag_struct *frag;
2270 const struct skb_frag_struct *frag;
2271 u16 i, nseg;
2272
2273 frag = &skb_shinfo(skb)->frags[f];
2271 u16 i, nseg;
2272
2273 frag = &skb_shinfo(skb)->frags[f];
2274 buf_len = frag->size;
2274 buf_len = skb_frag_size(frag);
2275
2276 nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) /
2277 ATL1_MAX_TX_BUF_LEN;
2278 for (i = 0; i < nseg; i++) {
2279 buffer_info = &tpd_ring->buffer_info[next_to_use];
2280 BUG_ON(buffer_info->skb);
2281
2282 buffer_info->skb = NULL;

--- 68 unchanged lines hidden (view full) ---

2351{
2352 struct atl1_adapter *adapter = netdev_priv(netdev);
2353 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
2354 int len;
2355 int tso;
2356 int count = 1;
2357 int ret_val;
2358 struct tx_packet_desc *ptpd;
2275
2276 nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) /
2277 ATL1_MAX_TX_BUF_LEN;
2278 for (i = 0; i < nseg; i++) {
2279 buffer_info = &tpd_ring->buffer_info[next_to_use];
2280 BUG_ON(buffer_info->skb);
2281
2282 buffer_info->skb = NULL;

--- 68 unchanged lines hidden (view full) ---

2351{
2352 struct atl1_adapter *adapter = netdev_priv(netdev);
2353 struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
2354 int len;
2355 int tso;
2356 int count = 1;
2357 int ret_val;
2358 struct tx_packet_desc *ptpd;
2359 u16 frag_size;
2360 u16 vlan_tag;
2361 unsigned int nr_frags = 0;
2362 unsigned int mss = 0;
2363 unsigned int f;
2364 unsigned int proto_hdr_len;
2365
2366 len = skb_headlen(skb);
2367
2368 if (unlikely(skb->len <= 0)) {
2369 dev_kfree_skb_any(skb);
2370 return NETDEV_TX_OK;
2371 }
2372
2373 nr_frags = skb_shinfo(skb)->nr_frags;
2374 for (f = 0; f < nr_frags; f++) {
2359 u16 vlan_tag;
2360 unsigned int nr_frags = 0;
2361 unsigned int mss = 0;
2362 unsigned int f;
2363 unsigned int proto_hdr_len;
2364
2365 len = skb_headlen(skb);
2366
2367 if (unlikely(skb->len <= 0)) {
2368 dev_kfree_skb_any(skb);
2369 return NETDEV_TX_OK;
2370 }
2371
2372 nr_frags = skb_shinfo(skb)->nr_frags;
2373 for (f = 0; f < nr_frags; f++) {
2375 frag_size = skb_shinfo(skb)->frags[f].size;
2376 if (frag_size)
2377 count += (frag_size + ATL1_MAX_TX_BUF_LEN - 1) /
2378 ATL1_MAX_TX_BUF_LEN;
2374 unsigned int f_size = skb_frag_size(&skb_shinfo(skb)->frags[f]);
2375 count += (f_size + ATL1_MAX_TX_BUF_LEN - 1) /
2376 ATL1_MAX_TX_BUF_LEN;
2379 }
2380
2381 mss = skb_shinfo(skb)->gso_size;
2382 if (mss) {
2383 if (skb->protocol == htons(ETH_P_IP)) {
2384 proto_hdr_len = (skb_transport_offset(skb) +
2385 tcp_hdrlen(skb));
2386 if (unlikely(proto_hdr_len > len)) {

--- 1284 unchanged lines hidden ---
2377 }
2378
2379 mss = skb_shinfo(skb)->gso_size;
2380 if (mss) {
2381 if (skb->protocol == htons(ETH_P_IP)) {
2382 proto_hdr_len = (skb_transport_offset(skb) +
2383 tcp_hdrlen(skb));
2384 if (unlikely(proto_hdr_len > len)) {

--- 1284 unchanged lines hidden ---