Skip to content

Commit

Permalink
mt76: mt7615: introduce mt7615_mcu_wait_response
Browse files Browse the repository at this point in the history
Introduce mt7615_mcu_wait_response in order to be reused parsing mt7663u
mcu messages

Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
LorenzoBianconi authored and nbd168 committed Mar 17, 2020
1 parent ee8ac23 commit 4999db4
Showing 1 changed file with 24 additions and 14 deletions.
38 changes: 24 additions & 14 deletions mt7615/mcu.c
Expand Up @@ -144,12 +144,33 @@ mt7615_mcu_parse_response(struct mt7615_dev *dev, int cmd,
return ret;
}

int mt7615_mcu_wait_response(struct mt7615_dev *dev, int cmd, int seq)
{
unsigned long expires = jiffies + 20 * HZ;
struct sk_buff *skb;
int ret = 0;

while (true) {
skb = mt76_mcu_get_response(&dev->mt76, expires);
if (!skb) {
dev_err(dev->mt76.dev, "Message %d (seq %d) timeout\n",
cmd, seq);
return -ETIMEDOUT;
}

ret = mt7615_mcu_parse_response(dev, cmd, skb, seq);
if (ret != -EAGAIN)
break;
}

return ret;
}

static int
mt7615_mcu_msg_send(struct mt76_dev *mdev, int cmd, const void *data,
int len, bool wait_resp)
{
struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76);
unsigned long expires = jiffies + 20 * HZ;
struct sk_buff *skb;
int ret, seq;

Expand All @@ -163,19 +184,8 @@ mt7615_mcu_msg_send(struct mt76_dev *mdev, int cmd, const void *data,
if (ret)
goto out;

while (wait_resp) {
skb = mt76_mcu_get_response(mdev, expires);
if (!skb) {
dev_err(mdev->dev, "Message %d (seq %d) timeout\n",
cmd, seq);
ret = -ETIMEDOUT;
break;
}

ret = mt7615_mcu_parse_response(dev, cmd, skb, seq);
if (ret != -EAGAIN)
break;
}
if (wait_resp)
ret = mt7615_mcu_wait_response(dev, cmd, seq);

out:
mutex_unlock(&mdev->mcu.mutex);
Expand Down

0 comments on commit 4999db4

Please sign in to comment.