ath10k: report tx airtime provided by fw
PATCH 1/1 ath10k: report tx airtime provided by fw
If supported, update transmit airtime in mac80211 with the airtime values reported by the firmware. TX airtime of the PPDU is reported via HTT data TX completion indication message.
A new service flag 'WMI_SERVICE_REPORT_AIRTIME' is added to advertise the firmware support. For firmwares which do not support this feature, TX airtime is calculated in the driver using TX bitrate.
Hardwares tested : QCA9984
Firmwares tested : 10.4-3.6.1-00841
---
* Changes are made on top of Rajkumar's changes for ATF
drivers/net/wireless/ath/ath10k/core.c | 3 ++ drivers/net/wireless/ath/ath10k/htt.h | 21 ++++++++++++- drivers/net/wireless/ath/ath10k/htt_rx.c | 52 ++++++++++++++++++++++++++++++-- drivers/net/wireless/ath/ath10k/mac.c | 6 +++- drivers/net/wireless/ath/ath10k/txrx.c | 2 +- drivers/net/wireless/ath/ath10k/wmi.h | 42 ++++++++++++++++++++++++++ 6 files changed, 121 insertions(+), 5 deletions(-)
drivers/net/wireless/ath/ath10k/core.c +3 -0
@@ -2599,6 +2599,9 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, ar->wmi.svc_map)) val |=WMI_10_4_TX_DATA_ACK_RSSI ; +if (test_bit (WMI_SERVICE_REPORT_AIRTIME , ar->wmi.svc_map)) + val |=WMI_10_4_REPORT_AIRTIME ; + status =ath10k_mac_ext_resource_config (ar, val);if (status) { ath10k_err(ar,
drivers/net/wireless/ath/ath10k/htt.h +20 -1
@@ -564,6 +564,7 @@ struct htt_mgmt_tx_completion {#define HTT_RX_INDICATION_INFO0_EXT_TID_LSB (0)#define HTT_RX_INDICATION_INFO0_FLUSH_VALID (1 << 5)#define HTT_RX_INDICATION_INFO0_RELEASE_VALID (1 << 6) +#define HTT_RX_INDICATION_INFO0_PPDU_DURATION BIT(7)#define HTT_RX_INDICATION_INFO1_FLUSH_START_SEQNO_MASK 0x0000003F#define HTT_RX_INDICATION_INFO1_FLUSH_START_SEQNO_LSB 0
@@ -576,7 +577,10 @@ struct htt_mgmt_tx_completion {#define HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES_MASK 0xFF000000#define HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES_LSB 24 -#define HTT_TX_CMPL_FLAG_DATA_RSSI BIT(0) +#define HTT_TX_CMPL_FLAG_DATA_RSSI BIT(0) +#define HTT_TX_CMPL_FLAG_PPID_PRESENT BIT(1) +#define HTT_TX_CMPL_FLAG_PA_PRESENT BIT(2) +#define HTT_TX_CMPL_FLAG_PPDU_DURATION_PRESENT BIT(3)struct htt_rx_indication_hdr {u8 info0;/* %HTT_RX_INDICATION_INFO0_ */
@@ -866,6 +870,21 @@ struct htt_data_tx_completion {__le16 msdus[0 ];/* variable length based on %num_msdus */ } __packed; +#define HTT_TX_PPDU_DUR_INFO0_PEER_ID_MASK GENMASK(15, 0) +#define HTT_TX_PPDU_DUR_INFO0_TID_MASK GENMASK(20, 16) + +struct htt_data_tx_ppdu_dur { +__le32 info0;/* HTT_TX_PPDU_DUR_INFO0_ */ +__le32 tx_duration;/* in usecs */ +} __packed; + +#define HTT_TX_COMPL_PPDU_DUR_INFO0_NUM_ENTRIES_MASK GENMASK(7, 0) + +struct htt_data_tx_compl_ppdu_dur { +__le32 info0;/* HTT_TX_COMPL_PPDU_DUR_INFO0_ */ +struct htt_data_tx_ppdu_dur ppdu_dur[0 ]; +} __packed; +struct htt_tx_compl_ind_base {u32 hdr;u16 payload[1 /*or more*/ ];
drivers/net/wireless/ath/ath10k/htt_rx.c +50 -2
76 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/mac.c +5 -1
@@ -3967,6 +3967,9 @@ static u16 ath10k_mac_update_airtime(struct ath10k *ar,if (!txq || !txq->sta)return airtime; +if (test_bit (WMI_SERVICE_REPORT_AIRTIME , ar->wmi.svc_map)) +return airtime; +spin_lock_bh (&ar->data_lock); arsta = (struct ath10k_sta *)txq->sta->drv_priv;
@@ -8615,7 +8618,8 @@ int ath10k_mac_register(struct ath10k *ar)wiphy_ext_feature_set (ar->hw->wiphy,NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT ); -if (ath10k_peer_stats_enabled (ar)) +if (ath10k_peer_stats_enabled (ar) || +test_bit (WMI_SERVICE_REPORT_AIRTIME , ar->wmi.svc_map))wiphy_ext_feature_set (ar->hw->wiphy,NL80211_EXT_FEATURE_AIRTIME_FAIRNESS );/*
drivers/net/wireless/ath/ath10k/txrx.c +1 -1
@@ -95,7 +95,7 @@ int ath10k_txrx_tx_unref(struct ath10k_htt *htt,wake_up (&htt->empty_tx_wq);spin_unlock_bh (&htt->tx_lock); -if (txq && txq->sta) +if (txq && txq->sta && skb_cb->airtime_est)ieee80211_sta_register_airtime (txq->sta, txq->tid, skb_cb->airtime_est,0 );
drivers/net/wireless/ath/ath10k/wmi.h +42 -0
72 lines not on this page · raw message
Signature · 1 line
2.7.4
Quoted 8 lines · Manikanta Pubbisetty
If supported, update transmit airtime in mac80211 with the airtime values reported by the firmware. TX airtime of the PPDU is reported via HTT data TX completion indication message.
A new service flag '
WMI_SERVICE_REPORT_AIRTIME' is added to advertise the firmware support. For firmwares which do not support this feature, TX airtime is calculated in the driver using TX bitrate.
Quoted 5 lines
Hardwares tested : QCA9984
Firmwares tested : 10.4-3.6.1-00841Signed-off-by Manikanta Pubbisetty <[email protected]>Signed-off-by Kalle Valo <[email protected]>
I had some conflicts, please carefully check my resolution in the pending branch:
$ git am -s --reject 10684687.mbox
Applying: ath10k: report tx airtime provided by fw
Checking patch drivers/net/wireless/ath/ath10k/core.c...
Hunk #1 succeeded at 2631 (offset 32 lines).
Checking patch drivers/net/wireless/ath/ath10k/htt.h...
Hunk #1 succeeded at 571 (offset 7 lines).
Hunk #2 succeeded at 584 (offset 7 lines).
Hunk #3 succeeded at 877 (offset 7 lines).
Checking patch drivers/net/wireless/ath/ath10k/htt_rx.c...
Hunk #1 succeeded at 2220 (offset 217 lines).
Hunk #2 succeeded at 2249 (offset 217 lines).
Hunk #3 succeeded at 2286 (offset 217 lines).
Checking patch drivers/net/wireless/ath/ath10k/mac.c...
Hunk #1 succeeded at 4007 (offset 40 lines).
error: while searching for:
wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT); if (ath10k_peer_stats_enabled(ar))
wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_AIRTIME_FAIRNESS);
/*error: patch failed: drivers/net/wireless/ath/ath10k/mac.c:8615 Checking patch drivers/net/wireless/ath/ath10k/txrx.c... Checking patch drivers/net/wireless/ath/ath10k/wmi.h...
error: while searching for:
WMI_SERVICE_SPOOF_MAC_SUPPORT,
WMI_SERVICE_TX_DATA_ACK_RSSI,
WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT,
/* keep last */
WMI_SERVICE_MAX,error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:205
error: while searching for:
WMI_10_4_SERVICE_PEER_TID_CONFIGS_SUPPORT,
WMI_10_4_SERVICE_VDEV_BCN_RATE_CONTROL,
WMI_10_4_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT,
};static inline char *wmi_service_name(int service_id)
error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:359
error: while searching for:
SVCSTR(WMI_SERVICE_RESET_CHIP);
SVCSTR(WMI_SERVICE_TX_DATA_ACK_RSSI);
SVCSTR(WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT);
default:
return NULL;
}error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:474
error: while searching for:
WMI_SERVICE_TX_DATA_ACK_RSSI, len);
SVCMAP(WMI_10_4_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT,
WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT, len);
}#undef SVCMAP
error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:786 Hunk #5 succeeded at 2989 (offset -7 lines).
Applied patch drivers/net/wireless/ath/ath10k/core.c cleanly. Applied patch drivers/net/wireless/ath/ath10k/htt.h cleanly. Applied patch drivers/net/wireless/ath/ath10k/htt_rx.c cleanly. Applying patch drivers/net/wireless/ath/ath10k/mac.c with 1 reject... Hunk #1 applied cleanly.
Rejected hunk #2.
Applied patch drivers/net/wireless/ath/ath10k/txrx.c cleanly. Applying patch drivers/net/wireless/ath/ath10k/wmi.h with 4 rejects... Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Rejected hunk #4.
Hunk #5 applied cleanly.
Patch failed at 0001 ath10k: report tx airtime provided by fw
Signature · 9 lines
https://patchwork.kernel.org/patch/10684687/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches _______________________________________________ ath10k mailing list [email protected] http://lists.infradead.org/mailman/listinfo/ath10k
Quoted 8 lines · Manikanta Pubbisetty
If supported, update transmit airtime in mac80211 with the airtime values reported by the firmware. TX airtime of the PPDU is reported via HTT data TX completion indication message.
A new service flag '
WMI_SERVICE_REPORT_AIRTIME' is added to advertise the firmware support. For firmwares which do not support this feature, TX airtime is calculated in the driver using TX bitrate.
Quoted 5 lines
Hardwares tested : QCA9984
Firmwares tested : 10.4-3.6.1-00841Signed-off-by Manikanta Pubbisetty <[email protected]>Signed-off-by Kalle Valo <[email protected]>
I had some conflicts, please carefully check my resolution in the pending branch:
$ git am -s --reject 10684687.mbox
Applying: ath10k: report tx airtime provided by fw
Checking patch drivers/net/wireless/ath/ath10k/core.c...
Hunk #1 succeeded at 2631 (offset 32 lines).
Checking patch drivers/net/wireless/ath/ath10k/htt.h...
Hunk #1 succeeded at 571 (offset 7 lines).
Hunk #2 succeeded at 584 (offset 7 lines).
Hunk #3 succeeded at 877 (offset 7 lines).
Checking patch drivers/net/wireless/ath/ath10k/htt_rx.c...
Hunk #1 succeeded at 2220 (offset 217 lines).
Hunk #2 succeeded at 2249 (offset 217 lines).
Hunk #3 succeeded at 2286 (offset 217 lines).
Checking patch drivers/net/wireless/ath/ath10k/mac.c...
Hunk #1 succeeded at 4007 (offset 40 lines).
error: while searching for:
wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT); if (ath10k_peer_stats_enabled(ar))
wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_AIRTIME_FAIRNESS);
/*error: patch failed: drivers/net/wireless/ath/ath10k/mac.c:8615 Checking patch drivers/net/wireless/ath/ath10k/txrx.c... Checking patch drivers/net/wireless/ath/ath10k/wmi.h...
error: while searching for:
WMI_SERVICE_SPOOF_MAC_SUPPORT,
WMI_SERVICE_TX_DATA_ACK_RSSI,
WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT,
/* keep last */
WMI_SERVICE_MAX,error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:205
error: while searching for:
WMI_10_4_SERVICE_PEER_TID_CONFIGS_SUPPORT,
WMI_10_4_SERVICE_VDEV_BCN_RATE_CONTROL,
WMI_10_4_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT,
};static inline char *wmi_service_name(int service_id)
error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:359
error: while searching for:
SVCSTR(WMI_SERVICE_RESET_CHIP);
SVCSTR(WMI_SERVICE_TX_DATA_ACK_RSSI);
SVCSTR(WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT);
default:
return NULL;
}error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:474
error: while searching for:
WMI_SERVICE_TX_DATA_ACK_RSSI, len);
SVCMAP(WMI_10_4_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT,
WMI_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT, len);
}#undef SVCMAP
error: patch failed: drivers/net/wireless/ath/ath10k/wmi.h:786 Hunk #5 succeeded at 2989 (offset -7 lines).
Applied patch drivers/net/wireless/ath/ath10k/core.c cleanly. Applied patch drivers/net/wireless/ath/ath10k/htt.h cleanly. Applied patch drivers/net/wireless/ath/ath10k/htt_rx.c cleanly. Applying patch drivers/net/wireless/ath/ath10k/mac.c with 1 reject... Hunk #1 applied cleanly.
Rejected hunk #2.
Applied patch drivers/net/wireless/ath/ath10k/txrx.c cleanly. Applying patch drivers/net/wireless/ath/ath10k/wmi.h with 4 rejects... Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Rejected hunk #4.
Hunk #5 applied cleanly.
Patch failed at 0001 ath10k: report tx airtime provided by fw
Signature · 3 lines
https://patchwork.kernel.org/patch/10684687/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Quoted 8 lines · Manikanta Pubbisetty
If supported, update transmit airtime in mac80211 with the airtime values reported by the firmware. TX airtime of the PPDU is reported via HTT data TX completion indication message.
A new service flag '
WMI_SERVICE_REPORT_AIRTIME' is added to advertise the firmware support. For firmwares which do not support this feature, TX airtime is calculated in the driver using TX bitrate.
Quoted 5 lines
Hardwares tested : QCA9984
Firmwares tested : 10.4-3.6.1-00841Signed-off-by Manikanta Pubbisetty <[email protected]>Signed-off-by Kalle Valo <[email protected]>
Patch applied to ath-next branch of ath.git, thanks.
bb31b7cb106c ath10k: report tx airtime provided by fw
Signature · 3 lines
https://patchwork.kernel.org/patch/10684687/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Quoted 8 lines · Manikanta Pubbisetty
If supported, update transmit airtime in mac80211 with the airtime values reported by the firmware. TX airtime of the PPDU is reported via HTT data TX completion indication message.
A new service flag '
WMI_SERVICE_REPORT_AIRTIME' is added to advertise the firmware support. For firmwares which do not support this feature, TX airtime is calculated in the driver using TX bitrate.
Quoted 5 lines
Hardwares tested : QCA9984
Firmwares tested : 10.4-3.6.1-00841Signed-off-by Manikanta Pubbisetty <[email protected]>Signed-off-by Kalle Valo <[email protected]>
Patch applied to ath-next branch of ath.git, thanks.
bb31b7cb106c ath10k: report tx airtime provided by fw
Signature · 9 lines
https://patchwork.kernel.org/patch/10684687/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches _______________________________________________ ath10k mailing list [email protected] http://lists.infradead.org/mailman/listinfo/ath10k