• Ilpo Järvinen's avatar
    wifi: rtlwifi: Remove bogus and dangerous ASPM disable/enable code · b3943b3c
    Ilpo Järvinen authored
    Ever since introduction in the commit 0c817338 ("rtl8192ce: Add new
    driver") the rtlwifi code has, according to comments, attempted to
    disable/enable ASPM of the upstream bridge by writing into its LNKCTL
    register. However, the code has never been correct because it performs
    the writes to the device instead of the upstream bridge.
    
    Worse yet, the offset where the PCIe capabilities reside is derived
    from the offset of the upstream bridge. As a result, the write will use
    an offset on the device that does not relate to the LNKCTL register
    making the ASPM disable/enable code outright dangerous.
    
    Because of those problems, there is no indication that the driver needs
    disable/enable ASPM on the upstream bridge. As the Capabilities offset
    is not correctly calculated for the write to target device's LNKCTL
    register, the code is not disabling/enabling device's ASPM either.
    Therefore, just remove the upstream bridge related ASPM disable/enable
    code entirely.
    
    The upstream bridge related ASPM code was the only user of the struct
    mp_adapter members num4bytes, pcibridge_pciehdr_offset, and
    pcibridge_linkctrlreg so those are removed as well.
    
    Note: This change does not remove the code related to changing the
    device's ASPM on purpose (which is independent of this flawed code
    related to upstream bridge's ASPM).
    Suggested-by: default avatarBjorn Helgaas <bhelgaas@kernel.org>
    Fixes: 0c817338 ("rtl8192ce: Add new driver")
    Fixes: 886e14b6 ("rtlwifi: Eliminate raw reads and writes from PCIe portion")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20231124084725.12738-2-ilpo.jarvinen@linux.intel.com
    b3943b3c
pci.c 64.5 KB