[CASSINI]: Revert 'dont touch page_count'.

This reverts changeset fa4f0774d7c6cccb4d1fda76b91dd8eddcb2dd6a
([CASSINI]: dont touch page_count) because it breaks the driver.

The local page counting added by this changeset did not account
for the asynchronous page count changes done by kfree_skb()
and friends.

The change adds extra atomics and on top of it all appears to be
totally unnecessary as well.

Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Nick Piggin <npiggin@suse.de>

+4 -32
+4 -32
drivers/net/cassini.c
··· 336 336 cas_disable_irq(cp, i); 337 337 } 338 338 339 - static inline void cas_buffer_init(cas_page_t *cp) 340 - { 341 - struct page *page = cp->buffer; 342 - atomic_set((atomic_t *)&page->lru.next, 1); 343 - } 344 - 345 - static inline int cas_buffer_count(cas_page_t *cp) 346 - { 347 - struct page *page = cp->buffer; 348 - return atomic_read((atomic_t *)&page->lru.next); 349 - } 350 - 351 - static inline void cas_buffer_inc(cas_page_t *cp) 352 - { 353 - struct page *page = cp->buffer; 354 - atomic_inc((atomic_t *)&page->lru.next); 355 - } 356 - 357 - static inline void cas_buffer_dec(cas_page_t *cp) 358 - { 359 - struct page *page = cp->buffer; 360 - atomic_dec((atomic_t *)&page->lru.next); 361 - } 362 - 363 339 static void cas_enable_irq(struct cas *cp, const int ring) 364 340 { 365 341 if (ring == 0) { /* all but TX_DONE */ ··· 473 497 { 474 498 pci_unmap_page(cp->pdev, page->dma_addr, cp->page_size, 475 499 PCI_DMA_FROMDEVICE); 476 - cas_buffer_dec(page); 477 500 __free_pages(page->buffer, cp->page_order); 478 501 kfree(page); 479 502 return 0; ··· 502 527 page->buffer = alloc_pages(flags, cp->page_order); 503 528 if (!page->buffer) 504 529 goto page_err; 505 - cas_buffer_init(page); 506 530 page->dma_addr = pci_map_page(cp->pdev, page->buffer, 0, 507 531 cp->page_size, PCI_DMA_FROMDEVICE); 508 532 return page; ··· 580 606 list_for_each_safe(elem, tmp, &list) { 581 607 cas_page_t *page = list_entry(elem, cas_page_t, list); 582 608 583 - if (cas_buffer_count(page) > 1) 609 + if (page_count(page->buffer) > 1) 584 610 continue; 585 611 586 612 list_del(elem); ··· 1348 1374 cas_page_t *page = cp->rx_pages[1][index]; 1349 1375 cas_page_t *new; 1350 1376 1351 - if (cas_buffer_count(page) == 1) 1377 + if (page_count(page->buffer) == 1) 1352 1378 return page; 1353 1379 1354 1380 new = cas_page_dequeue(cp); ··· 1368 1394 cas_page_t **page1 = cp->rx_pages[1]; 1369 1395 1370 1396 /* swap if buffer is in use */ 1371 - if (cas_buffer_count(page0[index]) > 1) { 1397 + if (page_count(page0[index]->buffer) > 1) { 1372 1398 cas_page_t *new = cas_page_spare(cp, index); 1373 1399 if (new) { 1374 1400 page1[index] = page0[index]; ··· 2040 2066 skb->len += hlen - swivel; 2041 2067 2042 2068 get_page(page->buffer); 2043 - cas_buffer_inc(page); 2044 2069 frag->page = page->buffer; 2045 2070 frag->page_offset = off; 2046 2071 frag->size = hlen - swivel; ··· 2064 2091 frag++; 2065 2092 2066 2093 get_page(page->buffer); 2067 - cas_buffer_inc(page); 2068 2094 frag->page = page->buffer; 2069 2095 frag->page_offset = 0; 2070 2096 frag->size = hlen; ··· 2227 2255 released = 0; 2228 2256 while (entry != last) { 2229 2257 /* make a new buffer if it's still in use */ 2230 - if (cas_buffer_count(page[entry]) > 1) { 2258 + if (page_count(page[entry]->buffer) > 1) { 2231 2259 cas_page_t *new = cas_page_dequeue(cp); 2232 2260 if (!new) { 2233 2261 /* let the timer know that we need to