All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rahul Rameshbabu <sergeantsagara@protonmail.com>
To: "Kalle Valo" <kvalo@kernel.org>,
	"Larry Finger" <Larry.Finger@lwfinger.net>,
	"Michael Büsch" <m@bues.ch>,
	"Julian Calaby" <julian.calaby@gmail.com>
Cc: linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Rahul Rameshbabu <sergeantsagara@protonmail.com>
Subject: [PATCH wireless v2 2/4] wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled
Date: Sun, 31 Dec 2023 05:03:45 +0000	[thread overview]
Message-ID: <20231231050300.122806-3-sergeantsagara@protonmail.com> (raw)
In-Reply-To: <20231231050300.122806-1-sergeantsagara@protonmail.com>

When QoS is disabled, the queue priority value will not map to the correct
ieee80211 queue since there is only one queue. Stop/wake queue 0 when QoS
is disabled to prevent trying to stop/wake a non-existent queue and failing
to stop/wake the actual queue instantiated.

Fixes: 5100d5ac81b9 ("b43: Add PIO support for PCMCIA devices")
Signed-off-by: Rahul Rameshbabu <sergeantsagara@protonmail.com>
---

Notes:
    Changes:
    
        v1->v2:
            - Refactored logic with helpers (suggested by Larry Finger
              <Larry.Finger@lwfinger.net>)
    
    Issue Details:
    
        When PIO support was first introduced to the b43 driver in commit
        5100d5ac81b9 ("b43: Add PIO support for PCMCIA devices"), four queues
        were allocated for different QoS priorities for video, voice, best
        effort, and background. This was modelled after commit
        e6f5b934fba8 ("b43: Add QOS support"), which has the following issue.
        The core networking stack maps these priorities in the skb, and these
        mappings are noted in the ring's queue_prio member. When disabling QoS
        in the driver, the skb will still contain the mapping for the core
        stack while only one queue is actually considered active (the best
        effort queue). In the situation that QoS is disabled, b43 needs to pass
        0 to ieee80211 queue functions since the number of queues is set to 1
        in the struct ieee80211_hw queues member.

 drivers/net/wireless/broadcom/b43/pio.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/broadcom/b43/pio.c b/drivers/net/wireless/broadcom/b43/pio.c
index 0cf70fdb60a6..e41f2f5b4c26 100644
--- a/drivers/net/wireless/broadcom/b43/pio.c
+++ b/drivers/net/wireless/broadcom/b43/pio.c
@@ -525,7 +525,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)
 	if (total_len > (q->buffer_size - q->buffer_used)) {
 		/* Not enough memory on the queue. */
 		err = -EBUSY;
-		ieee80211_stop_queue(dev->wl->hw, skb_get_queue_mapping(skb));
+		b43_stop_queue(dev, skb_get_queue_mapping(skb));
 		q->stopped = true;
 		goto out;
 	}
@@ -552,7 +552,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)
 	if (((q->buffer_size - q->buffer_used) < roundup(2 + 2 + 6, 4)) ||
 	    (q->free_packet_slots == 0)) {
 		/* The queue is full. */
-		ieee80211_stop_queue(dev->wl->hw, skb_get_queue_mapping(skb));
+		b43_stop_queue(dev, skb_get_queue_mapping(skb));
 		q->stopped = true;
 	}
 
@@ -587,7 +587,7 @@ void b43_pio_handle_txstatus(struct b43_wldev *dev,
 	list_add(&pack->list, &q->packets_list);
 
 	if (q->stopped) {
-		ieee80211_wake_queue(dev->wl->hw, q->queue_prio);
+		b43_wake_queue(dev, q->queue_prio);
 		q->stopped = false;
 	}
 }
-- 
2.42.0



WARNING: multiple messages have this Message-ID (diff)
From: Rahul Rameshbabu <sergeantsagara@protonmail.com>
To: "Kalle Valo" <kvalo@kernel.org>,
	"Larry Finger" <Larry.Finger@lwfinger.net>,
	"Michael Büsch" <m@bues.ch>,
	"Julian Calaby" <julian.calaby@gmail.com>
Cc: linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Rahul Rameshbabu <sergeantsagara@protonmail.com>
Subject: [PATCH wireless v2 2/4] wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled
Date: Sun, 31 Dec 2023 05:03:45 +0000	[thread overview]
Message-ID: <20231231050300.122806-3-sergeantsagara@protonmail.com> (raw)
In-Reply-To: <20231231050300.122806-1-sergeantsagara@protonmail.com>

When QoS is disabled, the queue priority value will not map to the correct
ieee80211 queue since there is only one queue. Stop/wake queue 0 when QoS
is disabled to prevent trying to stop/wake a non-existent queue and failing
to stop/wake the actual queue instantiated.

