Message ID | 5f5f1e801432af9318bc604c54a6c15dcd8ab036.1644342794.git.objelf@gmail.com |
---|---|
State | Accepted |
Commit | e8e41e2b99cc4355fdf057fefcaf3db4b1ad6bc6 |
Headers | show |
Series | [v2,1/2] Bluetooth: mt7921s: support bluetooth reset mechanism | expand |
Hi Sean, > There is a conflict between MediaTek wmt event and msft vendor extension > logic in the core layer since 145373cb1b1f ("Bluetooth: Add framework for > Microsoft vendor extension") was introduced because we changed the type of > mediatek wmt event to the type of msft vendor event in the driver. > > But the purpose we reported mediatek event to the core layer is for the > diagnostic purpose with that we are able to see the full packet trace via > monitoring socket with btmon. Thus, it is harmless we keep the original > type of mediatek vendor event here to avoid breaking the msft extension > function especially they can be supported by Mediatek chipset like MT7921 > , MT7922 devices and future devices. > > Signed-off-by: Sean Wang <sean.wang@mediatek.com> > --- > v2: fix the warning: variable 'hdr' set but not used > --- > drivers/bluetooth/btmtk.h | 1 + > drivers/bluetooth/btmtksdio.c | 9 +-------- > drivers/bluetooth/btusb.c | 8 -------- > 3 files changed, 2 insertions(+), 16 deletions(-) patch has been applied to bluetooth-next tree. Regards Marcel
diff --git a/drivers/bluetooth/btmtk.h b/drivers/bluetooth/btmtk.h index 8960a5f89d48..013850fd2055 100644 --- a/drivers/bluetooth/btmtk.h +++ b/drivers/bluetooth/btmtk.h @@ -5,6 +5,7 @@ #define FIRMWARE_MT7668 "mediatek/mt7668pr2h.bin" #define FIRMWARE_MT7961 "mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin" +#define HCI_EV_WMT 0xe4 #define HCI_WMT_MAX_EVENT_SIZE 64 #define BTMTK_WMT_REG_WRITE 0x1 diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c index 8e200e80d2f6..cbb09e1b823d 100644 --- a/drivers/bluetooth/btmtksdio.c +++ b/drivers/bluetooth/btmtksdio.c @@ -381,13 +381,6 @@ static int btmtksdio_recv_event(struct hci_dev *hdev, struct sk_buff *skb) struct hci_event_hdr *hdr = (void *)skb->data; int err; - /* Fix up the vendor event id with 0xff for vendor specific instead - * of 0xe4 so that event send via monitoring socket can be parsed - * properly. - */ - if (hdr->evt == 0xe4) - hdr->evt = HCI_EV_VENDOR; - /* When someone waits for the WMT event, the skb is being cloned * and being processed the events from there then. */ @@ -403,7 +396,7 @@ static int btmtksdio_recv_event(struct hci_dev *hdev, struct sk_buff *skb) if (err < 0) goto err_free_skb; - if (hdr->evt == HCI_EV_VENDOR) { + if (hdr->evt == HCI_EV_WMT) { if (test_and_clear_bit(BTMTKSDIO_TX_WAIT_VND_EVT, &bdev->tx_state)) { /* Barrier to sync with other CPUs */ diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index e03dfbd92fcc..9f10c5e256ec 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -2251,7 +2251,6 @@ static void btusb_mtk_wmt_recv(struct urb *urb) { struct hci_dev *hdev = urb->context; struct btusb_data *data = hci_get_drvdata(hdev); - struct hci_event_hdr *hdr; struct sk_buff *skb; int err; @@ -2271,13 +2270,6 @@ static void btusb_mtk_wmt_recv(struct urb *urb) hci_skb_pkt_type(skb) = HCI_EVENT_PKT; skb_put_data(skb, urb->transfer_buffer, urb->actual_length); - hdr = (void *)skb->data; - /* Fix up the vendor event id with 0xff for vendor specific - * instead of 0xe4 so that event send via monitoring socket can - * be parsed properly. - */ - hdr->evt = 0xff; - /* When someone waits for the WMT event, the skb is being cloned * and being processed the events from there then. */