mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
wifi: free SKBTX_WIFI_STATUS skb tx_flags flag
Jason mentioned at netdevconf that we've run out of tx_flags in the skb_shinfo(). Gain one bit back by removing the wifi bit. We can do that because the only userspace application for it (hostapd) doesn't change the setting on the socket, it just uses different sockets, and normally doesn't even use this any more, sending the frames over nl80211 instead. Reviewed-by: Jason Xing <kerneljasonxing@gmail.com> Link: https://patch.msgid.link/20250313134942.52ff54a140ec.If390bbdc46904cf451256ba989d7a056c457af6e@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
46380bf020
commit
76a853f86c
6 changed files with 10 additions and 13 deletions
|
@ -7,6 +7,7 @@
|
|||
#ifndef WIL6210_TXRX_H
|
||||
#define WIL6210_TXRX_H
|
||||
|
||||
#include <net/sock.h>
|
||||
#include "wil6210.h"
|
||||
#include "txrx_edma.h"
|
||||
|
||||
|
@ -617,7 +618,7 @@ static inline bool wil_need_txstat(struct sk_buff *skb)
|
|||
const u8 *da = wil_skb_get_da(skb);
|
||||
|
||||
return is_unicast_ether_addr(da) && skb->sk &&
|
||||
(skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS);
|
||||
sock_flag(skb->sk, SOCK_WIFI_STATUS);
|
||||
}
|
||||
|
||||
static inline void wil_consume_skb(struct sk_buff *skb, bool acked)
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/suspend.h>
|
||||
#include <net/sock.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "wmm.h"
|
||||
|
@ -939,7 +940,7 @@ mwifiex_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
multicast = is_multicast_ether_addr(skb->data);
|
||||
|
||||
if (unlikely(!multicast && skb->sk &&
|
||||
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS &&
|
||||
sock_flag(skb->sk, SOCK_WIFI_STATUS) &&
|
||||
priv->adapter->fw_api_ver == MWIFIEX_FW_V15))
|
||||
skb = mwifiex_clone_skb_for_tx_status(priv,
|
||||
skb,
|
||||
|
|
|
@ -481,9 +481,6 @@ enum {
|
|||
/* generate software time stamp on packet tx completion */
|
||||
SKBTX_COMPLETION_TSTAMP = 1 << 3,
|
||||
|
||||
/* generate wifi status information (where possible) */
|
||||
SKBTX_WIFI_STATUS = 1 << 4,
|
||||
|
||||
/* determine hardware time stamp based on time or cycles */
|
||||
SKBTX_HW_TSTAMP_NETDEV = 1 << 5,
|
||||
|
||||
|
|
|
@ -2736,8 +2736,6 @@ static inline void _sock_tx_timestamp(struct sock *sk,
|
|||
*tskey = atomic_inc_return(&sk->sk_tskey) - 1;
|
||||
}
|
||||
}
|
||||
if (unlikely(sock_flag(sk, SOCK_WIFI_STATUS)))
|
||||
*tx_flags |= SKBTX_WIFI_STATUS;
|
||||
}
|
||||
|
||||
static inline void sock_tx_timestamp(struct sock *sk,
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include <linux/slab.h>
|
||||
#include <linux/unaligned.h>
|
||||
#include <net/sock.h>
|
||||
#include "ieee80211_i.h"
|
||||
#include "mesh.h"
|
||||
#include "wme.h"
|
||||
|
@ -776,7 +777,7 @@ bool ieee80211_mesh_xmit_fast(struct ieee80211_sub_if_data *sdata,
|
|||
if (ethertype < ETH_P_802_3_MIN)
|
||||
return false;
|
||||
|
||||
if (skb->sk && skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)
|
||||
if (skb->sk && sock_flag(skb->sk, SOCK_WIFI_STATUS))
|
||||
return false;
|
||||
|
||||
if (skb->ip_summed == CHECKSUM_PARTIAL) {
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <net/codel_impl.h>
|
||||
#include <linux/unaligned.h>
|
||||
#include <net/fq_impl.h>
|
||||
#include <net/sock.h>
|
||||
#include <net/gso.h>
|
||||
|
||||
#include "ieee80211_i.h"
|
||||
|
@ -2876,8 +2877,7 @@ static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,
|
|||
}
|
||||
|
||||
if (unlikely(!multicast &&
|
||||
((skb->sk &&
|
||||
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS) ||
|
||||
((skb->sk && sock_flag(skb->sk, SOCK_WIFI_STATUS)) ||
|
||||
ctrl_flags & IEEE80211_TX_CTL_REQ_TX_STATUS)))
|
||||
info_id = ieee80211_store_ack_skb(local, skb, &info_flags,
|
||||
cookie);
|
||||
|
@ -3774,7 +3774,7 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
|
|||
return false;
|
||||
|
||||
/* don't handle TX status request here either */
|
||||
if (skb->sk && skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)
|
||||
if (skb->sk && sock_flag(skb->sk, SOCK_WIFI_STATUS))
|
||||
return false;
|
||||
|
||||
if (hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) {
|
||||
|
@ -4664,8 +4664,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
|||
memcpy(IEEE80211_SKB_CB(seg), info, sizeof(*info));
|
||||
}
|
||||
|
||||
if (unlikely(skb->sk &&
|
||||
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)) {
|
||||
if (unlikely(skb->sk && sock_flag(skb->sk, SOCK_WIFI_STATUS))) {
|
||||
info->status_data = ieee80211_store_ack_skb(local, skb,
|
||||
&info->flags, NULL);
|
||||
if (info->status_data)
|
||||
|
|
Loading…
Add table
Reference in a new issue