Fixes: 5100d5ac81b9 ("b43: Add PIO support for PCMCIA devices")
Signed-off-by: Rahul Rameshbabu <sergeantsagara@protonmail.com>
---

Notes:
    Changes:
    
        v1->v2:
            - Refactored logic with helpers (suggested by Larry Finger
              <Larry.Finger@lwfinger.net>)
    
    Issue Details:
    
        When PIO support was first introduced to the b43 driver in commit
        5100d5ac81b9 ("b43: Add PIO support for PCMCIA devices"), four queues
        were allocated for different QoS priorities for video, voice, best
        effort, and background. This was modelled after commit
        e6f5b934fba8 ("b43: Add QOS support"), which has the following issue.
        The core networking stack maps these priorities in the skb, and these
        mappings are noted in the ring's queue_prio member. When disabling QoS
        in the driver, the skb will still contain the mapping for the core
        stack while only one queue is actually considered active (the best
        effort queue). In the situation that QoS is disabled, b43 needs to pass
        0 to ieee80211 queue functions since the number of queues is set to 1
        in the struct ieee80211_hw queues member.

 drivers/net/wireless/broadcom/b43/pio.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/broadcom/b43/pio.c b/drivers/net/wireless/broadcom/b43/pio.c
index 0cf70fdb60a6..e41f2f5b4c26 100644
--- a/drivers/net/wireless/broadcom/b43/pio.c
+++ b/drivers/net/wireless/broadcom/b43/pio.c
@@ -525,7 +525,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)
 	if (total_len > (q->buffer_size - q->buffer_used)) {
 		/* Not enough memory on the queue. */
 		err = -EBUSY;
-		ieee80211_stop_queue(dev->wl->hw, skb_get_queue_mapping(skb));
+		b43_stop_queue(dev, skb_get_queue_mapping(skb));
 		q->stopped = true;
 		goto out;
 	}
@@ -552,7 +552,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)
 	if (((q->buffer_size - q->buffer_used) < roundup(2 + 2 + 6, 4)) ||
 	    (q->free_packet_slots == 0)) {
 		/* The queue is full. */
-		ieee80211_stop_queue(dev->wl->hw, skb_get_queue_mapping(skb));
+		b43_stop_queue(dev, skb_get_queue_mapping(skb));
 		q->stopped = true;
 	}
 
@@ -587,7 +587,7 @@ void b43_pio_handle_txstatus(struct b43_wldev *dev,
 	list_add(&pack->list, &q->packets_list);
 
 	if (q->stopped) {
-		ieee80211_wake_queue(dev->wl->hw, q->queue_prio);
+		b43_wake_queue(dev, q->queue_prio);
 		q->stopped = false;
 	}
 }
-- 
2.42.0



_______________________________________________
b43-dev mailing list
b43-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/b43-dev

  parent reply	other threads:[~2023-12-31  5:03 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-31  5:03 [PATCH wireless v2 0/4] wifi: b43: Various QoS-related fixes Rahul Rameshbabu
2023-12-31  5:03 ` Rahul Rameshbabu
2023-12-31  5:03 ` [PATCH wireless v2 1/4] wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled Rahul Rameshbabu
2023-12-31  5:03   ` Rahul Rameshbabu
2024-01-01  8:01   ` Julian Calaby
2024-01-01  8:01     ` Julian Calaby
2024-01-10 14:56   ` Kalle Valo
2024-01-10 14:56     ` Kalle Valo
2023-12-31  5:03 ` Rahul Rameshbabu [this message]
2023-12-31  5:03   ` [PATCH wireless v2 2/4] wifi: b43: Stop/wake correct queue in PIO " Rahul Rameshbabu
2024-01-01  8:02   ` Julian Calaby
2024-01-01  8:02     ` Julian Calaby
2023-12-31  5:03 ` [PATCH wireless v2 3/4] wifi: b43: Stop correct queue in DMA worker " Rahul Rameshbabu
2023-12-31  5:03   ` Rahul Rameshbabu
2024-01-01  8:03   ` Julian Calaby
2024-01-01  8:03     ` Julian Calaby
2023-12-31  5:03 ` [PATCH wireless v2 4/4] wifi: b43: Disable QoS for bcm4331 Rahul Rameshbabu
2023-12-31  5:03   ` Rahul Rameshbabu
2024-01-01  8:05   ` Julian Calaby
2024-01-01  8:05     ` Julian Calaby
2023-12-31  9:26 ` [PATCH wireless v2 0/4] wifi: b43: Various QoS-related fixes Michael Büsch
2023-12-31  9:26   ` Michael Büsch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231231050300.122806-3-sergeantsagara@protonmail.com \
    --to=sergeantsagara@protonmail.com \
    --cc=Larry.Finger@lwfinger.net \
    --cc=b43-dev@lists.infradead.org \
    --cc=julian.calaby@gmail.com \
    --cc=kvalo@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=m@bues.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.