Message ID | 20230330085357.2653599-7-damien.lemoal@opensource.wdc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | PCI endpoint fixes and improvements | expand |
On Thu, Mar 30, 2023 at 05:53:46PM +0900, Damien Le Moal wrote: > The function pci_epf_test_cmd_handler() casts the register bar to a > struct pci_epf_test_reg to determine the command sent by the host and > execute the test function accordingly. So there is no need for doing > this cast again in each of the read, write and copy test functions. We > can simply pass the reg pointer as an argument to the functions > pci_epf_test_write(), pci_epf_test_read() and pci_epf_test_copy(). s/bar/BAR/ in English text (as opposed to C code). "Casting a register BAR" doesn't read quite right though, and I don't see any casts below. It looks like pci_epf_test_cmd_handler() looks up the pci_epf_test_reg corresponding to epf_test->test_reg_bar, and this patch passes that "struct pci_epf_test_reg *" around instead of having each function look it up again? > Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> > Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > --- > drivers/pci/endpoint/functions/pci-epf-test.c | 21 ++++++++----------- > 1 file changed, 9 insertions(+), 12 deletions(-) > > diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c > index 7cdc6c915ef5..b8b178ac7cda 100644 > --- a/drivers/pci/endpoint/functions/pci-epf-test.c > +++ b/drivers/pci/endpoint/functions/pci-epf-test.c > @@ -325,7 +325,8 @@ static void pci_epf_test_print_rate(const char *ops, u64 size, > (u64)ts.tv_sec, (u32)ts.tv_nsec, rate / 1024); > } > > -static int pci_epf_test_copy(struct pci_epf_test *epf_test) > +static int pci_epf_test_copy(struct pci_epf_test *epf_test, > + struct pci_epf_test_reg *reg) > { > int ret; > bool use_dma; > @@ -337,8 +338,6 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_test) > struct pci_epf *epf = epf_test->epf; > struct device *dev = &epf->dev; > struct pci_epc *epc = epf->epc; > - enum pci_barno test_reg_bar = epf_test->test_reg_bar; > - struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; > > src_addr = pci_epc_mem_alloc_addr(epc, &src_phys_addr, reg->size); > if (!src_addr) { > @@ -424,7 +423,8 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_test) > return ret; > } > > -static int pci_epf_test_read(struct pci_epf_test *epf_test) > +static int pci_epf_test_read(struct pci_epf_test *epf_test, > + struct pci_epf_test_reg *reg) > { > int ret; > void __iomem *src_addr; > @@ -438,8 +438,6 @@ static int pci_epf_test_read(struct pci_epf_test *epf_test) > struct device *dev = &epf->dev; > struct pci_epc *epc = epf->epc; > struct device *dma_dev = epf->epc->dev.parent; > - enum pci_barno test_reg_bar = epf_test->test_reg_bar; > - struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; > > src_addr = pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size); > if (!src_addr) { > @@ -514,7 +512,8 @@ static int pci_epf_test_read(struct pci_epf_test *epf_test) > return ret; > } > > -static int pci_epf_test_write(struct pci_epf_test *epf_test) > +static int pci_epf_test_write(struct pci_epf_test *epf_test, > + struct pci_epf_test_reg *reg) > { > int ret; > void __iomem *dst_addr; > @@ -527,8 +526,6 @@ static int pci_epf_test_write(struct pci_epf_test *epf_test) > struct device *dev = &epf->dev; > struct pci_epc *epc = epf->epc; > struct device *dma_dev = epf->epc->dev.parent; > - enum pci_barno test_reg_bar = epf_test->test_reg_bar; > - struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; > > dst_addr = pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size); > if (!dst_addr) { > @@ -673,7 +670,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) > } > > if (command & COMMAND_WRITE) { > - ret = pci_epf_test_write(epf_test); > + ret = pci_epf_test_write(epf_test, reg); > if (ret) > reg->status |= STATUS_WRITE_FAIL; > else > @@ -684,7 +681,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) > } > > if (command & COMMAND_READ) { > - ret = pci_epf_test_read(epf_test); > + ret = pci_epf_test_read(epf_test, reg); > if (!ret) > reg->status |= STATUS_READ_SUCCESS; > else > @@ -695,7 +692,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) > } > > if (command & COMMAND_COPY) { > - ret = pci_epf_test_copy(epf_test); > + ret = pci_epf_test_copy(epf_test, reg); > if (!ret) > reg->status |= STATUS_COPY_SUCCESS; > else > -- > 2.39.2 >
diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c index 7cdc6c915ef5..b8b178ac7cda 100644 --- a/drivers/pci/endpoint/functions/pci-epf-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-test.c @@ -325,7 +325,8 @@ static void pci_epf_test_print_rate(const char *ops, u64 size, (u64)ts.tv_sec, (u32)ts.tv_nsec, rate / 1024); } -static int pci_epf_test_copy(struct pci_epf_test *epf_test) +static int pci_epf_test_copy(struct pci_epf_test *epf_test, + struct pci_epf_test_reg *reg) { int ret; bool use_dma; @@ -337,8 +338,6 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_test) struct pci_epf *epf = epf_test->epf; struct device *dev = &epf->dev; struct pci_epc *epc = epf->epc; - enum pci_barno test_reg_bar = epf_test->test_reg_bar; - struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; src_addr = pci_epc_mem_alloc_addr(epc, &src_phys_addr, reg->size); if (!src_addr) { @@ -424,7 +423,8 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_test) return ret; } -static int pci_epf_test_read(struct pci_epf_test *epf_test) +static int pci_epf_test_read(struct pci_epf_test *epf_test, + struct pci_epf_test_reg *reg) { int ret; void __iomem *src_addr; @@ -438,8 +438,6 @@ static int pci_epf_test_read(struct pci_epf_test *epf_test) struct device *dev = &epf->dev; struct pci_epc *epc = epf->epc; struct device *dma_dev = epf->epc->dev.parent; - enum pci_barno test_reg_bar = epf_test->test_reg_bar; - struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; src_addr = pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size); if (!src_addr) { @@ -514,7 +512,8 @@ static int pci_epf_test_read(struct pci_epf_test *epf_test) return ret; } -static int pci_epf_test_write(struct pci_epf_test *epf_test) +static int pci_epf_test_write(struct pci_epf_test *epf_test, + struct pci_epf_test_reg *reg) { int ret; void __iomem *dst_addr; @@ -527,8 +526,6 @@ static int pci_epf_test_write(struct pci_epf_test *epf_test) struct device *dev = &epf->dev; struct pci_epc *epc = epf->epc; struct device *dma_dev = epf->epc->dev.parent; - enum pci_barno test_reg_bar = epf_test->test_reg_bar; - struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; dst_addr = pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size); if (!dst_addr) { @@ -673,7 +670,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) } if (command & COMMAND_WRITE) { - ret = pci_epf_test_write(epf_test); + ret = pci_epf_test_write(epf_test, reg); if (ret) reg->status |= STATUS_WRITE_FAIL; else @@ -684,7 +681,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) } if (command & COMMAND_READ) { - ret = pci_epf_test_read(epf_test); + ret = pci_epf_test_read(epf_test, reg); if (!ret) reg->status |= STATUS_READ_SUCCESS; else @@ -695,7 +692,7 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) } if (command & COMMAND_COPY) { - ret = pci_epf_test_copy(epf_test); + ret = pci_epf_test_copy(epf_test, reg); if (!ret) reg->status |= STATUS_COPY_SUCCESS; else