> Extend mt76u_bulk_msg() such it can be used for synchronous bulk reads. > > Signed-off-by: Stanislaw Gruszka <sgruszka@xxxxxxxxxx> > --- > drivers/net/wireless/mediatek/mt76/mt76.h | 13 ++++++++++--- > drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c | 4 ++-- > 2 files changed, 12 insertions(+), 5 deletions(-) > [...] > @@ -737,8 +738,14 @@ mt76u_bulk_msg(struct mt76_dev *dev, void *data, int len, int timeout) > unsigned int pipe; > int sent; > > - pipe = usb_sndbulkpipe(udev, usb->out_ep[MT_EP_OUT_INBAND_CMD]); > - return usb_bulk_msg(udev, pipe, data, len, &sent, timeout); > + if (actual_len) { > + pipe = usb_rcvbulkpipe(udev, usb->in_ep[MT_EP_IN_CMD_RESP]); > + } else { > + actual_len = &sent; > + pipe = usb_sndbulkpipe(udev, usb->out_ep[MT_EP_OUT_INBAND_CMD]); Hi Stanislaw, I guess you can drop sent here since even if actual_len is NULL it will be managed by usb_start_wait_urb() Regards, Lorenzo > + } > + > + return usb_bulk_msg(udev, pipe, data, len, actual_len, timeout); > } > > int mt76u_vendor_request(struct mt76_dev *dev, u8 req, > diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c > index e469e383cb88..f497c8e4332a 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c > +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c > @@ -126,7 +126,7 @@ __mt76x02u_mcu_send_msg(struct mt76_dev *dev, struct sk_buff *skb, > if (ret) > return ret; > > - ret = mt76u_bulk_msg(dev, skb->data, skb->len, 500); > + ret = mt76u_bulk_msg(dev, skb->data, skb->len, NULL, 500); > if (ret) > return ret; > > @@ -271,7 +271,7 @@ __mt76x02u_mcu_fw_send_data(struct mt76x02_dev *dev, u8 *data, > > data_len = MT_CMD_HDR_LEN + len + sizeof(info); > > - err = mt76u_bulk_msg(&dev->mt76, data, data_len, 1000); > + err = mt76u_bulk_msg(&dev->mt76, data, data_len, NULL, 1000); > if (err) { > dev_err(dev->mt76.dev, "firmware upload failed: %d\n", err); > return err; > -- > 2.7.5 >