[roll] Roll fuchsia [wlan] Replace wlan_common SendPtr with std AtomicPtr

This change replaces all uses of the bespoke `SendPtr` type with the
standard library `AtomicPtr` type. The `AtomicPtr` type is a thin
wrapper around a raw pointer that implements `Send` and `Sync` and
provides atomic access to the pointer itself. No uses of `SendPtr`
require replacing the wrapped pointer once wrapped, and all uses
rely on an owned value or exclusive reference. Thus, wlan-mlme only
uses the `new`, `into_inner`, and `get_mut` methods in
`AtomicPtr`. All wrapped pointers are thread-safe `*mut c_void`
pointers, so Rust code cannot meaningfully write/read the pointee and
wlansoftmac is carefully designed to use the pointers from different
threads.

I originally created the `SendPtr` type to step around using
`AtomicPtr` since, at the time, it was only necessary to make the
wrapped pointers implement `Send`, and the atomic load and store of
the pointer itself was not required. However, the migration of
`DeviceOps` to use async functions requires those pointers to
implement `Sync` in some cases as well. Since `AtomicPtr` implements
both `Sync` and `Send` and still requires an unsafe dereference to
access the pointee, the tradeoff of maintaining the separate `SendPtr`
type is no longer worthwhile.

Test: Successful iface creation, scan, connect, disconnect with iwlwifi on NUC
Multiply: fuchsia-pkg://fuchsia.com/wlan-mlme-tests
Multiply: fuchsia-pkg://fuchsia.com/wlansoftmac-rust-tests
Multiply: fuchsia-pkg://fuchsia.com/wlan-hw-sim-contemporary-privacy-tests
Multiply: fuchsia-pkg://fuchsia.com/wlan-hw-sim-legacy-privacy-tests
Multiply: fuchsia-pkg://fuchsia.com/wlan-hw-sim-rate-selection-tests
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1034093
Original-Revision: 928dadd49b3c91d4331063aa8f54a93759ef6084
GitOrigin-RevId: 5708da60ce1ebb97642d2c1cee899b9d149588e9
Change-Id: Ifcd54c1053fcbf9251499340f11979e982eb983e
1 file changed
tree: 652922a740b33fadc3e2391ec1958473ae34c494
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.