diff mbox

[next,S35,v3,8/9] i40evf: Allocate rx buffers properly

Message ID 1461004429-34316-9-git-send-email-jesse.brandeburg@intel.com
State Accepted
Delegated to: Jeff Kirsher
Headers show

Commit Message

Jesse Brandeburg April 18, 2016, 6:33 p.m. UTC
From: Mitch Williams <mitch.a.williams@intel.com>

Allocate the correct number of RX buffers, and don't fiddle with
next_to_use. The common RX code handles all of this. This fixes a memory
leak of one page each time the driver is opened.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-Id: Id06eca353086e084921f047acad28c14745684ee
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

Comments

Bowers, AndrewX April 19, 2016, 11:05 p.m. UTC | #1
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On
> Behalf Of Jesse Brandeburg
> Sent: Monday, April 18, 2016 11:34 AM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH next S35 v3 8/9] i40evf: Allocate rx buffers
> properly
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> Allocate the correct number of RX buffers, and don't fiddle with
> next_to_use. The common RX code handles all of this. This fixes a memory
> leak of one page each time the driver is opened.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-Id: Id06eca353086e084921f047acad28c14745684ee
> ---
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
KEDR leak check doesn't show any leaks when loading and unloading driver
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 8d77ad1..6609a5b 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -990,9 +990,7 @@  static void i40evf_configure(struct i40evf_adapter *adapter)
 	for (i = 0; i < adapter->num_active_queues; i++) {
 		struct i40e_ring *ring = &adapter->rx_rings[i];
 
-		i40evf_alloc_rx_buffers(ring, ring->count);
-		ring->next_to_use = ring->count - 1;
-		writel(ring->next_to_use, ring->tail);
+		i40evf_alloc_rx_buffers(ring, I40E_DESC_UNUSED(ring));
 	}
 }
 
@@ -2762,7 +2760,6 @@  static void i40evf_remove(struct pci_dev *pdev)
 
 	iounmap(hw->hw_addr);
 	pci_release_regions(pdev);
-
 	i40evf_free_all_tx_resources(adapter);
 	i40evf_free_all_rx_resources(adapter);
 	i40evf_free_queues(adapter);