Update the driver to make use of the NETIF_F_MEMALLOC feature.

Signed-off-by: Peter Zijlstra <[EMAIL PROTECTED]>
Signed-off-by: Daniel Phillips <[EMAIL PROTECTED]>

---
 drivers/net/e1000/e1000_main.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

Index: linux-2.6/drivers/net/e1000/e1000_main.c
===================================================================
--- linux-2.6.orig/drivers/net/e1000/e1000_main.c
+++ linux-2.6/drivers/net/e1000/e1000_main.c
@@ -822,7 +822,7 @@ e1000_probe(struct pci_dev *pdev,
        if (pci_using_dac)
                netdev->features |= NETIF_F_HIGHDMA;
 
-       netdev->features |= NETIF_F_LLTX;
+       netdev->features |= NETIF_F_LLTX | NETIF_F_MEMALLOC;
 
        adapter->en_mng_pt = e1000_enable_mng_pass_thru(&adapter->hw);
 
@@ -4020,8 +4020,6 @@ e1000_alloc_rx_buffers(struct e1000_adap
                 */
                skb_reserve(skb, NET_IP_ALIGN);
 
-               skb->dev = netdev;
-
                buffer_info->skb = skb;
                buffer_info->length = adapter->rx_buffer_len;
 map_skb:
@@ -4099,8 +4097,11 @@ e1000_alloc_rx_buffers_ps(struct e1000_a
                for (j = 0; j < PS_PAGE_BUFFERS; j++) {
                        if (j < adapter->rx_ps_pages) {
                                if (likely(!ps_page->ps_page[j])) {
+                                       /* Perhaps we should alloc the skb first
+                                        * and use something like sk_buff_gfp().
+                                        */
                                        ps_page->ps_page[j] =
-                                               alloc_page(GFP_ATOMIC);
+                                               alloc_page(GFP_ATOMIC | 
__GFP_MEMALLOC);
                                        if (unlikely(!ps_page->ps_page[j])) {
                                                adapter->alloc_rx_buff_failed++;
                                                goto no_buffers;
@@ -4135,8 +4136,6 @@ e1000_alloc_rx_buffers_ps(struct e1000_a
                 */
                skb_reserve(skb, NET_IP_ALIGN);
 
-               skb->dev = netdev;
-
                buffer_info->skb = skb;
                buffer_info->length = adapter->rx_ps_bsize0;
                buffer_info->dma = pci_map_single(pdev, skb->data,
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to