Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wifi: rtl8xxxu: declare concurrent mode support for 8188f

Everything is in place now for concurrent mode, we can tell the system
that we support it.
We will allow a maximum of 2 virtual interfaces, one of them can be in
AP mode.

Signed-off-by: Martin Kaistra <martin.kaistra@linutronix.de>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20231222101442.626837-22-martin.kaistra@linutronix.de

authored by

Martin Kaistra and committed by
Kalle Valo
1cd165ad 69abad61

+21
+1
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
··· 1992 1992 u8 init_reg_rxfltmap:1; 1993 1993 u8 init_reg_pkt_life_time:1; 1994 1994 u8 init_reg_hmtfr:1; 1995 + u8 supports_concurrent:1; 1995 1996 u8 ampdu_max_time; 1996 1997 u8 ustime_tsf_edca; 1997 1998 u16 max_aggr_num;
+1
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188f.c
··· 1752 1752 .supports_ap = 1, 1753 1753 .max_macid_num = 16, 1754 1754 .max_sec_cam_num = 16, 1755 + .supports_concurrent = 1, 1755 1756 .adda_1t_init = 0x03c00014, 1756 1757 .adda_1t_path_on = 0x03c00014, 1757 1758 .trxff_boundary = 0x3f7f,
+19
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
··· 7665 7665 led_classdev_unregister(led); 7666 7666 } 7667 7667 7668 + struct ieee80211_iface_limit rtl8xxxu_limits[] = { 7669 + { .max = 2, .types = BIT(NL80211_IFTYPE_STATION), }, 7670 + { .max = 1, .types = BIT(NL80211_IFTYPE_AP), }, 7671 + }; 7672 + 7673 + struct ieee80211_iface_combination rtl8xxxu_combinations[] = { 7674 + { 7675 + .limits = rtl8xxxu_limits, 7676 + .n_limits = ARRAY_SIZE(rtl8xxxu_limits), 7677 + .max_interfaces = 2, 7678 + .num_different_channels = 1, 7679 + }, 7680 + }; 7681 + 7668 7682 static int rtl8xxxu_probe(struct usb_interface *interface, 7669 7683 const struct usb_device_id *id) 7670 7684 { ··· 7824 7810 if (priv->fops->supports_ap) 7825 7811 hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_AP); 7826 7812 hw->queues = 4; 7813 + 7814 + if (priv->fops->supports_concurrent) { 7815 + hw->wiphy->iface_combinations = rtl8xxxu_combinations; 7816 + hw->wiphy->n_iface_combinations = ARRAY_SIZE(rtl8xxxu_combinations); 7817 + } 7827 7818 7828 7819 sband = &rtl8xxxu_supported_band; 7829 7820 sband->ht_cap.ht_supported = true;