aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r--net/bluetooth/hci_event.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 48796832fdf0..fc5338fc2a6e 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -2273,28 +2273,39 @@ static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *s
2273 count = get_unaligned_le16(ptr++); 2273 count = get_unaligned_le16(ptr++);
2274 2274
2275 conn = hci_conn_hash_lookup_handle(hdev, handle); 2275 conn = hci_conn_hash_lookup_handle(hdev, handle);
2276 if (conn) { 2276 if (!conn)
2277 conn->sent -= count; 2277 continue;
2278 2278
2279 if (conn->type == ACL_LINK) { 2279 conn->sent -= count;
2280
2281 switch (conn->type) {
2282 case ACL_LINK:
2283 hdev->acl_cnt += count;
2284 if (hdev->acl_cnt > hdev->acl_pkts)
2285 hdev->acl_cnt = hdev->acl_pkts;
2286 break;
2287
2288 case LE_LINK:
2289 if (hdev->le_pkts) {
2290 hdev->le_cnt += count;
2291 if (hdev->le_cnt > hdev->le_pkts)
2292 hdev->le_cnt = hdev->le_pkts;
2293 } else {
2280 hdev->acl_cnt += count; 2294 hdev->acl_cnt += count;
2281 if (hdev->acl_cnt > hdev->acl_pkts) 2295 if (hdev->acl_cnt > hdev->acl_pkts)
2282 hdev->acl_cnt = hdev->acl_pkts; 2296 hdev->acl_cnt = hdev->acl_pkts;
2283 } else if (conn->type == LE_LINK) {
2284 if (hdev->le_pkts) {
2285 hdev->le_cnt += count;
2286 if (hdev->le_cnt > hdev->le_pkts)
2287 hdev->le_cnt = hdev->le_pkts;
2288 } else {
2289 hdev->acl_cnt += count;
2290 if (hdev->acl_cnt > hdev->acl_pkts)
2291 hdev->acl_cnt = hdev->acl_pkts;
2292 }
2293 } else {
2294 hdev->sco_cnt += count;
2295 if (hdev->sco_cnt > hdev->sco_pkts)
2296 hdev->sco_cnt = hdev->sco_pkts;
2297 } 2297 }
2298 break;
2299
2300 case SCO_LINK:
2301 hdev->sco_cnt += count;
2302 if (hdev->sco_cnt > hdev->sco_pkts)
2303 hdev->sco_cnt = hdev->sco_pkts;
2304 break;
2305
2306 default:
2307 BT_ERR("Unknown type %d conn %p", conn->type, conn);
2308 break;
2298 } 2309 }
2299 } 2310 }
2300 2311