On 1/19/2018 6:10 AM, Oza Pawandeep wrote:
> +check_link:
> +     pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lnk_status);
> +     ret = !!(lnk_status & PCI_EXP_LNKSTA_DLLLA);
> +
> +     if (ret == active) {
> +             dev_printk(KERN_DEBUG, &pdev->dev,
> +                        "%s: lnk_status = %x\n", __func__, lnk_status);
> +             return true;
> +     }
> +
> +     while (timeout > 0) {
> +             msleep(10);
> +             timeout -= 10;
> +             goto check_link;
> +     }


this is weird. 

I think following is a simpler approach.

pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lnk_status);
ret = !!(lnk_status & PCI_EXP_LNKSTA_DLLLA);

while ((ret != active) && (timeout > 0)) {
        msleep(10);
        timeout -= 10;

        pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lnk_status);
        ret = !!(lnk_status & PCI_EXP_LNKSTA_DLLLA);
}


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm 
Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux 
Foundation Collaborative Project.

Reply via email to