git: 681b6a95f728 - releng/13.1 - LinuxKPI: 802.11: fix compat code for i386
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 05 Apr 2022 19:11:52 UTC
The branch releng/13.1 has been updated by bz:
URL: https://cgit.FreeBSD.org/src/commit/?id=681b6a95f728fb78485f65bb98303d804e927f84
commit 681b6a95f728fb78485f65bb98303d804e927f84
Author: Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2022-03-31 17:29:53 +0000
Commit: Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2022-04-05 19:11:00 +0000
LinuxKPI: 802.11: fix compat code for i386
Compiling another driver on i386 revealed two problems:
- ieee80211_tx_info.status.status_driver_data space needs to be
calculated. While a pointer is 32bit vm_paddr_t is 64 bit on i386
so we didn't fit more than one of these in but needed more space.
- the arguments to ieee80211_txq_get_depth() are expected to
unsigned long and not uint64_t.
No user noticable changes.
Sponsored by: The FreeBSD Foundation
Approved by: re (gjb)
(cherry picked from commit 86220d3cbd500b1018dcdabb0ba70644db438cfd)
(cherry picked from commit 2a8e509ba30c6546ceeec49f9447c2e3d21a1d22)
---
sys/compat/linuxkpi/common/include/net/mac80211.h | 9 +++++----
sys/compat/linuxkpi/common/src/linux_80211.c | 4 ++--
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/sys/compat/linuxkpi/common/include/net/mac80211.h b/sys/compat/linuxkpi/common/include/net/mac80211.h
index 14404d4723f8..4e3342837ddc 100644
--- a/sys/compat/linuxkpi/common/include/net/mac80211.h
+++ b/sys/compat/linuxkpi/common/include/net/mac80211.h
@@ -670,7 +670,7 @@ struct ieee80211_tx_info {
uint8_t antenna;
uint16_t tx_time;
bool is_valid_ack_signal;
- void *status_driver_data[2]; /* XXX TODO */
+ void *status_driver_data[16 / sizeof(void *)]; /* XXX TODO */
} status;
#define IEEE80211_TX_INFO_DRIVER_DATA_SIZE (5 * sizeof(void *)) /* XXX TODO 5? */
void *driver_data[IEEE80211_TX_INFO_DRIVER_DATA_SIZE / sizeof(void *)];
@@ -900,8 +900,8 @@ struct sk_buff *linuxkpi_ieee80211_pspoll_get(struct ieee80211_hw *,
struct ieee80211_vif *);
struct sk_buff *linuxkpi_ieee80211_nullfunc_get(struct ieee80211_hw *,
struct ieee80211_vif *, bool);
-void linuxkpi_ieee80211_txq_get_depth(struct ieee80211_txq *, uint64_t *,
- uint64_t *);
+void linuxkpi_ieee80211_txq_get_depth(struct ieee80211_txq *, unsigned long *,
+ unsigned long *);
struct wireless_dev *linuxkpi_ieee80211_vif_to_wdev(struct ieee80211_vif *);
void linuxkpi_ieee80211_connection_loss(struct ieee80211_vif *);
void linuxkpi_ieee80211_beacon_loss(struct ieee80211_vif *);
@@ -1931,7 +1931,8 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
}
static __inline void
-ieee80211_txq_get_depth(struct ieee80211_txq *txq, uint64_t *frame_cnt, uint64_t *byte_cnt)
+ieee80211_txq_get_depth(struct ieee80211_txq *txq, unsigned long *frame_cnt,
+ unsigned long *byte_cnt)
{
if (frame_cnt == NULL && byte_cnt == NULL)
diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c
index 3a70d8bbfcab..13ad2908c021 100644
--- a/sys/compat/linuxkpi/common/src/linux_80211.c
+++ b/sys/compat/linuxkpi/common/src/linux_80211.c
@@ -4007,11 +4007,11 @@ linuxkpi_ieee80211_tx_dequeue(struct ieee80211_hw *hw,
void
linuxkpi_ieee80211_txq_get_depth(struct ieee80211_txq *txq,
- uint64_t *frame_cnt, uint64_t *byte_cnt)
+ unsigned long *frame_cnt, unsigned long *byte_cnt)
{
struct lkpi_txq *ltxq;
struct sk_buff *skb;
- uint64_t fc, bc;
+ unsigned long fc, bc;
ltxq = TXQ_TO_LTXQ(txq);