diff --git a/ath10k-4.13/debug.c b/ath10k-4.13/debug.c index a275033..6c7120f 100644 --- a/ath10k-4.13/debug.c +++ b/ath10k-4.13/debug.c @@ -1314,11 +1314,18 @@ static ssize_t ath10k_read_debug_level(struct file *file, "WMI-PRINT: 0x2000\n" "PCI-PS: 0x4000\n" "AHB: 0x8000\n" + "SDIO: 0x10000\n" + "SDIO_DUMP: 0x20000\n" + "USB: 0x40000\n" + "USB_BULK: 0x80000\n" + "SNOC: 0x100000\n" + "QMI: 0x200000\n" + "BEACONS: 0x8000000\n" "NO-FW-DBGLOG:0x10000000\n" "MAC2: 0x20000000\n" "INFO-AS-DBG: 0x40000000\n" "FW: 0x80000000\n" - "ALL: 0xFFFFFFFF\n"; + "ALL: 0xEFFFFFFF\n"; char wbuf[sizeof(buf) + 60]; sz = snprintf(wbuf, sizeof(wbuf), "Current debug level: 0x%x\n\n%s", ath10k_debug_mask, buf); diff --git a/ath10k-4.13/debug.h b/ath10k-4.13/debug.h index 3a83530..672c76a 100644 --- a/ath10k-4.13/debug.h +++ b/ath10k-4.13/debug.h @@ -44,6 +44,10 @@ enum ath10k_debug_mask { ATH10K_DBG_AHB = 0x00008000, ATH10K_DBG_SDIO = 0x00010000, ATH10K_DBG_SDIO_DUMP = 0x00020000, + ATH10K_DBG_USB_BULK = 0x00080000, + ATH10K_DBG_SNOC = 0x00100000, + ATH10K_DBG_QMI = 0x00200000, + ATH10K_DBG_BEACON = 0x08000000, /* Print out beacon debug info */ ATH10K_DBG_NO_DBGLOG = 0x10000000, /* Don't print DBGLOG firmware hex messages in kernel logs. */ ATH10K_DBG_MAC2 = 0x20000000, /* more verbose MAC debugging */ ATH10K_DBG_INFO_AS_DBG = 0x40000000, diff --git a/ath10k-4.13/wmi.c b/ath10k-4.13/wmi.c index 976c2a1..f658c12 100644 --- a/ath10k-4.13/wmi.c +++ b/ath10k-4.13/wmi.c @@ -1809,6 +1809,9 @@ static void ath10k_wmi_tx_beacon_nowait(struct ath10k_vif *arvif) cb->paddr, dtim_zero, deliver_cab); + ath10k_dbg(ar, ATH10K_DBG_BEACON, + "wmi event beacon send, vdev-id: %u rv: %d\n", + arvif->vdev_id, ret); spin_lock_bh(&ar->data_lock); @@ -5285,6 +5288,7 @@ static void ath10k_wmi_event_beacon_tx(struct ath10k *ar, struct sk_buff *skb) struct ath10k_vif *arvif; const struct wmi_beacon_tx_event *ev; u32 vdev_id; + u32 status; spin_lock_bh(&ar->data_lock); @@ -5294,10 +5298,13 @@ static void ath10k_wmi_event_beacon_tx(struct ath10k *ar, struct sk_buff *skb) goto exit; vdev_id = __le32_to_cpu(ev->vdev_id); + status = __le32_to_cpu(ev->tx_status); - /*ath10k_dbg(ar, ATH10K_DBG_WMI, - "wmi event beacon-tx-complete, vdev-id: %u completion-status: 0x%x\n", - vdev_id, __le32_to_cpu(ev->tx_status));*/ + ath10k_dbg(ar, ATH10K_DBG_BEACON, + "wmi event beacon-tx-complete, vdev-id: %u completion-status: 0x%x (%s) tried: %d failed: %d ratecode: 0x%x rateflags: 0x%x tsFlags: 0x%x\n", + vdev_id, status, + status == 0 ? "OK" : (status == 1 ? "XRETRY" : (status == 2 ? "DROP" : "UNKNOWN")), + ev->mpdus_tried, ev->mpdus_failed, ev->tx_rate_code, ev->tx_rate_flags, ev->tsFlags); arvif = ath10k_get_arvif(ar, vdev_id); if (!arvif) { diff --git a/ath10k-4.13/wmi.h b/ath10k-4.13/wmi.h index 4eb278e..853d52d 100644 --- a/ath10k-4.13/wmi.h +++ b/ath10k-4.13/wmi.h @@ -5872,7 +5872,13 @@ struct wmi_bcn_info { struct wmi_beacon_tx_event { __le32 vdev_id; __le32 tx_status; - __le32 future[4]; + u8 mpdus_tried; + u8 mpdus_failed; + u8 tx_rate_code; + u8 tx_rate_flags; + u8 tsFlags; /* WHAL_TXS_FLAG_TSF_TIME_FILTERED, etc */ + u8 future8[3]; + __le32 future[2]; }; struct wmi_host_swba_event { diff --git a/ath10k-4.16/debug.c b/ath10k-4.16/debug.c index 3331803..4385e70 100644 --- a/ath10k-4.16/debug.c +++ b/ath10k-4.16/debug.c @@ -1220,11 +1220,18 @@ static ssize_t ath10k_read_debug_level(struct file *file, "WMI-PRINT: 0x2000\n" "PCI-PS: 0x4000\n" "AHB: 0x8000\n" + "SDIO: 0x10000\n" + "SDIO_DUMP: 0x20000\n" + "USB: 0x40000\n" + "USB_BULK: 0x80000\n" + "SNOC: 0x100000\n" + "QMI: 0x200000\n" + "BEACONS: 0x8000000\n" "NO-FW-DBGLOG:0x10000000\n" "MAC2: 0x20000000\n" "INFO-AS-DBG: 0x40000000\n" "FW: 0x80000000\n" - "ALL: 0xFFFFFFFF\n"; + "ALL: 0xEFFFFFFF\n"; char wbuf[sizeof(buf) + 60]; sz = snprintf(wbuf, sizeof(wbuf), "Current debug level: 0x%x\n\n%s", ath10k_debug_mask, buf); diff --git a/ath10k-4.16/debug.h b/ath10k-4.16/debug.h index 3337aa5..56bf63c 100644 --- a/ath10k-4.16/debug.h +++ b/ath10k-4.16/debug.h @@ -47,6 +47,8 @@ enum ath10k_debug_mask { ATH10K_DBG_USB = 0x00040000, ATH10K_DBG_USB_BULK = 0x00080000, ATH10K_DBG_SNOC = 0x00100000, + ATH10K_DBG_QMI = 0x00200000, + ATH10K_DBG_BEACON = 0x08000000, /* Print out beacon debug info */ ATH10K_DBG_NO_DBGLOG = 0x10000000, /* Don't print DBGLOG firmware hex messages in kernel logs. */ ATH10K_DBG_MAC2 = 0x20000000, /* more verbose MAC debugging */ ATH10K_DBG_INFO_AS_DBG = 0x40000000, diff --git a/ath10k-4.16/mac.c b/ath10k-4.16/mac.c index 2467fe6..e3e2648 100644 --- a/ath10k-4.16/mac.c +++ b/ath10k-4.16/mac.c @@ -4930,6 +4930,7 @@ static int ath10k_start_scan(struct ath10k *ar, /* mac80211 callbacks */ /**********************/ +#ifdef HAS_CONSUME_BLOCK_ACK static int ath10k_mac_consume_block_ack(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct sk_buff *skb) @@ -4954,7 +4955,7 @@ static int ath10k_mac_consume_block_ack(struct ieee80211_hw *hw, } return -EINVAL; } - +#endif static void ath10k_mac_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, @@ -8766,7 +8767,9 @@ static const struct ieee80211_ops ath10k_ops = { #ifdef CONFIG_MAC80211_DEBUGFS .sta_add_debugfs = ath10k_sta_add_debugfs, #endif +#ifdef HAS_CONSUME_BLOCK_ACK .consume_block_ack = ath10k_mac_consume_block_ack, +#endif }; #define CHAN2G(_channel, _freq, _flags) { \ diff --git a/ath10k-4.16/wmi.c b/ath10k-4.16/wmi.c index e470ce6..9f63dea 100644 --- a/ath10k-4.16/wmi.c +++ b/ath10k-4.16/wmi.c @@ -311,6 +311,7 @@ static struct wmi_cmd_map wmi_10x_cmd_map = { .sta_keepalive_cmd = WMI_CMD_UNSUPPORTED, .echo_cmdid = WMI_10X_ECHO_CMDID, .pdev_utf_cmdid = WMI_10X_PDEV_UTF_CMDID, + .pdev_consume_block_ack_cmdid = WMI_PDEV_CONSUME_BLOCK_ACK_CMDID_CT, .dbglog_cfg_cmdid = WMI_10X_DBGLOG_CFG_CMDID, .pdev_qvit_cmdid = WMI_10X_PDEV_QVIT_CMDID, .pdev_ftm_intg_cmdid = WMI_CMD_UNSUPPORTED, @@ -1870,6 +1871,9 @@ static void ath10k_wmi_tx_beacon_nowait(struct ath10k_vif *arvif) cb->paddr, dtim_zero, deliver_cab); + ath10k_dbg(ar, ATH10K_DBG_BEACON, + "wmi event beacon send, vdev-id: %u rv: %d\n", + arvif->vdev_id, ret); spin_lock_bh(&ar->data_lock); @@ -5439,6 +5443,7 @@ static void ath10k_wmi_event_beacon_tx(struct ath10k *ar, struct sk_buff *skb) struct ath10k_vif *arvif; const struct wmi_beacon_tx_event *ev; u32 vdev_id; + u32 status; spin_lock_bh(&ar->data_lock); @@ -5448,10 +5453,13 @@ static void ath10k_wmi_event_beacon_tx(struct ath10k *ar, struct sk_buff *skb) goto exit; vdev_id = __le32_to_cpu(ev->vdev_id); + status = __le32_to_cpu(ev->tx_status); - /*ath10k_dbg(ar, ATH10K_DBG_WMI, - "wmi event beacon-tx-complete, vdev-id: %u completion-status: 0x%x\n", - vdev_id, __le32_to_cpu(ev->tx_status));*/ + ath10k_dbg(ar, ATH10K_DBG_BEACON, + "wmi event beacon-tx-complete, vdev-id: %u completion-status: 0x%x (%s) tried: %d failed: %d ratecode: 0x%x rateflags: 0x%x tsFlags: 0x%x\n", + vdev_id, status, + status == 0 ? "OK" : (status == 1 ? "XRETRY" : (status == 2 ? "DROP" : "UNKNOWN")), + ev->mpdus_tried, ev->mpdus_failed, ev->tx_rate_code, ev->tx_rate_flags, ev->tsFlags); arvif = ath10k_get_arvif(ar, vdev_id); if (!arvif) { diff --git a/ath10k-4.16/wmi.h b/ath10k-4.16/wmi.h index fee9bd2..7f06093 100644 --- a/ath10k-4.16/wmi.h +++ b/ath10k-4.16/wmi.h @@ -1421,6 +1421,7 @@ enum wmi_10x_cmd_id { WMI_10X_SET_CCA_PARAMS_CMDID, WMI_10X_PDEV_BSS_CHAN_INFO_REQUEST, + WMI_PDEV_CONSUME_BLOCK_ACK_CMDID_CT = WMI_10X_END_CMDID - 102, /* CT Specific Command ID */ WMI_PDEV_SET_SPECIAL_CMDID = WMI_10X_END_CMDID - 101, /* CT only: special hack (cts/slot/cifs/ack timers, etc) */ WMI_NOP = WMI_10X_END_CMDID - 100, /* CT only: wmi transport keep-alive, basically */ @@ -6067,7 +6068,13 @@ struct wmi_bcn_info { struct wmi_beacon_tx_event { __le32 vdev_id; __le32 tx_status; - __le32 future[4]; + u8 mpdus_tried; + u8 mpdus_failed; + u8 tx_rate_code; + u8 tx_rate_flags; + u8 tsFlags; /* WHAL_TXS_FLAG_TSF_TIME_FILTERED, etc */ + u8 future8[3]; + __le32 future[2]; }; struct wmi_host_swba_event { diff --git a/ath10k-4.19/debug.c b/ath10k-4.19/debug.c index 42405cf..77c522f 100644 --- a/ath10k-4.19/debug.c +++ b/ath10k-4.19/debug.c @@ -1220,11 +1220,18 @@ static ssize_t ath10k_read_debug_level(struct file *file, "WMI-PRINT: 0x2000\n" "PCI-PS: 0x4000\n" "AHB: 0x8000\n" + "SDIO: 0x10000\n" + "SDIO_DUMP: 0x20000\n" + "USB: 0x40000\n" + "USB_BULK: 0x80000\n" + "SNOC: 0x100000\n" + "QMI: 0x200000\n" + "BEACONS: 0x8000000\n" "NO-FW-DBGLOG:0x10000000\n" "MAC2: 0x20000000\n" "INFO-AS-DBG: 0x40000000\n" "FW: 0x80000000\n" - "ALL: 0xFFFFFFFF\n"; + "ALL: 0xEFFFFFFF\n"; char wbuf[sizeof(buf) + 60]; sz = snprintf(wbuf, sizeof(wbuf), "Current debug level: 0x%x\n\n%s", ath10k_debug_mask, buf); diff --git a/ath10k-4.19/debug.h b/ath10k-4.19/debug.h index 6ac6e01..648bab4 100644 --- a/ath10k-4.19/debug.h +++ b/ath10k-4.19/debug.h @@ -48,6 +48,7 @@ enum ath10k_debug_mask { ATH10K_DBG_USB = 0x00040000, ATH10K_DBG_USB_BULK = 0x00080000, ATH10K_DBG_SNOC = 0x00100000, + ATH10K_DBG_BEACON = 0x08000000, /* Print out beacon debug info */ ATH10K_DBG_NO_DBGLOG = 0x10000000, /* Don't print DBGLOG firmware hex messages in kernel logs. */ ATH10K_DBG_MAC2 = 0x20000000, /* more verbose MAC debugging */ ATH10K_DBG_INFO_AS_DBG = 0x40000000, diff --git a/ath10k-4.19/wmi.c b/ath10k-4.19/wmi.c index ecac58e..7cdc38a 100644 --- a/ath10k-4.19/wmi.c +++ b/ath10k-4.19/wmi.c @@ -1850,6 +1850,9 @@ static void ath10k_wmi_tx_beacon_nowait(struct ath10k_vif *arvif) cb->paddr, dtim_zero, deliver_cab); + ath10k_dbg(ar, ATH10K_DBG_BEACON, + "wmi event beacon send, vdev-id: %u rv: %d\n", + arvif->vdev_id, ret); spin_lock_bh(&ar->data_lock); @@ -5904,6 +5907,7 @@ static void ath10k_wmi_event_beacon_tx(struct ath10k *ar, struct sk_buff *skb) struct ath10k_vif *arvif; const struct wmi_beacon_tx_event *ev; u32 vdev_id; + u32 status; spin_lock_bh(&ar->data_lock); @@ -5913,10 +5917,13 @@ static void ath10k_wmi_event_beacon_tx(struct ath10k *ar, struct sk_buff *skb) goto exit; vdev_id = __le32_to_cpu(ev->vdev_id); + status = __le32_to_cpu(ev->tx_status); - /*ath10k_dbg(ar, ATH10K_DBG_WMI, - "wmi event beacon-tx-complete, vdev-id: %u completion-status: 0x%x\n", - vdev_id, __le32_to_cpu(ev->tx_status));*/ + ath10k_dbg(ar, ATH10K_DBG_BEACON, + "wmi event beacon-tx-complete, vdev-id: %u completion-status: 0x%x (%s) tried: %d failed: %d ratecode: 0x%x rateflags: 0x%x tsFlags: 0x%x\n", + vdev_id, status, + status == 0 ? "OK" : (status == 1 ? "XRETRY" : (status == 2 ? "DROP" : "UNKNOWN")), + ev->mpdus_tried, ev->mpdus_failed, ev->tx_rate_code, ev->tx_rate_flags, ev->tsFlags); arvif = ath10k_get_arvif(ar, vdev_id); if (!arvif) { diff --git a/ath10k-4.19/wmi.h b/ath10k-4.19/wmi.h index 34f7385..33eb53f 100644 --- a/ath10k-4.19/wmi.h +++ b/ath10k-4.19/wmi.h @@ -6199,7 +6199,13 @@ struct wmi_bcn_info { struct wmi_beacon_tx_event { __le32 vdev_id; __le32 tx_status; - __le32 future[4]; + u8 mpdus_tried; + u8 mpdus_failed; + u8 tx_rate_code; + u8 tx_rate_flags; + u8 tsFlags; /* WHAL_TXS_FLAG_TSF_TIME_FILTERED, etc */ + u8 future8[3]; + __le32 future[2]; }; struct wmi_host_swba_event {