Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'r8169-smaller-improvements-to-firmware-handling'

Heiner Kallweit says:

====================
r8169: smaller improvements to firmware handling

This series includes few smaller improvements to firmware handling.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+12 -7
+12 -7
drivers/net/ethernet/realtek/r8169_firmware.c
··· 37 37 u8 chksum; 38 38 } __packed; 39 39 40 - #define FW_OPCODE_SIZE sizeof(typeof(*((struct rtl_fw_phy_action *)0)->code)) 40 + #define FW_OPCODE_SIZE FIELD_SIZEOF(struct rtl_fw_phy_action, code[0]) 41 41 42 42 static bool rtl_fw_format_ok(struct rtl_fw *rtl_fw) 43 43 { ··· 92 92 93 93 for (index = 0; index < pa->size; index++) { 94 94 u32 action = le32_to_cpu(pa->code[index]); 95 + u32 val = action & 0x0000ffff; 95 96 u32 regno = (action & 0x0fff0000) >> 16; 96 97 97 98 switch (action >> 28) { 98 99 case PHY_READ: 99 100 case PHY_DATA_OR: 100 101 case PHY_DATA_AND: 101 - case PHY_MDIO_CHG: 102 102 case PHY_CLEAR_READCOUNT: 103 103 case PHY_WRITE: 104 104 case PHY_WRITE_PREVIOUS: 105 105 case PHY_DELAY_MS: 106 + break; 107 + 108 + case PHY_MDIO_CHG: 109 + if (val > 1) 110 + goto out; 106 111 break; 107 112 108 113 case PHY_BJMPN: ··· 169 164 index -= (regno + 1); 170 165 break; 171 166 case PHY_MDIO_CHG: 172 - if (data == 0) { 173 - fw_write = rtl_fw->phy_write; 174 - fw_read = rtl_fw->phy_read; 175 - } else if (data == 1) { 167 + if (data) { 176 168 fw_write = rtl_fw->mac_mcu_write; 177 169 fw_read = rtl_fw->mac_mcu_read; 170 + } else { 171 + fw_write = rtl_fw->phy_write; 172 + fw_read = rtl_fw->phy_read; 178 173 } 179 174 180 175 break; ··· 203 198 index += regno; 204 199 break; 205 200 case PHY_DELAY_MS: 206 - mdelay(data); 201 + msleep(data); 207 202 break; 208 203 } 209 204 }