]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
Bluetooth: btqcomsmd: Fix rx/tx stats
authorLoic Poulain <loic.poulain@linaro.org>
Fri, 6 Apr 2018 09:23:45 +0000 (11:23 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 18 May 2018 04:37:50 +0000 (06:37 +0200)
HCI RX/TX byte counters were only incremented when sending ACL packets.
To reflect the real HCI traffic, we need to increment these counters on
HCI events and HCI commands as well.

Increment error counter on rpmsg errors.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btqcomsmd.c

index 2c9a5fc9137da0d3d48b376c9e3b11ca0c99f265..7df3eed1ef5e9a44a9b4f5ab3f7008b454dc2da5 100644 (file)
@@ -65,6 +65,7 @@ static int btqcomsmd_cmd_callback(struct rpmsg_device *rpdev, void *data,
 {
        struct btqcomsmd *btq = priv;
 
+       btq->hdev->stat.byte_rx += count;
        return btqcomsmd_recv(btq->hdev, HCI_EVENT_PKT, data, count);
 }
 
@@ -76,12 +77,21 @@ static int btqcomsmd_send(struct hci_dev *hdev, struct sk_buff *skb)
        switch (hci_skb_pkt_type(skb)) {
        case HCI_ACLDATA_PKT:
                ret = rpmsg_send(btq->acl_channel, skb->data, skb->len);
+               if (ret) {
+                       hdev->stat.err_tx++;
+                       break;
+               }
                hdev->stat.acl_tx++;
                hdev->stat.byte_tx += skb->len;
                break;
        case HCI_COMMAND_PKT:
                ret = rpmsg_send(btq->cmd_channel, skb->data, skb->len);
+               if (ret) {
+                       hdev->stat.err_tx++;
+                       break;
+               }
                hdev->stat.cmd_tx++;
+               hdev->stat.byte_tx += skb->len;
                break;
        default:
                ret = -EILSEQ;