mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 08:31:37 +00:00
A small set of fixes for
* queue selection in mesh/ocb * queue handling on interface stop * hwsim virtio device vs. some other virtio changes * dt-bindings email addresses * color collision memory allocation * a const variable in rtw88 * shared SKB transmit in the ethernet format path * P2P client port authorization -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEH1e1rEeCd0AIMq6MB8qZga/fl8QFAmLOcFIACgkQB8qZga/f l8TK6g//dM2kjGZhyDJUnUicUplN6m4sHLeVqqWCJiUaZepg0Zb3zwEhfEjXnYgn nWfFCqyRYN2JgESKFG2LNliAUW954ccu5mAHNoR41SXjwPxPLZblYqdirdtMsbv3 VM6Ar7WKVWqIer103lUOmiH+tSMObuUhfESbFVByutJfRAcWOolEIJdoAQEmqoKt BgU0frkZLGpX9PTzJaT5KmgOnXstrWqdTY1JzLPR93k+fN0kwsOcBtwipqYTombI gcnIMb5eY16EHQES9Rf02PIGDe9Oka2+xr9gfOAwFE5JWgh6j6TwHnXBi6UM5mby /i6owhSS9km1rwTzsqJnpC89zZ1E26e5W7i6tDdQ+70OorSgPjMOGiyPNP+1KX0x P9CfFGV6c2CICCfylva7lQXoBkAUn9uQsimGBOzYY3eWt5gYZKrwNistLKlrZQca qRMRCXApfPvcyPvkX4DEuiJDgi+74nUqm0okIHLVHN4QfAuoq22DzTlTlFiF6OCJ Fj5URCCfwyuwNtaF0W6IH8PnhkD8VQjYHH0RqclQAUaS5yJxj4x///GTGPwYDCxe JcbASQfDOK1QmN4C3vOweym9J5jUdJR4fbvuj2iJhL0qQLrQZrKHoPfu8J5G4EyC rtHAVmz8eI+IQtYsppRpQbRpNtmcj773FXhQ2wNqkZ6Y7i/GtFE= =GrDi -----END PGP SIGNATURE----- Merge tag 'wireless-2022-07-13' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless Johannes Berg says: ==================== A small set of fixes for * queue selection in mesh/ocb * queue handling on interface stop * hwsim virtio device vs. some other virtio changes * dt-bindings email addresses * color collision memory allocation * a const variable in rtw88 * shared SKB transmit in the ethernet format path * P2P client port authorization ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
67de8acdd3
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: Qualcomm Atheros ath9k wireless devices Generic Binding
|
||||
|
||||
maintainers:
|
||||
- Kalle Valo <kvalo@codeaurora.org>
|
||||
- Toke Høiland-Jørgensen <toke@toke.dk>
|
||||
|
||||
description: |
|
||||
This node provides properties for configuring the ath9k wireless device.
|
||||
|
@ -9,7 +9,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: Qualcomm Technologies ath11k wireless devices Generic Binding
|
||||
|
||||
maintainers:
|
||||
- Kalle Valo <kvalo@codeaurora.org>
|
||||
- Kalle Valo <kvalo@kernel.org>
|
||||
|
||||
description: |
|
||||
These are dt entries for Qualcomm Technologies, Inc. IEEE 802.11ax
|
||||
|
@ -3822,7 +3822,8 @@ ath11k_wmi_obss_color_collision_event(struct ath11k_base *ab, struct sk_buff *sk
|
||||
|
||||
switch (ev->evt_type) {
|
||||
case WMI_BSS_COLOR_COLLISION_DETECTION:
|
||||
ieeee80211_obss_color_collision_notify(arvif->vif, ev->obss_color_bitmap);
|
||||
ieeee80211_obss_color_collision_notify(arvif->vif, ev->obss_color_bitmap,
|
||||
GFP_KERNEL);
|
||||
ath11k_dbg(ab, ATH11K_DBG_WMI,
|
||||
"OBSS color collision detected vdev:%d, event:%d, bitmap:%08llx\n",
|
||||
ev->vdev_id, ev->evt_type, ev->obss_color_bitmap);
|
||||
|
@ -4912,6 +4912,8 @@ static int hwsim_virtio_probe(struct virtio_device *vdev)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
virtio_device_ready(vdev);
|
||||
|
||||
err = fill_vq(hwsim_vqs[HWSIM_VQ_RX]);
|
||||
if (err)
|
||||
goto out_remove;
|
||||
|
@ -1233,9 +1233,6 @@ struct rtw_chip_info {
|
||||
const struct wiphy_wowlan_support *wowlan_stub;
|
||||
const u8 max_sched_scan_ssids;
|
||||
|
||||
/* for 8821c set channel */
|
||||
u32 ch_param[3];
|
||||
|
||||
/* coex paras */
|
||||
u32 coex_para_ver;
|
||||
u8 bt_desired_ver;
|
||||
@ -1937,6 +1934,9 @@ struct rtw_hal {
|
||||
|
||||
enum rtw_sar_bands sar_band;
|
||||
struct rtw_sar sar;
|
||||
|
||||
/* for 8821c set channel */
|
||||
u32 ch_param[3];
|
||||
};
|
||||
|
||||
struct rtw_path_div {
|
||||
|
@ -125,6 +125,7 @@ static void rtw8821c_phy_bf_init(struct rtw_dev *rtwdev)
|
||||
|
||||
static void rtw8821c_phy_set_param(struct rtw_dev *rtwdev)
|
||||
{
|
||||
struct rtw_hal *hal = &rtwdev->hal;
|
||||
u8 crystal_cap, val;
|
||||
|
||||
/* power on BB/RF domain */
|
||||
@ -159,9 +160,9 @@ static void rtw8821c_phy_set_param(struct rtw_dev *rtwdev)
|
||||
|
||||
/* post init after header files config */
|
||||
rtw_write32_set(rtwdev, REG_RXPSEL, BIT_RX_PSEL_RST);
|
||||
rtwdev->chip->ch_param[0] = rtw_read32_mask(rtwdev, REG_TXSF2, MASKDWORD);
|
||||
rtwdev->chip->ch_param[1] = rtw_read32_mask(rtwdev, REG_TXSF6, MASKDWORD);
|
||||
rtwdev->chip->ch_param[2] = rtw_read32_mask(rtwdev, REG_TXFILTER, MASKDWORD);
|
||||
hal->ch_param[0] = rtw_read32_mask(rtwdev, REG_TXSF2, MASKDWORD);
|
||||
hal->ch_param[1] = rtw_read32_mask(rtwdev, REG_TXSF6, MASKDWORD);
|
||||
hal->ch_param[2] = rtw_read32_mask(rtwdev, REG_TXFILTER, MASKDWORD);
|
||||
|
||||
rtw_phy_init(rtwdev);
|
||||
rtwdev->dm_info.cck_pd_default = rtw_read8(rtwdev, REG_CSRATIO) & 0x1f;
|
||||
@ -351,6 +352,7 @@ static void rtw8821c_set_channel_rxdfir(struct rtw_dev *rtwdev, u8 bw)
|
||||
static void rtw8821c_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw,
|
||||
u8 primary_ch_idx)
|
||||
{
|
||||
struct rtw_hal *hal = &rtwdev->hal;
|
||||
u32 val32;
|
||||
|
||||
if (channel <= 14) {
|
||||
@ -367,11 +369,11 @@ static void rtw8821c_set_channel_bb(struct rtw_dev *rtwdev, u8 channel, u8 bw,
|
||||
rtw_write32_mask(rtwdev, REG_TXFILTER, MASKDWORD, 0x00003667);
|
||||
} else {
|
||||
rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD,
|
||||
rtwdev->chip->ch_param[0]);
|
||||
hal->ch_param[0]);
|
||||
rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD,
|
||||
rtwdev->chip->ch_param[1] & MASKLWORD);
|
||||
hal->ch_param[1] & MASKLWORD);
|
||||
rtw_write32_mask(rtwdev, REG_TXFILTER, MASKDWORD,
|
||||
rtwdev->chip->ch_param[2]);
|
||||
hal->ch_param[2]);
|
||||
}
|
||||
} else if (channel > 35) {
|
||||
rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x1);
|
||||
|
@ -8462,11 +8462,12 @@ int cfg80211_bss_color_notify(struct net_device *dev, gfp_t gfp,
|
||||
* cfg80211_obss_color_collision_notify - notify about bss color collision
|
||||
* @dev: network device
|
||||
* @color_bitmap: representations of the colors that the local BSS is aware of
|
||||
* @gfp: allocation flags
|
||||
*/
|
||||
static inline int cfg80211_obss_color_collision_notify(struct net_device *dev,
|
||||
u64 color_bitmap)
|
||||
u64 color_bitmap, gfp_t gfp)
|
||||
{
|
||||
return cfg80211_bss_color_notify(dev, GFP_KERNEL,
|
||||
return cfg80211_bss_color_notify(dev, gfp,
|
||||
NL80211_CMD_OBSS_COLOR_COLLISION,
|
||||
0, color_bitmap);
|
||||
}
|
||||
|
@ -6960,10 +6960,11 @@ ieee80211_get_unsol_bcast_probe_resp_tmpl(struct ieee80211_hw *hw,
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
* @color_bitmap: a 64 bit bitmap representing the colors that the local BSS is
|
||||
* aware of.
|
||||
* @gfp: allocation flags
|
||||
*/
|
||||
void
|
||||
ieeee80211_obss_color_collision_notify(struct ieee80211_vif *vif,
|
||||
u64 color_bitmap);
|
||||
u64 color_bitmap, gfp_t gfp);
|
||||
|
||||
/**
|
||||
* ieee80211_is_tx_data - check if frame is a data frame
|
||||
|
@ -4468,14 +4468,14 @@ EXPORT_SYMBOL_GPL(ieee80211_color_change_finish);
|
||||
|
||||
void
|
||||
ieeee80211_obss_color_collision_notify(struct ieee80211_vif *vif,
|
||||
u64 color_bitmap)
|
||||
u64 color_bitmap, gfp_t gfp)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
||||
|
||||
if (sdata->vif.color_change_active || sdata->vif.csa_active)
|
||||
return;
|
||||
|
||||
cfg80211_obss_color_collision_notify(sdata->dev, color_bitmap);
|
||||
cfg80211_obss_color_collision_notify(sdata->dev, color_bitmap, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ieeee80211_obss_color_collision_notify);
|
||||
|
||||
|
@ -377,7 +377,9 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do
|
||||
bool cancel_scan;
|
||||
struct cfg80211_nan_func *func;
|
||||
|
||||
spin_lock_bh(&local->fq.lock);
|
||||
clear_bit(SDATA_STATE_RUNNING, &sdata->state);
|
||||
spin_unlock_bh(&local->fq.lock);
|
||||
|
||||
cancel_scan = rcu_access_pointer(local->scan_sdata) == sdata;
|
||||
if (cancel_scan)
|
||||
|
@ -3217,7 +3217,8 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx)
|
||||
IEEE80211_HE_OPERATION_BSS_COLOR_MASK);
|
||||
if (color == bss_conf->he_bss_color.color)
|
||||
ieeee80211_obss_color_collision_notify(&rx->sdata->vif,
|
||||
BIT_ULL(color));
|
||||
BIT_ULL(color),
|
||||
GFP_ATOMIC);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2818,19 +2818,10 @@ static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,
|
||||
/*
|
||||
* If the skb is shared we need to obtain our own copy.
|
||||
*/
|
||||
if (skb_shared(skb)) {
|
||||
struct sk_buff *tmp_skb = skb;
|
||||
|
||||
/* can't happen -- skb is a clone if info_id != 0 */
|
||||
WARN_ON(info_id);
|
||||
|
||||
skb = skb_clone(skb, GFP_ATOMIC);
|
||||
kfree_skb(tmp_skb);
|
||||
|
||||
if (!skb) {
|
||||
ret = -ENOMEM;
|
||||
goto free;
|
||||
}
|
||||
skb = skb_share_check(skb, GFP_ATOMIC);
|
||||
if (unlikely(!skb)) {
|
||||
ret = -ENOMEM;
|
||||
goto free;
|
||||
}
|
||||
|
||||
hdr.frame_control = fc;
|
||||
@ -3539,15 +3530,9 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
/* after this point (skb is modified) we cannot return false */
|
||||
|
||||
if (skb_shared(skb)) {
|
||||
struct sk_buff *tmp_skb = skb;
|
||||
|
||||
skb = skb_clone(skb, GFP_ATOMIC);
|
||||
kfree_skb(tmp_skb);
|
||||
|
||||
if (!skb)
|
||||
return true;
|
||||
}
|
||||
skb = skb_share_check(skb, GFP_ATOMIC);
|
||||
if (unlikely(!skb))
|
||||
return true;
|
||||
|
||||
if ((hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) &&
|
||||
ieee80211_amsdu_aggregate(sdata, sta, fast_tx, skb))
|
||||
@ -4437,7 +4422,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
||||
struct net_device *dev, struct sta_info *sta,
|
||||
struct ieee80211_key *key, struct sk_buff *skb)
|
||||
{
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct tid_ampdu_tx *tid_tx;
|
||||
u8 tid;
|
||||
@ -4452,6 +4437,11 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
||||
test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state))
|
||||
goto out_free;
|
||||
|
||||
skb = skb_share_check(skb, GFP_ATOMIC);
|
||||
if (unlikely(!skb))
|
||||
return;
|
||||
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
||||
ieee80211_aggr_check(sdata, sta, skb);
|
||||
|
@ -301,6 +301,9 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac)
|
||||
local_bh_disable();
|
||||
spin_lock(&fq->lock);
|
||||
|
||||
if (!test_bit(SDATA_STATE_RUNNING, &sdata->state))
|
||||
goto out;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP)
|
||||
ps = &sdata->bss->ps;
|
||||
|
||||
|
@ -147,8 +147,8 @@ u16 __ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
|
||||
bool qos;
|
||||
|
||||
/* all mesh/ocb stations are required to support WME */
|
||||
if (sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
|
||||
sdata->vif.type == NL80211_IFTYPE_OCB)
|
||||
if (sta && (sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
|
||||
sdata->vif.type == NL80211_IFTYPE_OCB))
|
||||
qos = true;
|
||||
else if (sta)
|
||||
qos = sta->sta.wme;
|
||||
|
@ -1031,7 +1031,8 @@ void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid)
|
||||
{
|
||||
ASSERT_WDEV_LOCK(wdev);
|
||||
|
||||
if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION))
|
||||
if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION &&
|
||||
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT))
|
||||
return;
|
||||
|
||||
if (WARN_ON(!wdev->current_bss) ||
|
||||
|
Loading…
Reference in New Issue
Block a user