mt76: mt7915: move eeprom parsing out of mt7915_mcu_parse_response
authorFelix Fietkau <nbd@nbd.name>
Wed, 30 Sep 2020 03:45:46 +0000 (05:45 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 4 Dec 2020 12:46:15 +0000 (13:46 +0100)
Use the new mt76_mcu_send_and_get_msg function

Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c

index cafcafe..a87b10e 100644 (file)
@@ -216,28 +216,9 @@ mt7915_mcu_get_sta_nss(u16 mcs_map)
 }
 
 static int
-mt7915_mcu_parse_eeprom(struct mt7915_dev *dev, struct sk_buff *skb)
-{
-       struct mt7915_mcu_eeprom_info *res;
-       u8 *buf;
-
-       if (!skb)
-               return -EINVAL;
-
-       skb_pull(skb, sizeof(struct mt7915_mcu_rxd));
-
-       res = (struct mt7915_mcu_eeprom_info *)skb->data;
-       buf = dev->mt76.eeprom.data + le32_to_cpu(res->addr);
-       memcpy(buf, res->data, 16);
-
-       return 0;
-}
-
-static int
 mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,
                          struct sk_buff *skb, int seq)
 {
-       struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76);
        struct mt7915_mcu_rxd *rxd;
        int ret = 0;
 
@@ -260,10 +241,8 @@ mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,
                skb_pull(skb, sizeof(*rxd) + 4);
                ret = le32_to_cpu(*(__le32 *)skb->data);
                break;
-       case MCU_EXT_CMD_EFUSE_ACCESS:
-               ret = mt7915_mcu_parse_eeprom(dev, skb);
-               break;
        default:
+               skb_pull(skb, sizeof(struct mt7915_mcu_rxd));
                break;
        }
 
@@ -3247,9 +3226,22 @@ int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset)
        struct mt7915_mcu_eeprom_info req = {
                .addr = cpu_to_le32(round_down(offset, 16)),
        };
+       struct mt7915_mcu_eeprom_info *res;
+       struct sk_buff *skb;
+       int ret;
+       u8 *buf;
 
-       return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_EFUSE_ACCESS, &req,
-                                sizeof(req), true);
+       ret = mt76_mcu_send_and_get_msg(&dev->mt76, MCU_EXT_CMD_EFUSE_ACCESS, &req,
+                               sizeof(req), true, &skb);
+       if (ret)
+               return ret;
+
+       res = (struct mt7915_mcu_eeprom_info *)skb->data;
+       buf = dev->mt76.eeprom.data + le32_to_cpu(res->addr);
+       memcpy(buf, res->data, 16);
+       dev_kfree_skb(skb);
+
+       return 0;
 }
 
 int mt7915_mcu_get_temperature(struct mt7915_dev *dev, int index)