> Atheros AR9341Свободные спеки можно глянуть и свободную разводку тоже?!
---
http://downloads.librecmc.org/sources/v1.2.1/compat-wireless...
drivers/bcma/driver_pci.c
void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
{
struct bcma_drv_pci *pc;
u16 data; if (bus->hosttype != BCMA_HOSTTYPE_PCI)
return;
pc = &bus->drv_pci[0];
if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
data = up ? 0x74 : 0x7C;
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64);
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
} else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) {
data = up ? 0x75 : 0x7D;
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65);
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
}
/* BCMA_CORE_PCI_MDIO_BLK1_MGMT3 - адрес доступа к блоку управлением питанием.
Йопт, ну а где ещё хранить трояны, хардкод, бэкдоры??? В первых строках драйвера чтоль?
Тем более savemode активируется самой операционкой, а если отсылать не из savemod
то вероятность реверсинжунеренга резко возрастает.
*/
}
0x7E65, 0x7E64, 0x74, 0x7C, 0x75, 0x7D; - что чо за х...ня? При активации savemode, сливать всё в АНБ?
Как я вижу:
void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
{
struct bcma_drv_pci *pc;
u16 data; /* адрес буфера c накопленными данными */ if (bus->hosttype != BCMA_HOSTTYPE_PCI)
return;
pc = &bus->drv_pci[0]; /* вытаскиваем инфу об устройстве */
/* Если релиз железяки от 15 до 20)
if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
/* флаг up - 1 новый буфер, 0 - продолжение предыдущего кадра */
data = up ? 0x74 : 0x7C;
/* говорим трояну, что отсылать нужно на сервер, URL которого в этой ревизии хранится в ROM по адресу 0x7F64 */
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64);
/* ну и сливаем из буфера 0x74 или 0x7c вашу переписку с Аль-Каидой */
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
} else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) {
data = up ? 0x75 : 0x7D;
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65);
bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
}
}