linux/drivers/net
Rafał Miłecki d02fb8f14b brcmfmac: rework function picking free BSS index
The old implementation was overcomplicated and slightly bugged in some
corner cases.

Consider following state of BSS-es (limited to 6 for simplification):
drvr->iflist[0]: { bsscfgidx:0, ndev->name:wlan1, }
drvr->iflist[1]:  (null)
drvr->iflist[2]: { bsscfgidx:2, ndev->name:wlan1-1, }
drvr->iflist[3]: { bsscfgidx:3, ndev->name:wlan1-2, }
drvr->iflist[4]:  (null)
drvr->iflist[5]:  (null)
In such case the next AP interface should bsscfgidx 4 (we don't use 1 as
it's reserved for P2P).

With old code the loop iterations were following:
[ifidx = 0] [bsscfgidx = 2] [highest = 2]
[ifidx = 1] [bsscfgidx = 2] [highest = 2] available = true
[ifidx = 2] [bsscfgidx = 2] [highest = 2] bsscfgidx = highest + 1
[ifidx = 3] [bsscfgidx = 3] [highest = 2] bsscfgidx = highest + 1
[ifidx = 4] [bsscfgidx = 3] [highest = 2] available = true
[ifidx = 5] [bsscfgidx = 3] [highest = 2] available = true
There were 2 obvious problems:
1) Having empty BSS at index 1 was resulting in available being always
   set to true, even if we would run out of BSS-es.
2) Calculated bsscfgidx was invalid (3 instead of 4) resulting in driver
   not being able to create the 4th AP interface.

New code is simpler, placed in file where it's really used, handles
running out of free BSS-es and allows using 4 interfaces at the same
time. It also looks for the first free BSS instead of one after the last
in use. It works well with current driver (which doesn't allow deleting
interfaces) and should be future proof (if we ever allow deleting).

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2016-06-09 19:13:15 +03:00
..
appletalk treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
arcnet arcnet: com90xx: add __init attribute 2016-04-19 20:17:45 -04:00
bonding
caif
can can: ifi: Add more detailed error reporting 2016-05-09 11:07:28 +02:00
cris treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
dsa net: dsa: mv88e6xxx: remove bridge work 2016-05-16 13:46:24 -04:00
ethernet qed: Initialize hardware for new protocols 2016-06-03 20:08:40 -04:00
fddi
fjes net: fjes: fjes_main: Remove create_workqueue 2016-06-03 19:29:42 -04:00
hamradio Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-05-17 16:26:30 -07:00
hippi
hyperv hv_netvsc: Fix VF register on vlan devices 2016-06-03 19:40:05 -04:00
ieee802154 net: ieee802154/adf7242: syntax error ifdef DEBUG 2016-05-19 11:30:56 -07:00
ipvlan ipvlan: Fix failure path in dev registration during link creation 2016-04-28 17:23:08 -04:00
irda net: irda: avoid null pointer dereference 2016-05-19 11:30:57 -07:00
phy Revert "phy: add support for a reset-gpio specification" 2016-05-20 17:56:59 -04:00
plip
ppp ppp: add rtnetlink device creation support 2016-04-29 16:09:44 -04:00
slip treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
team team: don't call netdev_change_features under team->lock 2016-05-25 12:58:04 -07:00
usb usbnet: smsc95xx: fix link detection for disabled autonegotiation 2016-05-31 14:22:23 -07:00
vmxnet3 Driver: Vmxnet3: set CHECKSUM_UNNECESSARY for IPv6 packets 2016-04-21 15:28:05 -04:00
wan treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
wimax treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
wireless brcmfmac: rework function picking free BSS index 2016-06-09 19:13:15 +03:00
xen-netback xen-netback: only deinitialized hash if it was initialized 2016-05-20 17:41:18 -04:00
dummy.c
eql.c
geneve.c udp: prevent skbs lingering in tunnel socket queues 2016-05-20 19:56:02 -04:00
gtp.c gtp: put back reference to netns when not required anymore 2016-05-12 12:27:15 -04:00
ifb.c ifb: support more features 2016-05-09 00:00:28 -04:00
Kconfig gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
LICENSE.SRC
loopback.c loopback: make use of NETIF_F_GSO_SOFTWARE 2016-06-03 19:37:21 -04:00
macsec.c macsec: fix netlink attribute for key id 2016-05-20 11:14:13 -07:00
macvlan.c macvlan: Avoid unnecessary multicast cloning 2016-06-01 17:48:46 -07:00
macvtap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-09 15:59:24 -04:00
Makefile gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c drivers: net: remove NETDEV_TX_LOCKED 2016-04-26 15:53:05 -04:00
sb1000.c
Space.c net: Fix coding style warnings and errors. 2016-05-19 11:48:27 -07:00
sungem_phy.c
tun.c tuntap: correctly wake up process during uninit 2016-05-20 19:28:37 -04:00
veth.c veth: Update features to include all tunnel GSO types 2016-04-21 14:14:59 -04:00
virtio_net.c virtio_net: fix virtnet_open and virtnet_probe competing for try_fill_recv 2016-05-31 14:21:09 -07:00
vrf.c net: vrf: set operstate and mtu at link create 2016-06-02 18:15:17 -04:00
vxlan.c vxlan: Accept user specified MTU value when create new vxlan link 2016-05-31 11:46:00 -07:00
xen-netfront.c