On Thu, Jul 23, 2015 at 8:43 AM, Jiri Pirko <j...@resnulli.us> wrote: > From: Jiri Pirko <j...@mellanox.com> > > Add PCI bus implementation for Mellanox Technologies Switch ASICs. This > includes firmware initialization, async queues manipulation and command > interface implementation. > > Signed-off-by: Jiri Pirko <j...@mellanox.com> > Signed-off-by: Ido Schimmel <ido...@mellanox.com> > Signed-off-by: Elad Raz <el...@mellanox.com> > ---
[cut] > +static int mlxsw_pci_fw_area_init(struct mlxsw_pci *mlxsw_pci, char *mbox, > + u16 num_pages) > +{ > + struct mlxsw_pci_mem_item *mem_item; > + int i; > + int err; Need to init err to zero here > + > + mlxsw_pci->fw_area.items = kcalloc(num_pages, sizeof(*mem_item), > + GFP_KERNEL); > + if (!mlxsw_pci->fw_area.items) > + return -ENOMEM; > + mlxsw_pci->fw_area.num_pages = num_pages; > + > + mlxsw_cmd_mbox_zero(mbox); > + for (i = 0; i < num_pages; i++) { > + mem_item = &mlxsw_pci->fw_area.items[i]; > + > + mem_item->size = MLXSW_PCI_PAGE_SIZE; > + mem_item->buf = pci_alloc_consistent(mlxsw_pci->pdev, > + mem_item->size, > + &mem_item->mapaddr); > + if (!mem_item->buf) > + goto err_alloc; > + mlxsw_cmd_mbox_map_fa_pa_set(mbox, i, mem_item->mapaddr); > + mlxsw_cmd_mbox_map_fa_log2size_set(mbox, i, 0); /* 1 page */ > + } > + > + err = mlxsw_cmd_map_fa(mlxsw_pci->core, mbox, num_pages); > + if (err) > + goto err_cmd_map_fa; > + > + return 0; > + > +err_cmd_map_fa: > +err_alloc: > + for (i--; i >= 0; i--) { > + mem_item = &mlxsw_pci->fw_area.items[i]; > + > + pci_free_consistent(mlxsw_pci->pdev, mem_item->size, > + mem_item->buf, mem_item->mapaddr); > + } > + kfree(mlxsw_pci->fw_area.items); > + return err; > +} -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html