* [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code
@ 2013-09-03 7:35 Yijing Wang
2013-09-03 7:35 ` [PATCH 2/7] scsi/csiostor: " Yijing Wang
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Yijing Wang @ 2013-09-03 7:35 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Gavin Shan, Bjorn Helgaas,
James E.J. Bottomley, David S. Miller
Cc: linux-kernel, linux-pci, Yijing Wang, Hanjun Guo, Jiang Liu,
Anil Gurumurthy, Vijaya Mohan Guvva, linux-scsi
Pcie_capability_xxx() interfaces were introudced to
simplify code to access PCIe Cap config space. And
because PCI core saves the PCIe Cap offset in
set_pcie_port_type() when device is enumerated.
So we can use pci_is_pcie() instead.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: Jiang Liu <jiang.liu@huawei.com>
Cc: Anil Gurumurthy <agurumur@brocade.com>
Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/scsi/bfa/bfad.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index 9611195..d726b81 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -767,7 +767,6 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
/* Adjust PCIe Maximum Read Request Size */
if (pcie_max_read_reqsz > 0) {
- int pcie_cap_reg;
u16 pcie_dev_ctl;
u16 mask = 0xffff;
@@ -794,10 +793,8 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
break;
}
- pcie_cap_reg = pci_find_capability(pdev, PCI_CAP_ID_EXP);
- if (mask != 0xffff && pcie_cap_reg) {
- pcie_cap_reg += 0x08;
- pci_read_config_word(pdev, pcie_cap_reg, &pcie_dev_ctl);
+ if (mask != 0xffff && pci_is_pcie(pdev)) {
+ pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &pcie_dev_ctl);
if ((pcie_dev_ctl & 0x7000) != mask) {
printk(KERN_WARNING "BFA[%s]: "
"pcie_max_read_request_size is %d, "
@@ -806,7 +803,7 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
pcie_max_read_reqsz);
pcie_dev_ctl &= ~0x7000;
- pci_write_config_word(pdev, pcie_cap_reg,
+ pcie_capability_write_word(pdev, PCI_EXP_DEVCTL,
pcie_dev_ctl | mask);
}
}
--
1.7.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/7] scsi/csiostor: use pcie_capability_xxx to simplify code
2013-09-03 7:35 [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code Yijing Wang
@ 2013-09-03 7:35 ` Yijing Wang
2013-09-03 23:43 ` Bjorn Helgaas
2013-09-03 7:35 ` [PATCH 7/7] scsi/qla2xxx: use pcie_is_pcie() " Yijing Wang
2013-09-03 23:34 ` [PATCH 1/7] scsi/bfa: use pcie_capability_xxx " Bjorn Helgaas
2 siblings, 1 reply; 9+ messages in thread
From: Yijing Wang @ 2013-09-03 7:35 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Gavin Shan, Bjorn Helgaas,
James E.J. Bottomley, David S. Miller
Cc: linux-kernel, linux-pci, Yijing Wang, Hanjun Guo, Jiang Liu,
Naresh Kumar Inna, Jesper Juhl, linux-scsi
Pcie_capability_xxx() interfaces were introudced to
simplify code to access PCIe Cap config space. And
because PCI core saves the PCIe Cap offset in
set_pcie_port_type() when device is enumerated.
So we can use pci_is_pcie() instead.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: Jiang Liu <jiang.liu@huawei.com>
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: Naresh Kumar Inna <naresh@chelsio.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jesper Juhl <jj@chaosbits.net>
Cc: linux-scsi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/scsi/csiostor/csio_hw.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/csiostor/csio_hw.c b/drivers/scsi/csiostor/csio_hw.c
index 0eb35b9..be9a6ef 100644
--- a/drivers/scsi/csiostor/csio_hw.c
+++ b/drivers/scsi/csiostor/csio_hw.c
@@ -856,15 +856,12 @@ static void
csio_set_pcie_completion_timeout(struct csio_hw *hw, u8 range)
{
uint16_t val;
- int pcie_cap;
- if (!csio_pci_capability(hw->pdev, PCI_CAP_ID_EXP, &pcie_cap)) {
- pci_read_config_word(hw->pdev,
- pcie_cap + PCI_EXP_DEVCTL2, &val);
+ if (pci_is_pcie(hw->pdev)) {
+ pcie_capability_read_word(hw->pdev, PCI_EXP_DEVCTL2, &val);
val &= 0xfff0;
val |= range ;
- pci_write_config_word(hw->pdev,
- pcie_cap + PCI_EXP_DEVCTL2, val);
+ pcie_capability_write_word(hw->pdev, PCI_EXP_DEVCTL2, val);
}
}
--
1.7.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 7/7] scsi/qla2xxx: use pcie_is_pcie() to simplify code
2013-09-03 7:35 [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code Yijing Wang
2013-09-03 7:35 ` [PATCH 2/7] scsi/csiostor: " Yijing Wang
@ 2013-09-03 7:35 ` Yijing Wang
2013-09-03 20:18 ` Chad Dupuis
2013-09-03 23:34 ` [PATCH 1/7] scsi/bfa: use pcie_capability_xxx " Bjorn Helgaas
2 siblings, 1 reply; 9+ messages in thread
From: Yijing Wang @ 2013-09-03 7:35 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Gavin Shan, Bjorn Helgaas,
James E.J. Bottomley, David S. Miller
Cc: linux-kernel, linux-pci, Yijing Wang, Hanjun Guo, Andrew Vasquez,
linux-driver, linux-scsi
Use pci_is_pcie() instead of pci_find_capability
to simplify code.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: Andrew Vasquez <andrew.vasquez@qlogic.com>
Cc: linux-driver@qlogic.com
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/scsi/qla2xxx/qla_mr.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
index d799379..5f74271 100644
--- a/drivers/scsi/qla2xxx/qla_mr.c
+++ b/drivers/scsi/qla2xxx/qla_mr.c
@@ -507,7 +507,7 @@ qlafx00_pci_config(scsi_qla_host_t *vha)
pci_write_config_word(ha->pdev, PCI_COMMAND, w);
/* PCIe -- adjust Maximum Read Request Size (2048). */
- if (pci_find_capability(ha->pdev, PCI_CAP_ID_EXP))
+ if (pci_is_pcie(ha->pdev))
pcie_set_readrq(ha->pdev, 2048);
ha->chip_revision = ha->pdev->revision;
@@ -660,10 +660,8 @@ char *
qlafx00_pci_info_str(struct scsi_qla_host *vha, char *str)
{
struct qla_hw_data *ha = vha->hw;
- int pcie_reg;
- pcie_reg = pci_find_capability(ha->pdev, PCI_CAP_ID_EXP);
- if (pcie_reg) {
+ if (pci_is_pcie(ha->pdev)) {
strcpy(str, "PCIe iSA");
return str;
}
--
1.7.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 7/7] scsi/qla2xxx: use pcie_is_pcie() to simplify code
2013-09-03 7:35 ` [PATCH 7/7] scsi/qla2xxx: use pcie_is_pcie() " Yijing Wang
@ 2013-09-03 20:18 ` Chad Dupuis
0 siblings, 0 replies; 9+ messages in thread
From: Chad Dupuis @ 2013-09-03 20:18 UTC (permalink / raw)
To: Yijing Wang
Cc: Benjamin Herrenschmidt, Gavin Shan, Bjorn Helgaas,
James E.J. Bottomley, David Miller, linux-kernel, linux-pci,
Hanjun Guo, Andrew Vasquez, Dept-Eng Linux Driver, linux-scsi
Looks good.
Acked-by: Chad Dupuis <chad.dupuis@qlogic.com>
On Tue, 3 Sep 2013, Yijing Wang wrote:
> Use pci_is_pcie() instead of pci_find_capability
> to simplify code.
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> Cc: Andrew Vasquez <andrew.vasquez@qlogic.com>
> Cc: linux-driver@qlogic.com
> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> drivers/scsi/qla2xxx/qla_mr.c | 6 ++----
> 1 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
> index d799379..5f74271 100644
> --- a/drivers/scsi/qla2xxx/qla_mr.c
> +++ b/drivers/scsi/qla2xxx/qla_mr.c
> @@ -507,7 +507,7 @@ qlafx00_pci_config(scsi_qla_host_t *vha)
> pci_write_config_word(ha->pdev, PCI_COMMAND, w);
>
> /* PCIe -- adjust Maximum Read Request Size (2048). */
> - if (pci_find_capability(ha->pdev, PCI_CAP_ID_EXP))
> + if (pci_is_pcie(ha->pdev))
> pcie_set_readrq(ha->pdev, 2048);
>
> ha->chip_revision = ha->pdev->revision;
> @@ -660,10 +660,8 @@ char *
> qlafx00_pci_info_str(struct scsi_qla_host *vha, char *str)
> {
> struct qla_hw_data *ha = vha->hw;
> - int pcie_reg;
>
> - pcie_reg = pci_find_capability(ha->pdev, PCI_CAP_ID_EXP);
> - if (pcie_reg) {
> + if (pci_is_pcie(ha->pdev)) {
> strcpy(str, "PCIe iSA");
> return str;
> }
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code
2013-09-03 7:35 [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code Yijing Wang
2013-09-03 7:35 ` [PATCH 2/7] scsi/csiostor: " Yijing Wang
2013-09-03 7:35 ` [PATCH 7/7] scsi/qla2xxx: use pcie_is_pcie() " Yijing Wang
@ 2013-09-03 23:34 ` Bjorn Helgaas
2013-09-04 2:37 ` Bjorn Helgaas
2013-09-05 7:21 ` Yijing Wang
2 siblings, 2 replies; 9+ messages in thread
From: Bjorn Helgaas @ 2013-09-03 23:34 UTC (permalink / raw)
To: Yijing Wang
Cc: Benjamin Herrenschmidt, Gavin Shan, James E.J. Bottomley,
David S. Miller, linux-kernel, linux-pci, Hanjun Guo, Jiang Liu,
Anil Gurumurthy, Vijaya Mohan Guvva, linux-scsi
On Tue, Sep 03, 2013 at 03:35:09PM +0800, Yijing Wang wrote:
> Pcie_capability_xxx() interfaces were introudced to
> simplify code to access PCIe Cap config space. And
> because PCI core saves the PCIe Cap offset in
> set_pcie_port_type() when device is enumerated.
> So we can use pci_is_pcie() instead.
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> Cc: Jiang Liu <jiang.liu@huawei.com>
> Cc: Anil Gurumurthy <agurumur@brocade.com>
> Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> drivers/scsi/bfa/bfad.c | 9 +++------
> 1 files changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
> index 9611195..d726b81 100644
> --- a/drivers/scsi/bfa/bfad.c
> +++ b/drivers/scsi/bfa/bfad.c
> @@ -767,7 +767,6 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
>
> /* Adjust PCIe Maximum Read Request Size */
> if (pcie_max_read_reqsz > 0) {
> - int pcie_cap_reg;
> u16 pcie_dev_ctl;
> u16 mask = 0xffff;
>
> @@ -794,10 +793,8 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
> break;
> }
>
> - pcie_cap_reg = pci_find_capability(pdev, PCI_CAP_ID_EXP);
> - if (mask != 0xffff && pcie_cap_reg) {
> - pcie_cap_reg += 0x08;
> - pci_read_config_word(pdev, pcie_cap_reg, &pcie_dev_ctl);
> + if (mask != 0xffff && pci_is_pcie(pdev)) {
Please move the pci_is_pcie() test up to the
"if (pcie_mas_read_reqsz ..." statement. There's no point in doing
the switch statement if this isn't a PCIe device.
> + pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &pcie_dev_ctl);
> if ((pcie_dev_ctl & 0x7000) != mask) {
> printk(KERN_WARNING "BFA[%s]: "
> "pcie_max_read_request_size is %d, "
> @@ -806,7 +803,7 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
> pcie_max_read_reqsz);
>
> pcie_dev_ctl &= ~0x7000;
> - pci_write_config_word(pdev, pcie_cap_reg,
> + pcie_capability_write_word(pdev, PCI_EXP_DEVCTL,
> pcie_dev_ctl | mask);
Please rework this to use pcie_set_readrq() instead of writing
the capability directly. If we write the capability directly, we
risk writing a value that is incompatible with the MPS
configuration done by the PCI core.
> }
> }
> --
> 1.7.1
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/7] scsi/csiostor: use pcie_capability_xxx to simplify code
2013-09-03 7:35 ` [PATCH 2/7] scsi/csiostor: " Yijing Wang
@ 2013-09-03 23:43 ` Bjorn Helgaas
2013-09-05 7:37 ` Yijing Wang
0 siblings, 1 reply; 9+ messages in thread
From: Bjorn Helgaas @ 2013-09-03 23:43 UTC (permalink / raw)
To: Yijing Wang
Cc: Benjamin Herrenschmidt, Gavin Shan, James E.J. Bottomley,
David S. Miller, linux-kernel, linux-pci, Hanjun Guo, Jiang Liu,
Naresh Kumar Inna, Jesper Juhl, linux-scsi
On Tue, Sep 03, 2013 at 03:35:10PM +0800, Yijing Wang wrote:
> Pcie_capability_xxx() interfaces were introudced to
s/introudced/introduced/
> simplify code to access PCIe Cap config space. And
> because PCI core saves the PCIe Cap offset in
> set_pcie_port_type() when device is enumerated.
> So we can use pci_is_pcie() instead.
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> Cc: Jiang Liu <jiang.liu@huawei.com>
> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
> Cc: Naresh Kumar Inna <naresh@chelsio.com>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Jesper Juhl <jj@chaosbits.net>
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> drivers/scsi/csiostor/csio_hw.c | 9 +++------
> 1 files changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/scsi/csiostor/csio_hw.c b/drivers/scsi/csiostor/csio_hw.c
> index 0eb35b9..be9a6ef 100644
> --- a/drivers/scsi/csiostor/csio_hw.c
> +++ b/drivers/scsi/csiostor/csio_hw.c
> @@ -856,15 +856,12 @@ static void
> csio_set_pcie_completion_timeout(struct csio_hw *hw, u8 range)
> {
> uint16_t val;
> - int pcie_cap;
>
> - if (!csio_pci_capability(hw->pdev, PCI_CAP_ID_EXP, &pcie_cap)) {
> - pci_read_config_word(hw->pdev,
> - pcie_cap + PCI_EXP_DEVCTL2, &val);
> + if (pci_is_pcie(hw->pdev)) {
> + pcie_capability_read_word(hw->pdev, PCI_EXP_DEVCTL2, &val);
> val &= 0xfff0;
> val |= range ;
> - pci_write_config_word(hw->pdev,
> - pcie_cap + PCI_EXP_DEVCTL2, val);
> + pcie_capability_write_word(hw->pdev, PCI_EXP_DEVCTL2, val);
Please add a #define for the Completion Timeout Value field and use
pcie_capability_clear_and_set_word() instead of writing it out the
long way here.
> }
> }
>
> --
> 1.7.1
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code
2013-09-03 23:34 ` [PATCH 1/7] scsi/bfa: use pcie_capability_xxx " Bjorn Helgaas
@ 2013-09-04 2:37 ` Bjorn Helgaas
2013-09-05 7:21 ` Yijing Wang
1 sibling, 0 replies; 9+ messages in thread
From: Bjorn Helgaas @ 2013-09-04 2:37 UTC (permalink / raw)
To: Yijing Wang
Cc: Benjamin Herrenschmidt, Gavin Shan, James E.J. Bottomley,
David S. Miller, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, Hanjun Guo, Jiang Liu, Anil Gurumurthy,
Vijaya Mohan Guvva, linux-scsi@vger.kernel.org
On Tue, Sep 3, 2013 at 5:34 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> On Tue, Sep 03, 2013 at 03:35:09PM +0800, Yijing Wang wrote:
>> Pcie_capability_xxx() interfaces were introudced to
>> simplify code to access PCIe Cap config space. And
>> because PCI core saves the PCIe Cap offset in
>> set_pcie_port_type() when device is enumerated.
>> So we can use pci_is_pcie() instead.
>>
>> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
>> Cc: Jiang Liu <jiang.liu@huawei.com>
>> Cc: Anil Gurumurthy <agurumur@brocade.com>
>> Cc: Vijaya Mohan Guvva <vmohan@brocade.com>
>> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
>> Cc: linux-scsi@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> ---
>> drivers/scsi/bfa/bfad.c | 9 +++------
>> 1 files changed, 3 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
>> index 9611195..d726b81 100644
>> --- a/drivers/scsi/bfa/bfad.c
>> +++ b/drivers/scsi/bfa/bfad.c
>> @@ -767,7 +767,6 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
>>
>> /* Adjust PCIe Maximum Read Request Size */
>> if (pcie_max_read_reqsz > 0) {
>> - int pcie_cap_reg;
>> u16 pcie_dev_ctl;
>> u16 mask = 0xffff;
>>
>> @@ -794,10 +793,8 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
>> break;
>> }
>>
>> - pcie_cap_reg = pci_find_capability(pdev, PCI_CAP_ID_EXP);
>> - if (mask != 0xffff && pcie_cap_reg) {
>> - pcie_cap_reg += 0x08;
>> - pci_read_config_word(pdev, pcie_cap_reg, &pcie_dev_ctl);
>> + if (mask != 0xffff && pci_is_pcie(pdev)) {
>
> Please move the pci_is_pcie() test up to the
> "if (pcie_mas_read_reqsz ..." statement. There's no point in doing
> the switch statement if this isn't a PCIe device.
>
>> + pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &pcie_dev_ctl);
>> if ((pcie_dev_ctl & 0x7000) != mask) {
I forgot to mention that this 0x7000 constant should be
PCI_EXP_DEVCTL_READRQ instead.
>> printk(KERN_WARNING "BFA[%s]: "
>> "pcie_max_read_request_size is %d, "
>> @@ -806,7 +803,7 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
>> pcie_max_read_reqsz);
>>
>> pcie_dev_ctl &= ~0x7000;
>> - pci_write_config_word(pdev, pcie_cap_reg,
>> + pcie_capability_write_word(pdev, PCI_EXP_DEVCTL,
>> pcie_dev_ctl | mask);
>
> Please rework this to use pcie_set_readrq() instead of writing
> the capability directly. If we write the capability directly, we
> risk writing a value that is incompatible with the MPS
> configuration done by the PCI core.
>
>> }
>> }
>> --
>> 1.7.1
>>
>>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code
2013-09-03 23:34 ` [PATCH 1/7] scsi/bfa: use pcie_capability_xxx " Bjorn Helgaas
2013-09-04 2:37 ` Bjorn Helgaas
@ 2013-09-05 7:21 ` Yijing Wang
1 sibling, 0 replies; 9+ messages in thread
From: Yijing Wang @ 2013-09-05 7:21 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Benjamin Herrenschmidt, Gavin Shan, James E.J. Bottomley,
David S. Miller, linux-kernel, linux-pci, Hanjun Guo, Jiang Liu,
Anil Gurumurthy, Vijaya Mohan Guvva, linux-scsi
>> @@ -794,10 +793,8 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
>> break;
>> }
>>
>> - pcie_cap_reg = pci_find_capability(pdev, PCI_CAP_ID_EXP);
>> - if (mask != 0xffff && pcie_cap_reg) {
>> - pcie_cap_reg += 0x08;
>> - pci_read_config_word(pdev, pcie_cap_reg, &pcie_dev_ctl);
>> + if (mask != 0xffff && pci_is_pcie(pdev)) {
>
> Please move the pci_is_pcie() test up to the
> "if (pcie_mas_read_reqsz ..." statement. There's no point in doing
> the switch statement if this isn't a PCIe device.
Right, will update.
>
>> + pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &pcie_dev_ctl);
>> if ((pcie_dev_ctl & 0x7000) != mask) {
>> printk(KERN_WARNING "BFA[%s]: "
>> "pcie_max_read_request_size is %d, "
>> @@ -806,7 +803,7 @@ bfad_pci_init(struct pci_dev *pdev, struct bfad_s *bfad)
>> pcie_max_read_reqsz);
>>
>> pcie_dev_ctl &= ~0x7000;
>> - pci_write_config_word(pdev, pcie_cap_reg,
>> + pcie_capability_write_word(pdev, PCI_EXP_DEVCTL,
>> pcie_dev_ctl | mask);
>
> Please rework this to use pcie_set_readrq() instead of writing
> the capability directly. If we write the capability directly, we
> risk writing a value that is incompatible with the MPS
> configuration done by the PCI core.
Ah, this code is Long-winded, use pcie_set_readrq()/pcie_get_readrq() can simplify
this code much.
Thanks!
Yijing.
>
>> }
>> }
>> --
>> 1.7.1
>>
>>
>
> .
>
--
Thanks!
Yijing
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/7] scsi/csiostor: use pcie_capability_xxx to simplify code
2013-09-03 23:43 ` Bjorn Helgaas
@ 2013-09-05 7:37 ` Yijing Wang
0 siblings, 0 replies; 9+ messages in thread
From: Yijing Wang @ 2013-09-05 7:37 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Benjamin Herrenschmidt, Gavin Shan, James E.J. Bottomley,
David S. Miller, linux-kernel, linux-pci, Hanjun Guo, Jiang Liu,
Naresh Kumar Inna, Jesper Juhl, linux-scsi
On 2013/9/4 7:43, Bjorn Helgaas wrote:
> On Tue, Sep 03, 2013 at 03:35:10PM +0800, Yijing Wang wrote:
>> Pcie_capability_xxx() interfaces were introudced to
>
> s/introudced/introduced/
Will update it.
>
>> simplify code to access PCIe Cap config space. And
>> because PCI core saves the PCIe Cap offset in
>> set_pcie_port_type() when device is enumerated.
>> So we can use pci_is_pcie() instead.
>>
>> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
>> Cc: Jiang Liu <jiang.liu@huawei.com>
>> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
>> Cc: Naresh Kumar Inna <naresh@chelsio.com>
>> Cc: "David S. Miller" <davem@davemloft.net>
>> Cc: Jesper Juhl <jj@chaosbits.net>
>> Cc: linux-scsi@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> ---
>> drivers/scsi/csiostor/csio_hw.c | 9 +++------
>> 1 files changed, 3 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/scsi/csiostor/csio_hw.c b/drivers/scsi/csiostor/csio_hw.c
>> index 0eb35b9..be9a6ef 100644
>> --- a/drivers/scsi/csiostor/csio_hw.c
>> +++ b/drivers/scsi/csiostor/csio_hw.c
>> @@ -856,15 +856,12 @@ static void
>> csio_set_pcie_completion_timeout(struct csio_hw *hw, u8 range)
>> {
>> uint16_t val;
>> - int pcie_cap;
>>
>> - if (!csio_pci_capability(hw->pdev, PCI_CAP_ID_EXP, &pcie_cap)) {
>> - pci_read_config_word(hw->pdev,
>> - pcie_cap + PCI_EXP_DEVCTL2, &val);
>> + if (pci_is_pcie(hw->pdev)) {
>> + pcie_capability_read_word(hw->pdev, PCI_EXP_DEVCTL2, &val);
>> val &= 0xfff0;
>> val |= range ;
>> - pci_write_config_word(hw->pdev,
>> - pcie_cap + PCI_EXP_DEVCTL2, val);
>> + pcie_capability_write_word(hw->pdev, PCI_EXP_DEVCTL2, val);
>
> Please add a #define for the Completion Timeout Value field and use
> pcie_capability_clear_and_set_word() instead of writing it out the
> long way here.
Will update it, thanks!
>
>> }
>> }
>>
>> --
>> 1.7.1
>>
>>
>
> .
>
--
Thanks!
Yijing
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-09-05 7:37 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-03 7:35 [PATCH 1/7] scsi/bfa: use pcie_capability_xxx to simplify code Yijing Wang
2013-09-03 7:35 ` [PATCH 2/7] scsi/csiostor: " Yijing Wang
2013-09-03 23:43 ` Bjorn Helgaas
2013-09-05 7:37 ` Yijing Wang
2013-09-03 7:35 ` [PATCH 7/7] scsi/qla2xxx: use pcie_is_pcie() " Yijing Wang
2013-09-03 20:18 ` Chad Dupuis
2013-09-03 23:34 ` [PATCH 1/7] scsi/bfa: use pcie_capability_xxx " Bjorn Helgaas
2013-09-04 2:37 ` Bjorn Helgaas
2013-09-05 7:21 ` Yijing Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).