drivers/staging/rtl8723bs/core/rtw_wlan_util.c
Source file repositories/reference/linux-study-clean/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/staging/rtl8723bs/core/rtw_wlan_util.c- Extension
.c- Size
- 48016 bytes
- Lines
- 1772
- Domain
- Driver Families
- Bucket
- drivers/staging
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
drv_types.hhal_com_h2c.h
Detected Declarations
function networktype_to_raid_exfunction ratetbl_val_2wifiratefunction is_basicratefunction ratetbl2ratesetfunction get_rate_setfunction set_mcs_rate_by_maskfunction update_basic_rate_tablefunction update_basic_rate_table_soft_apfunction Save_DM_Func_Flagfunction Restore_DM_Func_Flagfunction Switch_DM_Funcfunction set_msrfunction rtw_get_oper_chfunction rtw_set_oper_chfunction rtw_set_oper_bwfunction rtw_set_oper_choffsetfunction rtw_get_center_chfunction rtw_get_on_cur_ch_timefunction r8723bs_select_channelfunction set_channel_bwmodefunction get_beacon_intervalfunction is_client_associated_to_apfunction is_client_associated_to_ibssfunction is_IBSS_emptyfunction decide_wait_for_beacon_timeoutfunction invalidate_cam_allfunction _write_camfunction _clear_cam_entryfunction write_camfunction clear_cam_entryfunction write_cam_cachefunction clear_cam_cachefunction _rtw_camid_is_gkfunction _rtw_camid_searchfunction rtw_camid_searchfunction rtw_camid_allocfunction rtw_camid_freefunction allocate_fw_sta_entryfunction flush_all_cam_entryfunction WMM_param_handlerfunction sort_wmm_ac_paramsfunction WMMOnAssocRspfunction bwmode_update_checkfunction HT_caps_handlerfunction HT_info_handlerfunction HTOnAssocRspfunction ERP_IE_handlerfunction VCS_update
Annotated Snippet
switch (rate) {
case 0xff:
return len;
case 0xfe:
continue;
default:
rate = ratetbl_val_2wifirate(rate);
if (is_basicrate(padapter, rate) == true)
rate |= IEEE80211_BASIC_RATE_MASK;
rateset[len] = rate;
len++;
break;
}
}
return len;
}
void get_rate_set(struct adapter *padapter, unsigned char *pbssrate, int *bssrate_len)
{
unsigned char supportedrates[NumRates];
memset(supportedrates, 0, NumRates);
*bssrate_len = ratetbl2rateset(padapter, supportedrates);
memcpy(pbssrate, supportedrates, *bssrate_len);
}
void set_mcs_rate_by_mask(u8 *mcs_set, u32 mask)
{
u8 mcs_rate_1r = (u8)(mask & 0xff);
u8 mcs_rate_2r = (u8)((mask >> 8) & 0xff);
u8 mcs_rate_3r = (u8)((mask >> 16) & 0xff);
u8 mcs_rate_4r = (u8)((mask >> 24) & 0xff);
mcs_set[0] &= mcs_rate_1r;
mcs_set[1] &= mcs_rate_2r;
mcs_set[2] &= mcs_rate_3r;
mcs_set[3] &= mcs_rate_4r;
}
void update_basic_rate_table(struct adapter *Adapter, u8 *mBratesOS)
{
u8 i;
u8 rate;
/* 1M, 2M, 5.5M, 11M, 6M, 12M, 24M are mandatory. */
for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) {
rate = mBratesOS[i] & 0x7f;
switch (rate) {
case IEEE80211_CCK_RATE_1MB:
case IEEE80211_CCK_RATE_2MB:
case IEEE80211_CCK_RATE_5MB:
case IEEE80211_CCK_RATE_11MB:
case IEEE80211_OFDM_RATE_6MB:
case IEEE80211_OFDM_RATE_12MB:
case IEEE80211_OFDM_RATE_24MB:
mBratesOS[i] |= IEEE80211_BASIC_RATE_MASK;
break;
}
}
}
void update_basic_rate_table_soft_ap(u8 *bssrateset, u32 bssratelen)
{
u8 i;
u8 rate;
for (i = 0; i < bssratelen; i++) {
rate = bssrateset[i] & 0x7f;
switch (rate) {
case IEEE80211_CCK_RATE_1MB:
case IEEE80211_CCK_RATE_2MB:
case IEEE80211_CCK_RATE_5MB:
case IEEE80211_CCK_RATE_11MB:
bssrateset[i] |= IEEE80211_BASIC_RATE_MASK;
break;
}
}
}
void Save_DM_Func_Flag(struct adapter *padapter)
{
u8 bSaveFlag = true;
rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag));
}
Annotation
- Immediate include surface: `drv_types.h`, `hal_com_h2c.h`.
- Detected declarations: `function networktype_to_raid_ex`, `function ratetbl_val_2wifirate`, `function is_basicrate`, `function ratetbl2rateset`, `function get_rate_set`, `function set_mcs_rate_by_mask`, `function update_basic_rate_table`, `function update_basic_rate_table_soft_ap`, `function Save_DM_Func_Flag`, `function Restore_DM_Func_Flag`.
- Atlas domain: Driver Families / drivers/staging.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.