Reads mac->antenna_state to count active TX ports via
__builtin_popcount(nr_get_tx_antenna_bitmask). Caps the partner-search
while-loop bound to (active_tx - 1), so:
active_tx = 4 -> up to 4-way MU-MIMO (3 partners)
active_tx = 3 -> up to 3-way (2 partners)
active_tx = 2 -> up to 2-way (1 partner)
active_tx = 1 -> SU-MIMO only (0 partners)
This couples antenna muting (the existing PHY-side socket control on
port 9999) to spatial parallelism in the MU-MIMO scheduler. Muting a
chain reduces the codebook's orthogonal codeword count, which is the
right semantic for our antenna-muting research: muting reduces the
number of UEs co-scheduled per slot, not the per-UE rate.
Verified runtime behavior on rfsim (30s windows per state):
TX mask 0x0F: 4-way 952 3-way 484 2-way 333 (full 4-TX)
TX mask 0x03: 4-way 2 3-way 8 2-way 5935 (2-TX -> 2-way)
TX mask 0x01: 4-way 0 3-way 0 2-way 11 (1-TX -> SU-MIMO)
Antenna-control commands tested via existing test interface:
echo "SET TX MASK 0x03" | nc -w 2 localhost 9999