Skip to content

Commit

Permalink
liquidio: free resources during shutdown
Browse files Browse the repository at this point in the history
This patch fixes the issue of proper freeing of queue
memory resources during free device. It also has fix for
correct pcie error reporting.

Signed-off-by: Derek Chickles <derek.chickles@caviumnetworks.com>
Signed-off-by: Satanand Burla <satananda.burla@caviumnetworks.com>
Signed-off-by: Felix Manlunas <felix.manlunas@caviumnetworks.com>
Signed-off-by: Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Raghu Vatsavayi authored and David S. Miller committed Jul 4, 2016
1 parent 3dcef2c commit 1e0d30f
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 8 deletions.
4 changes: 2 additions & 2 deletions drivers/net/ethernet/cavium/liquidio/cn66xx_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ void lio_cn6xxx_enable_error_reporting(struct octeon_device *oct)
u32 val;

pci_read_config_dword(oct->pci_dev, CN6XXX_PCIE_DEVCTL, &val);
if (val & 0x000f0000) {
if (val & 0x000c0000) {
dev_err(&oct->pci_dev->dev, "PCI-E Link error detected: 0x%08x\n",
val & 0x000f0000);
val & 0x000c0000);
}

val |= 0xf; /* Enable Link error reporting */
Expand Down
4 changes: 3 additions & 1 deletion drivers/net/ethernet/cavium/liquidio/lio_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3957,6 +3957,7 @@ static int octeon_device_init(struct octeon_device *octeon_dev)
/* Release any previously allocated queues */
for (j = 0; j < octeon_dev->num_oqs; j++)
octeon_delete_droq(octeon_dev, j);
return 1;
}

atomic_set(&octeon_dev->status, OCT_DEV_DROQ_INIT_DONE);
Expand All @@ -3979,7 +3980,8 @@ static int octeon_device_init(struct octeon_device *octeon_dev)

/* Setup the interrupt handler and record the INT SUM register address
*/
octeon_setup_interrupt(octeon_dev);
if (octeon_setup_interrupt(octeon_dev))
return 1;

/* Enable Octeon device interrupts */
octeon_dev->fn_list.enable_interrupt(octeon_dev->chip);
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/ethernet/cavium/liquidio/octeon_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,9 @@ static u64 cvmx_bootmem_phy_named_block_find(struct octeon_device *oct,
if (name && named_size) {
char *name_tmp =
kmalloc(name_length + 1, GFP_KERNEL);
if (!name_tmp)
break;

CVMX_BOOTMEM_NAMED_GET_NAME(oct, named_addr,
name_tmp,
name_length);
Expand Down
10 changes: 5 additions & 5 deletions drivers/net/ethernet/cavium/liquidio/octeon_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -644,16 +644,16 @@ int octeon_download_firmware(struct octeon_device *oct, const u8 *data,

void octeon_free_device_mem(struct octeon_device *oct)
{
u32 i;
int i;

for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct); i++) {
/* could check mask as well */
vfree(oct->droq[i]);
if (oct->io_qmask.oq & (1ULL << i))
vfree(oct->droq[i]);
}

for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct); i++) {
/* could check mask as well */
vfree(oct->instr_queue[i]);
if (oct->io_qmask.iq & (1ULL << i))
vfree(oct->instr_queue[i]);
}

i = oct->octeon_id;
Expand Down

0 comments on commit 1e0d30f

Please sign in to comment.