Files
bes2600-dkms/bes2600
test0r cd5f85e104 bes2600: remove userspace /dev/bes2600 character device interface
bes_chardev.c implemented a custom character device at /dev/bes2600 with
its own parser and command-dispatch table, exposing operations such as
'wifi on|off', 'bt on|off', 'change_fw_type <n>', 'bt_wakeup',
'bt_sleep', and 'wakeup_read_flag'. None of these surfaces are used by
the in-tree driver - every kernel call site consumes the internal state
accessors (bes2600_chrdev_is_signal_mode, bes2600_chrdev_get_fw_type,
etc) directly, not through the cdev.

The cdev interface is a standing upstream blocker for two reasons:

  1. Drivers under drivers/staging/ and drivers/net/wireless/ are
     expected to expose tuning via the firmware/nl80211/debugfs
     infrastructure rather than a private /dev node with an ad-hoc
     parser.

  2. The cdev handlers keep a global bes_cdev singleton alive whose
     ->cdev, ->dev_id, ->class and ->device pointers exist only to be
     torn down; they add no functionality that nl80211 or rfkill do
     not already provide (wifi/bt on-off, module_param for fw_type).

Remove the userspace interface:

  - open / read / write / release file_operations handlers and the
    bes2600_chardev_fops instance
  - bes2600_op_* command handlers and bes2600_op_map_tab dispatcher
  - bes2600_get_cmd_and_ifname / bes2600_recyle_cmd_and_ifname_mem
    string helpers
  - bes2600_load_uevent (its only caller was
    bes2600_chrdev_wifi_force_close_work informing userspace of a
    state it already gates via rfkill; that snprintf +
    kobject_uevent_env block is gone too, the kernel-side
    halt_device + switch_wifi(0) + chrdev_check_system_close
    sequence remains)
  - alloc_chrdev_region / cdev_init / cdev_add / class_create /
    device_create in bes2600_chrdev_init plus the fail1/fail2/fail3
    unwind labels
  - cdev_del / unregister_chrdev_region / device_destroy /
    class_destroy in bes2600_chrdev_free
  - cdev/dev_id/major/minor/class/device fields in struct bes_cdev

What remains (unchanged behaviour):

  - fw_type module parameter - the primary user-facing knob for
    signal/no-signal/BT mode switch
  - All in-kernel bes2600_chrdev_* accessor functions called from
    bes2600_sdio.c, bes_pwr.c, sta.c, bh.c, main.c, wsm.c, and
    wifi_testmode_cmd.c (13 call sites)
  - bes2600_chrdev_init / bes2600_chrdev_free as state-init / teardown
    for the remaining bes_cdev state (waitqueues, workqueues, flags)
  - DPD management (bes2600_chrdev_get_dpd_buffer / update / free)
  - wifi_force_close worker, system-close logic, bus-probe state
    machine

Tested-on: PineTab2 (BES2600WM + RK3566) running linux-pinetab2
6.19.10-danctnix1-1. Driver continues to associate and pass traffic;
no kernel messages related to the cdev absence. Users that previously
wrote to /dev/bes2600 should switch to the fw_type module parameter
or (future patch c4) nl80211 testmode commands.

Follow-ups:

  - c3.1: thread struct device * through bes2600_chrdev_is_signal_mode
    and friends so the global bes2600_cdev singleton can be dropped
    and the accessors scale to multi-device scenarios.
  - c4:   enable CONFIG_BES2600_TESTMODE and route nl80211 testmode
    commands to the firmware's patch_wifi_testMode entry.

Signed-off-by: Markus Fritsche <fritsche.markus@gmail.com>
2026-05-19 09:06:07 +02:00
..
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00
2025-09-17 16:35:45 +02:00