On November 29, 2022 3:06:37 PM Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote:On 29/11/2022 06:34, JunASAKA wrote:I noticed there is a superfluous "*hdr" parameter in rtl8xxxu module when I am trying to fix some bugs for the rtl8192eu wifi dongle. This parameter can be removed and then gained from the skb object to make the function more beautiful. Signed-off-by: JunASAKA <JunASAKA@xxxxxxxxxxxxx> --- drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index ac641a56efb0..4c3d97e8e51f 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -4767,9 +4767,10 @@ static u32 rtl8xxxu_80211_to_rtl_queue(u32 queue) return rtlqueue; } -static u32 rtl8xxxu_queue_select(struct ieee80211_hdr *hdr, struct sk_buff *skb) +static u32 rtl8xxxu_queue_select(struct sk_buff *skb) { u32 queue; + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; if (ieee80211_is_mgmt(hdr->frame_control)) queue = TXDESC_QUEUE_MGNT; @@ -5118,7 +5119,7 @@ static void rtl8xxxu_tx(struct ieee80211_hw *hw, if (control && control->sta) sta = control->sta; - queue = rtl8xxxu_queue_select(hdr, skb); + queue = rtl8xxxu_queue_select(skb); tx_desc = skb_push(skb, tx_desc_size);See the recent discussion about this here: https://lore.kernel.org/linux-wireless/acd30174-4541-7343-e49a-badd199f4151@xxxxxxxxx/ https://lore.kernel.org/linux-wireless/2af44c28-1c12-46b9-85b9-011560bf7f7e@xxxxxxxxx/Not sure why I looked but I did. You may want to look at rtl8xxxu_tx() which is the .tx callback that mac80211 uses and the first statement in there is also assuming skb->data points to the 802.11 header.
Here the documentation of the .tx callback: @tx: Handler that 802.11 module calls for each transmitted frame. * skb contains the buffer *starting from the IEEE 802.11 header*. * The low-level driver should send the frame out based on * configuration in the TX control data. This handler should, * preferably, never fail and stop queues appropriately. * Must be atomic.I don't see any pushes or pulls before the queue select so that would mean mac80211 is not complying to the described behavior.
Regards, Arend
Regards, Arend
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature