aboutsummaryrefslogtreecommitdiff
path: root/sys/compat/linuxkpi/common
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2026-03-04 08:11:03 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2026-03-04 08:21:41 +0000
commit3d3303b756ad4ee3ae520f6d07df6978d049a871 (patch)
treef1c28e31c605be0f153d4c2eb9653ae337cbb8cb /sys/compat/linuxkpi/common
parentfa0f891d54449837b47f2ef2266163bdd9117879 (diff)
Diffstat (limited to 'sys/compat/linuxkpi/common')
-rw-r--r--sys/compat/linuxkpi/common/src/linux_80211.c76
1 files changed, 37 insertions, 39 deletions
diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c
index 20ab5a641415..7b61ff6603b7 100644
--- a/sys/compat/linuxkpi/common/src/linux_80211.c
+++ b/sys/compat/linuxkpi/common/src/linux_80211.c
@@ -8574,6 +8574,43 @@ linuxkpi_ieee80211_wake_queue(struct ieee80211_hw *hw, int qnum)
spin_unlock_irqrestore(&lhw->txq_lock, flags);
}
+void
+linuxkpi_ieee80211_handle_wake_tx_queue(struct ieee80211_hw *hw,
+ struct ieee80211_txq *txq)
+{
+ struct lkpi_hw *lhw;
+
+ lhw = HW_TO_LHW(hw);
+
+ LKPI_80211_LHW_TXQ_LOCK(lhw);
+ ieee80211_txq_schedule_start(hw, txq->ac);
+ do {
+ struct lkpi_txq *ltxq;
+ struct ieee80211_txq *ntxq;
+ struct ieee80211_tx_control control;
+ struct sk_buff *skb;
+
+ ntxq = ieee80211_next_txq(hw, txq->ac);
+ if (ntxq == NULL)
+ break;
+ ltxq = TXQ_TO_LTXQ(ntxq);
+
+ memset(&control, 0, sizeof(control));
+ control.sta = ntxq->sta;
+ do {
+ skb = linuxkpi_ieee80211_tx_dequeue(hw, ntxq);
+ if (skb == NULL)
+ break;
+ ltxq->frms_tx++;
+ lkpi_80211_mo_tx(hw, &control, skb);
+ } while(1);
+
+ ieee80211_return_txq(hw, ntxq, false);
+ } while (1);
+ ieee80211_txq_schedule_end(hw, txq->ac);
+ LKPI_80211_LHW_TXQ_UNLOCK(lhw);
+}
+
/* -------------------------------------------------------------------------- */
/* This is just hardware queues. */
@@ -8675,45 +8712,6 @@ out:
/* -------------------------------------------------------------------------- */
-void
-linuxkpi_ieee80211_handle_wake_tx_queue(struct ieee80211_hw *hw,
- struct ieee80211_txq *txq)
-{
- struct lkpi_hw *lhw;
-
- lhw = HW_TO_LHW(hw);
-
- LKPI_80211_LHW_TXQ_LOCK(lhw);
- ieee80211_txq_schedule_start(hw, txq->ac);
- do {
- struct lkpi_txq *ltxq;
- struct ieee80211_txq *ntxq;
- struct ieee80211_tx_control control;
- struct sk_buff *skb;
-
- ntxq = ieee80211_next_txq(hw, txq->ac);
- if (ntxq == NULL)
- break;
- ltxq = TXQ_TO_LTXQ(ntxq);
-
- memset(&control, 0, sizeof(control));
- control.sta = ntxq->sta;
- do {
- skb = linuxkpi_ieee80211_tx_dequeue(hw, ntxq);
- if (skb == NULL)
- break;
- ltxq->frms_tx++;
- lkpi_80211_mo_tx(hw, &control, skb);
- } while(1);
-
- ieee80211_return_txq(hw, ntxq, false);
- } while (1);
- ieee80211_txq_schedule_end(hw, txq->ac);
- LKPI_80211_LHW_TXQ_UNLOCK(lhw);
-}
-
-/* -------------------------------------------------------------------------- */
-
struct lkpi_cfg80211_bss {
u_int refcnt;
struct cfg80211_bss bss;