11 years agowl12xx: block sched scan if p2p client is running R5.xx_Build-72 R5.xx_Build-76 R5.xx_Build-77 R5.xx_Build-78 R5.xx_Build-79 R5.xx_Build-81 R5.xx_Build-82 R5.xx_Build-83 R5.xx_Build-84 R5.xx_Build-85 R5.xx_Build-86 R5.xx_Build-87 R5.xx_Build-88 R5.xx_Build-89
wl12xx: block sched scan if p2p client is running
sched scan isn't supported by the FW when there's a p2p
role active so block it if any interface is running
p2p client.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
sched scan isn't supported by the FW when there's a p2p
role active so block it if any interface is running
p2p client.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
mac80211: increase channel switch request timeout
In some heavy loaded MR scenarios with enabled debug
prints the channel switch request + channel switch
command can take some time. Increase the channel
switch request timeout to: beacon_int * dtim_period * 10.
Also clear the "ap_cs_channel" in case of completion
timeout/error.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
In some heavy loaded MR scenarios with enabled debug
prints the channel switch request + channel switch
command can take some time. Increase the channel
switch request timeout to: beacon_int * dtim_period * 10.
Also clear the "ap_cs_channel" in case of completion
timeout/error.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
11 years agowl12xx: initialize per-link FW freed blocks correctly R5.xx_Build-65 R5.xx_Build-66 R5.xx_Build-67 R5.xx_Build-68
wl12xx: initialize per-link FW freed blocks correctly
When a link is allocated, sometimes the "freed packets" counter in FW
is non zero, but we always assumed it is. This caused us to incorrectly
account FW allocated blocks in some cases.
When operating in AP mode, this bug caused some stations to never
come back from PSM.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
When a link is allocated, sometimes the "freed packets" counter in FW
is non zero, but we always assumed it is. This caused us to incorrectly
account FW allocated blocks in some cases.
When operating in AP mode, this bug caused some stations to never
come back from PSM.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
11 years agowl12xx: restore default channel configuration R5.xx_Build-62 R5.xx_Build-63 R5.xx_Build-64
wl12xx: restore default channel configuration
wl12xx allocates two static structs wl1271_band_2ghz &
wl1271_band_5ghz which are used/modified by Reg-Domain
e.g. some channel might be marked as passive at some
point. These structs freed only during wl12xx rmmod and
aren't cleared during wl12xx_sdio.ko, this means that
some channel flags might be set regardless reg-domain
rules. Fix this by clearing the channel flags from
the previous usage (before the current wl12xx_sdio.ko
insmod).
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
wl12xx allocates two static structs wl1271_band_2ghz &
wl1271_band_5ghz which are used/modified by Reg-Domain
e.g. some channel might be marked as passive at some
point. These structs freed only during wl12xx rmmod and
aren't cleared during wl12xx_sdio.ko, this means that
some channel flags might be set regardless reg-domain
rules. Fix this by clearing the channel flags from
the previous usage (before the current wl12xx_sdio.ko
insmod).
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
wl12xx: consolidate free_link and always call it
Make sure free_link is always called when removing an interface. This
ensures all skbs belonging to this interface are returned to mac80211.
Otherwise these dangling skbs might crash the system on the next
call to wl1271_tx_reset_link_queues(). This happens on recovery/stop or
an unsuccessful Tx flush.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Make sure free_link is always called when removing an interface. This
ensures all skbs belonging to this interface are returned to mac80211.
Otherwise these dangling skbs might crash the system on the next
call to wl1271_tx_reset_link_queues(). This happens on recovery/stop or
an unsuccessful Tx flush.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: take the mutex before resetting Tx queues
Otherwise we risk contention for private members of our global structure
while op_stop_locked is running.
Reported-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Otherwise we risk contention for private members of our global structure
while op_stop_locked is running.
Reported-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: change packet retry count
default retry number was 10. we found out that in noisy environment
there were case we were failed to send the packet.
in that case it took time until the upper layer retransmit the
packet which cause degradation in TCP TP.
change the default to 50 in order to solve this problem
Signed-off-by: Yossi Wortzel <yossiw@ti.com>
default retry number was 10. we found out that in noisy environment
there were case we were failed to send the packet.
in that case it took time until the upper layer retransmit the
packet which cause degradation in TCP TP.
change the default to 50 in order to solve this problem
Signed-off-by: Yossi Wortzel <yossiw@ti.com>
11 years agowl12xx: fix generic cfg fw command R5.xx_Build-52 R5.xx_Build-53 R5.xx_Build-56 R5.xx_Build-59
wl12xx: fix generic cfg fw command
The command struct was missing the header struct.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
The command struct was missing the header struct.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
11 years agowl12xx: increase scan dwell times if no activity R5.xx_Build-40 R5.xx_Build-41 R5.xx_Build-46 R5.xx_Build-47 R5.xx_Build-48 R5.xx_Build-49 R5.xx_Build-50 R5.xx_Build-51 ol_R5.SP3.01
wl12xx: increase scan dwell times if no activity
There's a limit on scan dwell times of max 30ms in order
to avoid degrading voip traffic which could be going on
while scanning. However these dwell times increase the
chance of missing out on nearby APs leading to partial
scan results. Allow configuration of longer dwell times
in case there no active interface (i.e. no STA associated
or AP up)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
There's a limit on scan dwell times of max 30ms in order
to avoid degrading voip traffic which could be going on
while scanning. However these dwell times increase the
chance of missing out on nearby APs leading to partial
scan results. Allow configuration of longer dwell times
in case there no active interface (i.e. no STA associated
or AP up)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: prevent channel switch in the MR FW
When a channel switch request arrives and we are in the MR FW, drop the
connection, as the FW command is unsupported. This will hopefully cause
the STA to reconnect on the new channel.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
When a channel switch request arrives and we are in the MR FW, drop the
connection, as the FW command is unsupported. This will hopefully cause
the STA to reconnect on the new channel.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
nl80211: sync nl80211.h with latest wpa_s copy
Also move channel switch related command to the TI private commands
range.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Also move channel switch related command to the TI private commands
range.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: remove unnecessary WARN_ON in wl12xx_tx_reset
Sometimes the driver can perform a recovery while Tx is
active, this will trigger unnecessary warning which might
delay the recovery for more than 100 mS.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Sometimes the driver can perform a recovery while Tx is
active, this will trigger unnecessary warning which might
delay the recovery for more than 100 mS.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
wl12xx: new module param to set the dominant role
New bool "ap_ch_is_dominant" module param.
By default the STA channel is the dominant one (this flag
is't set) and the AP/GO channel can follow it.
Setting the ap_ch_is_dominant=1 will set the AP/GO channel as
a dominant, which will block any STA attempt to authenticate
on a different channel than the AP/GO operational channel.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
New bool "ap_ch_is_dominant" module param.
By default the STA channel is the dominant one (this flag
is't set) and the AP/GO channel can follow it.
Setting the ap_ch_is_dominant=1 will set the AP/GO channel as
a dominant, which will block any STA attempt to authenticate
on a different channel than the AP/GO operational channel.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
mac80211: if "dominant ap ch"!="sta ch" block the auth
Add new IEEE80211_HW_AP_CH_IS_DOMINANT flag which blocks
the authentication requests for the STA role if it's tries
to authenticate on a different channel than the AP/GO channel.
By default the STA channel is the dominant one (this flag is't
set) and the AP/GO channel can follow the dominant role channel.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Add new IEEE80211_HW_AP_CH_IS_DOMINANT flag which blocks
the authentication requests for the STA role if it's tries
to authenticate on a different channel than the AP/GO channel.
By default the STA channel is the dominant one (this flag is't
set) and the AP/GO channel can follow the dominant role channel.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
mac80211: request AP/GO channel switch if needed
For devices which support MR on a single channel
we must perform a channel alignment between roles.
This patch handles the case when an AP/GO role is
started on channel X and a second STA role starts
the authentication process on channel Y, in this
case:
1. postpone the auth process of the second role.
2. request from the userspace to switch to channel Y.
3. wait for the channel switch to complete for the first role.
4. continue with auth process.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
For devices which support MR on a single channel
we must perform a channel alignment between roles.
This patch handles the case when an AP/GO role is
started on channel X and a second STA role starts
the authentication process on channel Y, in this
case:
1. postpone the auth process of the second role.
2. request from the userspace to switch to channel Y.
3. wait for the channel switch to complete for the first role.
4. continue with auth process.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
wl12xx: add channel switch request debugfs entry
Which exposes the current operational AP/GO channel
and simulates channel switch request.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Which exposes the current operational AP/GO channel
and simulates channel switch request.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
wl12xx: add channel switch ability for AP & GO
Add channel switch command and handle channel
switch event.
[Arik - added check for role id in the event of STA channel switch. This
will prevent bogus calls to ieee80211_chswitch_done]
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Add channel switch command and handle channel
switch event.
[Arik - added check for role id in the event of STA channel switch. This
will prevent bogus calls to ieee80211_chswitch_done]
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
mac80211: add ap channel switch command/event
Add ieee80211_ap_process_chanswitch(), to handle a channel switch
request for AP.
Add ieee80211_ap_ch_switch_done() which updates oper_channel
and notifies upper layers about channel switch complete event.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Add ieee80211_ap_process_chanswitch(), to handle a channel switch
request for AP.
Add ieee80211_ap_ch_switch_done() which updates oper_channel
and notifies upper layers about channel switch complete event.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
nl80211/cfg80211: add ap channel switch command
Add NL80211_CMD_AP_CH_SWITCH command which
triggers an AP channel switch process.
Usermode notified about channel switch complete
event with NL80211_CMD_CH_SWITCH_NOTIFY.
Usermode (hostapd) is responsible to update the
channel switch announcement IE in the beacon
prior and after the channel switch operation.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Add NL80211_CMD_AP_CH_SWITCH command which
triggers an AP channel switch process.
Usermode notified about channel switch complete
event with NL80211_CMD_CH_SWITCH_NOTIFY.
Usermode (hostapd) is responsible to update the
channel switch announcement IE in the beacon
prior and after the channel switch operation.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
cfg80211: add channel switch notify event
The firmware may decide to switch channels while already beaconing, e.g.
in response to a cfg80211 connect request on a different vif. Add this
event to notify userspace when an AP or GO interface has successfully
migrated to a new channel, so it can update its configuration
accordingly.
Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm>
Signed-off-by: John W. Linville <linville@tuxdriver>
The firmware may decide to switch channels while already beaconing, e.g.
in response to a cfg80211 connect request on a different vif. Add this
event to notify userspace when an AP or GO interface has successfully
migrated to a new channel, so it can update its configuration
accordingly.
Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm>
Signed-off-by: John W. Linville <linville@tuxdriver>
mac80211: add channel switch request
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
nl80211/cfg80211: add channel switch request command
Add new NL80211_CMD_REQ_CH_SW, which requests from usermode
to perform a channel switch operation for GO/AP.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Add new NL80211_CMD_REQ_CH_SW, which requests from usermode
to perform a channel switch operation for GO/AP.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
mac80211: fix sync of rx filters with driver and cfg80211
Avoid changing the local saved rx filters in case
the driver fails to set them. As the driver clears
the filters whenever the device is stopped we need
to configure them back when turning on the device to
avoid being out of sync with cfg80211 which reports
back to userspace what's configured.
Also fix missing locking in ieee80211_set_rx_filters.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Avoid changing the local saved rx filters in case
the driver fails to set them. As the driver clears
the filters whenever the device is stopped we need
to configure them back when turning on the device to
avoid being out of sync with cfg80211 which reports
back to userspace what's configured.
Also fix missing locking in ieee80211_set_rx_filters.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
nl80211: don't save wowlan triggers if rx_set_filters fails
In case the device supports rx_set_filters and it fails
avoid replacing the local state so we won't be out of sync
with the lower levels.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
In case the device supports rx_set_filters and it fails
avoid replacing the local state so we won't be out of sync
with the lower levels.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: clear RX filters when adding AP/GO interface
In AP/GO we don't want RX filters configured by upper levels
to be in effect. AP/GO has to be able to get all traffic
including broadcasts (for DHCP for example).
Once the last AP is removed we restore the filters.
Also fix a minor bug in some error paths in remove interface
where we might not go back to ELP sleep.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
In AP/GO we don't want RX filters configured by upper levels
to be in effect. AP/GO has to be able to get all traffic
including broadcasts (for DHCP for example).
Once the last AP is removed we restore the filters.
Also fix a minor bug in some error paths in remove interface
where we might not go back to ELP sleep.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: fwlog changes and dynamic mem_block
fwlog changes (i.e. setting it to on-demand+host by default)
were merged from R8 branch.
In addition, number of fwlog mem_blocks can now be changed
using module param.
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
fwlog changes (i.e. setting it to on-demand+host by default)
were merged from R8 branch.
In addition, number of fwlog mem_blocks can now be changed
using module param.
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wl12xx: add sysfs control over disable SGI
The FW by default works with Short GI whenever possible.
This is causing trouble with some sniffers used in certification
labs. An option to disable SGI was added to the FW through
a generic command API. Add support for this new API
and enable control over disabling SGI through sysfs.
debugfs cannot be used here as the certification tests are being
run on production devices.
Note that we still publish support for SGI 20 in either STA/AP
however Short GI won't be used effectively when disable_sgi is 1.
This solution is good enough according to the certification folks.
(The generic cmd part is based on Luca's dropbcast patch
which was dropped)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
The FW by default works with Short GI whenever possible.
This is causing trouble with some sniffers used in certification
labs. An option to disable SGI was added to the FW through
a generic command API. Add support for this new API
and enable control over disabling SGI through sysfs.
debugfs cannot be used here as the certification tests are being
run on production devices.
Note that we still publish support for SGI 20 in either STA/AP
however Short GI won't be used effectively when disable_sgi is 1.
This solution is good enough according to the certification folks.
(The generic cmd part is based on Luca's dropbcast patch
which was dropped)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: add module param to enable/disable core_dump
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wl12xx: core_dump implementation
Added configuration parameters, defining memory area mapping and if
this service is enabled/disabled
Added recovery routine to read core dump into vmalloc'ed memory area
Added sysfs routines to read the latest core_dump. The read routine is
blocked until core_dump is available. After userspace reads the entire
core_dump, read is blocked again until next core_dump and vice versa...
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
Added configuration parameters, defining memory area mapping and if
this service is enabled/disabled
Added recovery routine to read core dump into vmalloc'ed memory area
Added sysfs routines to read the latest core_dump. The read routine is
blocked until core_dump is available. After userspace reads the entire
core_dump, read is blocked again until next core_dump and vice versa...
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wl12xx: remove some trailing spaces
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wl12xx: elp_wakeup when issuing recovery from userspace
When triggering recovery from userspace (through debugfs or libnl) we
now perform elp wakeup prior to queuing the recovery request. The reason
is that the queue operation disables interrupts and ELP wakeup is needed for
recovery operations such as on-demand firmware log and later on firmware
core dump.
The call to elp wakeup from recovery work fwlog function was removed because
it is meaningless - it can only succeed if elp wakeup was alerady done.
Note that in other cases before queuing a recovery request, either elp wakeup is
called or the firmware is stuck (in this case wakeup is not done).
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
When triggering recovery from userspace (through debugfs or libnl) we
now perform elp wakeup prior to queuing the recovery request. The reason
is that the queue operation disables interrupts and ELP wakeup is needed for
recovery operations such as on-demand firmware log and later on firmware
core dump.
The call to elp wakeup from recovery work fwlog function was removed because
it is meaningless - it can only succeed if elp wakeup was alerady done.
Note that in other cases before queuing a recovery request, either elp wakeup is
called or the firmware is stuck (in this case wakeup is not done).
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wl12xx: disable WARN_ON in case of FW watchdog recovery
disable WARN_ON backtrace in case recovery was queued becasue of
FW watchdog interrupt
This allows faster recovery time becasue log to console is omitted
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
disable WARN_ON backtrace in case recovery was queued becasue of
FW watchdog interrupt
This allows faster recovery time becasue log to console is omitted
Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
11 years agomac80211: always set in_reconfig=false on wakeup R5.xx_Build-24 R5.xx_Build-25 R5.xx_Build-26 R5.xx_Build-27 R5.xx_Build-28
mac80211: always set in_reconfig=false on wakeup
If the interfaces were removed just before a restart
work was started, open_count will be 0, and most of
the reconfig work will be skipped, including the
resetting of local->in_reconfig to false.
Leaving local->inconfig = true will result in
dropping any incoming packet.
Fix it by always setting local->in_reconfig = false
(even if there are no active interfaces).
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
If the interfaces were removed just before a restart
work was started, open_count will be 0, and most of
the reconfig work will be skipped, including the
resetting of local->in_reconfig to false.
Leaving local->inconfig = true will result in
dropping any incoming packet.
Fix it by always setting local->in_reconfig = false
(even if there are no active interfaces).
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
mac80211: stop Rx during HW reconfig
While HW reconfig is in progress, drop all incoming Rx. This prevents
incoming packets from changing the internal state of the driver or
calling callbacks of the low level driver while it is in inconsistent
state.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
While HW reconfig is in progress, drop all incoming Rx. This prevents
incoming packets from changing the internal state of the driver or
calling callbacks of the low level driver while it is in inconsistent
state.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
mac80211: add stations after AP start on reconfig
When performing a HW restart for an AP mode interface, add stations back
only after the AP is beaconing. This mimics the normal flow of STA
addition on AP.
Some devices (wlcore) do not support adding stations before beaconing,
so this has the added benefit of making recovery work for them.
[Eyal - backported to R5]
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
When performing a HW restart for an AP mode interface, add stations back
only after the AP is beaconing. This mimics the normal flow of STA
addition on AP.
Some devices (wlcore) do not support adding stations before beaconing,
so this has the added benefit of making recovery work for them.
[Eyal - backported to R5]
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Revert "wl12xx: fix BA session after AP recovery"
This reverts commit 5ec6973c0fd6f3d2744d174576beb2e7ad007e0b.
which introduced a bug where the hlid allocated for the sta during
reconfig wasn't saved in the ieee80211_sta which was passed
from mac80211. Instead a copy of ieee80211_sta was created and
maintained by wl12xx. This is wrong as mac80211 needs to be in
sync with us. The result could be attempting to free the wrong
hlid when mac80211 removes the sta among others. Fix this by
avoiding the copy and instead keep the pending peers list by
linking the driver private struct at the end of ieee80211_sta.
Another bug existed in wl1271_bss_info_changed_ap() where when
adding the peers the state was updated effectively only for the
first peer.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
This reverts commit 5ec6973c0fd6f3d2744d174576beb2e7ad007e0b.
which introduced a bug where the hlid allocated for the sta during
reconfig wasn't saved in the ieee80211_sta which was passed
from mac80211. Instead a copy of ieee80211_sta was created and
maintained by wl12xx. This is wrong as mac80211 needs to be in
sync with us. The result could be attempting to free the wrong
hlid when mac80211 removes the sta among others. Fix this by
avoiding the copy and instead keep the pending peers list by
linking the driver private struct at the end of ieee80211_sta.
Another bug existed in wl1271_bss_info_changed_ap() where when
adding the peers the state was updated effectively only for the
first peer.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: Always pass DMA-able buffers to mmc functions
Some of the mmc drivers initiate DMA transfers with buffers passed from
higher layers. This means that the driver shouldn't ever pass non
DMA-able buffers, such as ones that are unaligned, allocated on the
stack or static.
Fix a couple of calls to the mmc layer in which buffers which weren't
necessarily DMA-able were passed.
Reported-by: "De Cesco, Jonathan" <jonathanc@ti.com>
Signed-off-by: Ido Yariv <ido@wizery.com>
Some of the mmc drivers initiate DMA transfers with buffers passed from
higher layers. This means that the driver shouldn't ever pass non
DMA-able buffers, such as ones that are unaligned, allocated on the
stack or static.
Fix a couple of calls to the mmc layer in which buffers which weren't
necessarily DMA-able were passed.
Reported-by: "De Cesco, Jonathan" <jonathanc@ti.com>
Signed-off-by: Ido Yariv <ido@wizery.com>
wl12xx: don't ROC or switch to MR on p2p mgmt on-chan Tx
When in the SR FW and Tx arrives on the p2p mgmt interface on the
same channel as an existing p2p role, don't switch to MR or ROC on
the newly started device role. Just start the device role and use it
for Tx. Do the ROC as usual in the MR FW.
This avoids problems during p2p operation, when we need to respond
to packets via the p2p-dev interface (i.e. provision discovery in GO).
Signed-off-by: Arik Nemtsov <arik@wizery.com>
When in the SR FW and Tx arrives on the p2p mgmt interface on the
same channel as an existing p2p role, don't switch to MR or ROC on
the newly started device role. Just start the device role and use it
for Tx. Do the ROC as usual in the MR FW.
This avoids problems during p2p operation, when we need to respond
to packets via the p2p-dev interface (i.e. provision discovery in GO).
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: enable the dev role on the p2p mgmt iface
When starting a p2p mgmt interface, enable its device role. This
is used to keep the FW Rx filters down for the p2p dev role MAC address.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
When starting a p2p mgmt interface, enable its device role. This
is used to keep the FW Rx filters down for the p2p dev role MAC address.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
mac80211: mark the p2p0 interface with a special flag
This flag indicates the lower driver the interface will be used for
p2p management operations only (p2p find). This will be superseded
by pending upstream patches making p2p a wdev-only interface.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
This flag indicates the lower driver the interface will be used for
p2p management operations only (p2p find). This will be superseded
by pending upstream patches making p2p a wdev-only interface.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: disable arp filter only if configured
Disabling auto arp actually causes FW resources allocation
and it's better to avoid that unless an arp filter was
already configured (i.e. the interface had an IP configured).
This also prevents exceeding the FW arp filters limit (2)
in certain scenarios. Once such case which poses a problem
is having a P2P_GO with an associated client + a connected STA
concurrently. Once you disconnect the GO, for a brief moment
the interface is changed to STA before removal. This leads to
having 3 STA interfaces (the actual STA, P2P device and the
disconnected GO which turned into a STA) and would attempt
allocating 3 FW arp filters which fails.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Disabling auto arp actually causes FW resources allocation
and it's better to avoid that unless an arp filter was
already configured (i.e. the interface had an IP configured).
This also prevents exceeding the FW arp filters limit (2)
in certain scenarios. Once such case which poses a problem
is having a P2P_GO with an associated client + a connected STA
concurrently. Once you disconnect the GO, for a brief moment
the interface is changed to STA before removal. This leads to
having 3 STA interfaces (the actual STA, P2P device and the
disconnected GO which turned into a STA) and would attempt
allocating 3 FW arp filters which fails.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: don't send the sleep_auth to FW on recovery
The FW doesn't seem to handle it gracefully, and it's redundant since
recovery will make us load a new FW anyway.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
The FW doesn't seem to handle it gracefully, and it's redundant since
recovery will make us load a new FW anyway.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
11 years agowl12xx: Fix continuous and on-demand fwlog modes R5.xx_Build-10 R5.xx_Build-11 R5.xx_Build-12 R5.xx_Build-13 R5.xx_Build-14 R5.xx_Build-15 R5.xx_Build-16 R5.xx_Build-57 R5.xx_Build-58 R5.xx_Build-6 R5.xx_Build-7 R5.xx_Build-8 R5.xx_Build-9
wl12xx: Fix continuous and on-demand fwlog modes
Commit 4d7944cc ("wl12xx: set default FW log mode to dbg-pins") set the
default debug output to debug pins. However, when either continuous or
on-demand fwlog modes are set, the debug output is not overridden
accordingly. Fix this.
Signed-off-by: Ido Yariv <ido@wizery.com>
Commit 4d7944cc ("wl12xx: set default FW log mode to dbg-pins") set the
default debug output to debug pins. However, when either continuous or
on-demand fwlog modes are set, the debug output is not overridden
accordingly. Fix this.
Signed-off-by: Ido Yariv <ido@wizery.com>
wl12xx: Fix unbalanced interrupts enablement
The interrupt line is enabled by wl1271_boot_enable_interrupts, but it
will not be disabled in all failure paths. Fix this.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
The interrupt line is enabled by wl1271_boot_enable_interrupts, but it
will not be disabled in all failure paths. Fix this.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: Don't recover during boot
While recursive recovery is avoided during shutdown, a new recovery may
be queued when the FW boots. The recovery work will then try to stop an
already stopped hardware, which will most likely result in a kernel
panic.
Fix this by verifying that wl->state is on before queueing a new
recovery.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
While recursive recovery is avoided during shutdown, a new recovery may
be queued when the FW boots. The recovery work will then try to stop an
already stopped hardware, which will most likely result in a kernel
panic.
Fix this by verifying that wl->state is on before queueing a new
recovery.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wlcore: make debug prints work without dynamic debug
Make debug prints operational when dynamic debug is not defined.
This allows better debugging in production environments.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Make debug prints operational when dynamic debug is not defined.
This allows better debugging in production environments.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: op_tx: pass sta explicitly when inferring frame hlid
avoid using the skb CB for getting the appropriate sta.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
avoid using the skb CB for getting the appropriate sta.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wlcore: don't get the hlid from a queued skb
There was a bug hiding here since the hlid was sometimes inferred from
the sta, which might be invalid at this point.
Instead, propagate the hlid from the skb-queue where we got the skb
in the first place.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
There was a bug hiding here since the hlid was sometimes inferred from
the sta, which might be invalid at this point.
Instead, propagate the hlid from the skb-queue where we got the skb
in the first place.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wlcore: Prevent interaction with HW after recovery is queued
When a function requests to recover, it would normally abort and will
not send any additional commands to the HW. However, other threads may
not be aware of the failure and could try to communicate with the HW
after a recovery was queued, but before the recovery work began.
Fix this by introducing an intermediate state which is set when recovery
is queued, and modify all state checks accordingly.
[Arik - ported to r5 driver version]
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
When a function requests to recover, it would normally abort and will
not send any additional commands to the HW. However, other threads may
not be aware of the failure and could try to communicate with the HW
after a recovery was queued, but before the recovery work began.
Fix this by introducing an intermediate state which is set when recovery
is queued, and modify all state checks accordingly.
[Arik - ported to r5 driver version]
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: Use a dedicated fw for PLT
A special PLT firmware is used for calibration.
Add multiple fw support by introducing a new fw_type member,
representing the currently saved fw (the actual fw state
can be determined by wl->state).
[Arik - Ported to r5_jb. Things are slighty modified here]
Signed-off-by: Gery Kahn <geryk@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
A special PLT firmware is used for calibration.
Add multiple fw support by introducing a new fw_type member,
representing the currently saved fw (the actual fw state
can be determined by wl->state).
[Arik - Ported to r5_jb. Things are slighty modified here]
Signed-off-by: Gery Kahn <geryk@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: set default FW log mode to dbg-pins
This mode is the most stable with the current FW.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
This mode is the most stable with the current FW.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: take the mutex during delayed recovery
We are touching internal flags and talking to the FW, so we must take
the mutex. Also add an ELP wakeup/sleep before talking to the FW in this
funcion.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
We are touching internal flags and talking to the FW, so we must take
the mutex. Also add an ELP wakeup/sleep before talking to the FW in this
funcion.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: tx_flush - optimize flow and force Tx during the flush
Force Tx during the flush if there are packets pending in the driver.
This actually solves a bug where we would get called from the mac80211
wq context, which would prevent tx_work from getting queued, even when
the mutex is unlocked.
Don't stop the queues needlessly if there's nothing to flush. Use a
larger delay when sleeping to give the driver a chance to flush and
avoid cpu busy looping. Re-arrange the loop so the last iteration is
not wasted.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Force Tx during the flush if there are packets pending in the driver.
This actually solves a bug where we would get called from the mac80211
wq context, which would prevent tx_work from getting queued, even when
the mutex is unlocked.
Don't stop the queues needlessly if there's nothing to flush. Use a
larger delay when sleeping to give the driver a chance to flush and
avoid cpu busy looping. Re-arrange the loop so the last iteration is
not wasted.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: lazy-enable device roles
Enable device roles just before starting it.
This way, a single device role should be enough
for all vifs, as we can't use concurrent device
roles (which require ROC) anyway.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Enable device roles just before starting it.
This way, a single device role should be enough
for all vifs, as we can't use concurrent device
roles (which require ROC) anyway.
Signed-off-by: Eliad Peller <eliad@wizery.com>
wl12xx: always use wlvif->role_id for scans
enabled (but not-started) sta role should be good enough
for scanning (both normal and scheduled), so use it
instead of the device_role.
Signed-off-by: Eliad Peller <eliad@wizery.com>
enabled (but not-started) sta role should be good enough
for scanning (both normal and scheduled), so use it
instead of the device_role.
Signed-off-by: Eliad Peller <eliad@wizery.com>
wl12xx: disable roaming only when booting the MR FW
Since the SR/MR switch is now delayed, only disable roaming when the
MR FW is booted, and otherwise enable it.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Since the SR/MR switch is now delayed, only disable roaming when the
MR FW is booted, and otherwise enable it.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: don't try to free a NULL probe-resp
Can lead to a crash if the probe-resp was never set.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Can lead to a crash if the probe-resp was never set.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: allow setting 3 mac addresses
To create the third MAC address, use the first address, but set the LAA
bit. This will allow STA + P2P + AP scenarios.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
To create the third MAC address, use the first address, but set the LAA
bit. This will allow STA + P2P + AP scenarios.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
mac80211: avoid using synchronize_rcu in ieee80211_set_probe_resp
This could take a while (100ms+) and may delay sending assoc resp
in AP mode with WPS or P2P GO (as setting the probe resp takes place
there). We've encountered situations where the delay was big enough
to cause connection problems with devices like Galaxy Nexus.
Switch to using call_rcu with a free handler.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
This could take a while (100ms+) and may delay sending assoc resp
in AP mode with WPS or P2P GO (as setting the probe resp takes place
there). We've encountered situations where the delay was big enough
to cause connection problems with devices like Galaxy Nexus.
Switch to using call_rcu with a free handler.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
mac80211: avoid using synchronize_rcu in ieee80211_config_beacon
This was causing a very long delay (>200ms) which would
delay sending assoc resp in cases of an AP with WPS (where
the beacon gets updated after assoc req is received).
Some devices like Galaxy Nexus don't accept the assoc resp
if it's delayed for too long. This is causing connection issues
in AP mode with WPS and in P2P GO.
Switch instead to using kfree_rcu which wouldn't block here
but is still safe.
(This is based on upstream changes by Johannes)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
This was causing a very long delay (>200ms) which would
delay sending assoc resp in cases of an AP with WPS (where
the beacon gets updated after assoc req is received).
Some devices like Galaxy Nexus don't accept the assoc resp
if it's delayed for too long. This is causing connection issues
in AP mode with WPS and in P2P GO.
Switch instead to using kfree_rcu which wouldn't block here
but is still safe.
(This is based on upstream changes by Johannes)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: don't stop tx queue via watermark if already stopped
If a Tx queue is currently stopped because of our Tx watermark flow
control, don't stop it again. This causes a warning to appear.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
If a Tx queue is currently stopped because of our Tx watermark flow
control, don't stop it again. This causes a warning to appear.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore: stop queues on Tx flush
Stop network queues during Tx flush, and also drop other internal
mac80211 packets (mgmt) that may arrive when the queues are stopped.
When flush is done all driver queues are clear, forcefully if needed.
Protect the Tx flush operation with a new mutex, to prevent concurrency
that can mess us queue state.
Based on a patch by Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Stop network queues during Tx flush, and also drop other internal
mac80211 packets (mgmt) that may arrive when the queues are stopped.
When flush is done all driver queues are clear, forcefully if needed.
Protect the Tx flush operation with a new mutex, to prevent concurrency
that can mess us queue state.
Based on a patch by Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore: add stop reason bitmap for waking/starting queues
Allow the driver to wake/stop the queues for multiple reasons. A queue
is started when no stop-reasons exist.
Convert all wake/stop queue calls to use the new API.
Before, a stopped queue was almost synonymous a high-watermark on Tx.
Remove a bit of code in wl12xx_tx_reset() that relied on it.
Internal packets arriving from mac80211 are also discarded when a queue
is stopped. A notable exception to this is the watermark reason, which
is a "soft"-stop reason. We allow traffic to gradually come to a halt,
but we don't mind spurious packets here and there. This is merely a flow
regulation mechanism.
Based on a similar patch by Eliad Peller <eliadWizery.com>.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Allow the driver to wake/stop the queues for multiple reasons. A queue
is started when no stop-reasons exist.
Convert all wake/stop queue calls to use the new API.
Before, a stopped queue was almost synonymous a high-watermark on Tx.
Remove a bit of code in wl12xx_tx_reset() that relied on it.
Internal packets arriving from mac80211 are also discarded when a queue
is stopped. A notable exception to this is the watermark reason, which
is a "soft"-stop reason. We allow traffic to gradually come to a halt,
but we don't mind spurious packets here and there. This is merely a flow
regulation mechanism.
Based on a similar patch by Eliad Peller <eliadWizery.com>.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wl12xx: make Tx flush timings more verbose
Print how much time a flush took. This will help debug the time it takes
to switch between channels.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Print how much time a flush took. This will help debug the time it takes
to switch between channels.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: allow only the lowest OFDM rate for p2p setup frames
The IEEE80211_TX_CTL_NO_CCK_RATE flag is only set for mgmt packets
transmitted during p2p connection setup. Make sure to use the lowest
OFDM rate guarantee the peer always hears us.
Change the p2p rate policy to contain only the 6mpbs rate to acheive
this effect.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
The IEEE80211_TX_CTL_NO_CCK_RATE flag is only set for mgmt packets
transmitted during p2p connection setup. Make sure to use the lowest
OFDM rate guarantee the peer always hears us.
Change the p2p rate policy to contain only the 6mpbs rate to acheive
this effect.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: AP mode - send non-data packets with basic rates
This solves interoperability issues with peer that don't seem to "hear"
management packets transmitted in higher rates. Based on a previous
patch by Igal Chernobelsky.
Cc: Igal Chernobelsky <igalc@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
This solves interoperability issues with peer that don't seem to "hear"
management packets transmitted in higher rates. Based on a previous
patch by Igal Chernobelsky.
Cc: Igal Chernobelsky <igalc@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
mac80211: skip the ps count of idle STAs
To be able to enter ps on a SR FW with more than one
interface up, while only one interface is connected
and others are idle.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
To be able to enter ps on a SR FW with more than one
interface up, while only one interface is connected
and others are idle.
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
wl12xx: change verbose debug print
This print_info might be too verbose in some p2p
scenarios so change the wl1271_info() to
wl1271_debug() in wl12xx_need_fw_change().
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
This print_info might be too verbose in some p2p
scenarios so change the wl1271_info() to
wl1271_debug() in wl12xx_need_fw_change().
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
cfg80211/nl80211/wl12xx: align to new nl80211.h ABI
This includes some minor changes:
- change NL80211_CQM_RSSI_BEACON_LOSS to
NL80211_CQM_RSSI_BEACON_LOSS_EVENT
- remove all features concerning advertisement of intermediate scan
capabilities. These are currently unused.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
This includes some minor changes:
- change NL80211_CQM_RSSI_BEACON_LOSS to
NL80211_CQM_RSSI_BEACON_LOSS_EVENT
- remove all features concerning advertisement of intermediate scan
capabilities. These are currently unused.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
mac80211: fix invalid band deref building preq IEs
The function building probe-request IEs does not validate the band is
supported before dereferencing it. This can result in a panic when
all bands are traversed, as done during sched-scan start.
Warn when this happens and return an empty probe request. Also fix
sched-scan to not waste memory on unsupported bands.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
The function building probe-request IEs does not validate the band is
supported before dereferencing it. This can result in a panic when
all bands are traversed, as done during sched-scan start.
Warn when this happens and return an empty probe request. Also fix
sched-scan to not waste memory on unsupported bands.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
wlcore: define number of supported bands internally
Avoid using the IEEE80211_NUM_BANDS constant for arrays sizes etc, as
this can contain bands unsupported by the driver (e.g. 60Ghz). Use an
internal constant to determine the number of bands.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Avoid using the IEEE80211_NUM_BANDS constant for arrays sizes etc, as
this can contain bands unsupported by the driver (e.g. 60Ghz). Use an
internal constant to determine the number of bands.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wlcore: use basic rates for non-data packets
After the latest mac80211 changes, the sta has
the ap's sta pointer even before association.
This cause the auth and assoc frames to be sent
with the standard ap's rates, rather than the
basic rates.
Change the tx rate policy logic to use the regular
ap rates only for data packets (so control and mgmt
packets will be sent with basic rates)
Signed-off-by: Eliad Peller <eliad@wizery.com>
After the latest mac80211 changes, the sta has
the ap's sta pointer even before association.
This cause the auth and assoc frames to be sent
with the standard ap's rates, rather than the
basic rates.
Change the tx rate policy logic to use the regular
ap rates only for data packets (so control and mgmt
packets will be sent with basic rates)
Signed-off-by: Eliad Peller <eliad@wizery.com>
wlcore: send EAPOLs using minimum basic rate for all roles
Send EAPOLs using minimum basic rate for AP, STA, p2p GO and Client.
The patch fixes p2p connection issue with Realtek device in p2p
certification test 5.1.13 (DEVUT reinvokes Persistent Group).
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
Send EAPOLs using minimum basic rate for AP, STA, p2p GO and Client.
The patch fixes p2p connection issue with Realtek device in p2p
certification test 5.1.13 (DEVUT reinvokes Persistent Group).
Signed-off-by: Igal Chernobelsky <igalc@ti.com>
mac80211: check sdata_running on ieee80211_set_bitrate_mask
Otherwise, we might call the driver callback before
the interface was uploaded.
Solves the following warning:
WARNING: at net/mac80211/driver-ops.h:12 ieee80211_set_bitrate_mask+0xbc/0x18c [mac80211]()
wlan0: Failed check-sdata-in-driver check, flags: 0x0
Modules linked in: wlcore_sdio wl12xx wl18xx wlcore mac80211 cfg80211 [last unloaded: cfg80211]
[<c001b964>] (unwind_backtrace+0x0/0x12c) from [<c0495550>] (dump_stack+0x20/0x24)
[<c0495550>] (dump_stack+0x20/0x24) from [<c003ee28>] (warn_slowpath_common+0x5c/0x74)
[<c003ee28>] (warn_slowpath_common+0x5c/0x74) from [<c003eefc>] (warn_slowpath_fmt+0x40/0x48)
[<c003eefc>] (warn_slowpath_fmt+0x40/0x48) from [<bf5c1ad0>] (ieee80211_set_bitrate_mask+0xbc/0x18c [mac80211])
[<bf5c1ad0>] (ieee80211_set_bitrate_mask+0xbc/0x18c [mac80211]) from [<bf575960>] (nl80211_set_tx_bitrate_mask+0x350/0x358 [cfg80211])
[<bf575960>] (nl80211_set_tx_bitrate_mask+0x350/0x358 [cfg80211]) from [<c03e9e94>] (genl_rcv_msg+0x1a8/0x1e8)
[<c03e9e94>] (genl_rcv_msg+0x1a8/0x1e8) from [<c03e9164>] (netlink_rcv_skb+0x5c/0xc0)
[<c03e9164>] (netlink_rcv_skb+0x5c/0xc0) from [<c03e9ce0>] (genl_rcv+0x28/0x34)
[<c03e9ce0>] (genl_rcv+0x28/0x34) from [<c03e8e74>] (netlink_unicast+0x158/0x234)
[<c03e8e74>] (netlink_unicast+0x158/0x234) from [<c03e93e0>] (netlink_sendmsg+0x218/0x298)
[<c03e93e0>] (netlink_sendmsg+0x218/0x298) from [<c03b4e5c>] (sock_sendmsg+0xa4/0xc0)
[<c03b4e5c>] (sock_sendmsg+0xa4/0xc0) from [<c03b5af4>] (__sys_sendmsg+0x1d8/0x254)
[<c03b5af4>] (__sys_sendmsg+0x1d8/0x254) from [<c03b5ca8>] (sys_sendmsg+0x4c/0x70)
[<c03b5ca8>] (sys_sendmsg+0x4c/0x70) from [<c0013980>] (ret_fast_syscall+0x0/0x3c)
Note that calling the driver can also result
in undefined behaviour since it doesn't have
to deal with calls while down.
Signed-off-by: Eliad Peller <eliad@wizery.com>
[removed timestamps, added note - Johannes]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Otherwise, we might call the driver callback before
the interface was uploaded.
Solves the following warning:
WARNING: at net/mac80211/driver-ops.h:12 ieee80211_set_bitrate_mask+0xbc/0x18c [mac80211]()
wlan0: Failed check-sdata-in-driver check, flags: 0x0
Modules linked in: wlcore_sdio wl12xx wl18xx wlcore mac80211 cfg80211 [last unloaded: cfg80211]
[<c001b964>] (unwind_backtrace+0x0/0x12c) from [<c0495550>] (dump_stack+0x20/0x24)
[<c0495550>] (dump_stack+0x20/0x24) from [<c003ee28>] (warn_slowpath_common+0x5c/0x74)
[<c003ee28>] (warn_slowpath_common+0x5c/0x74) from [<c003eefc>] (warn_slowpath_fmt+0x40/0x48)
[<c003eefc>] (warn_slowpath_fmt+0x40/0x48) from [<bf5c1ad0>] (ieee80211_set_bitrate_mask+0xbc/0x18c [mac80211])
[<bf5c1ad0>] (ieee80211_set_bitrate_mask+0xbc/0x18c [mac80211]) from [<bf575960>] (nl80211_set_tx_bitrate_mask+0x350/0x358 [cfg80211])
[<bf575960>] (nl80211_set_tx_bitrate_mask+0x350/0x358 [cfg80211]) from [<c03e9e94>] (genl_rcv_msg+0x1a8/0x1e8)
[<c03e9e94>] (genl_rcv_msg+0x1a8/0x1e8) from [<c03e9164>] (netlink_rcv_skb+0x5c/0xc0)
[<c03e9164>] (netlink_rcv_skb+0x5c/0xc0) from [<c03e9ce0>] (genl_rcv+0x28/0x34)
[<c03e9ce0>] (genl_rcv+0x28/0x34) from [<c03e8e74>] (netlink_unicast+0x158/0x234)
[<c03e8e74>] (netlink_unicast+0x158/0x234) from [<c03e93e0>] (netlink_sendmsg+0x218/0x298)
[<c03e93e0>] (netlink_sendmsg+0x218/0x298) from [<c03b4e5c>] (sock_sendmsg+0xa4/0xc0)
[<c03b4e5c>] (sock_sendmsg+0xa4/0xc0) from [<c03b5af4>] (__sys_sendmsg+0x1d8/0x254)
[<c03b5af4>] (__sys_sendmsg+0x1d8/0x254) from [<c03b5ca8>] (sys_sendmsg+0x4c/0x70)
[<c03b5ca8>] (sys_sendmsg+0x4c/0x70) from [<c0013980>] (ret_fast_syscall+0x0/0x3c)
Note that calling the driver can also result
in undefined behaviour since it doesn't have
to deal with calls while down.
Signed-off-by: Eliad Peller <eliad@wizery.com>
[removed timestamps, added note - Johannes]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
wl12xx: increase WL12XX_MAX_ROLES
when working with AP + 2*STA we have more than
4 active roles. increase WL12XX_MAX_ROLES to 6.
Signed-off-by: Eliad Peller <eliad@wizery.com>
when working with AP + 2*STA we have more than
4 active roles. increase WL12XX_MAX_ROLES to 6.
Signed-off-by: Eliad Peller <eliad@wizery.com>
wl12xx: change recovery on start/stop device role
since the recovery itself will usually stop the offchannel
operation, on fw boot we will use SR fw again, which will
result in endless recoveries... avoid it by forcing MR fw
for some grace period after it was needed.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
since the recovery itself will usually stop the offchannel
operation, on fw boot we will use SR fw again, which will
result in endless recoveries... avoid it by forcing MR fw
for some grace period after it was needed.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: add grace period when changing MR -> SR fw
This improves user experience when performing p2p_find for instance.
[Changed grace period to 30 seconds]
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
This improves user experience when performing p2p_find for instance.
[Changed grace period to 30 seconds]
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: delay fw switch to start/stop_role_sta/ap
do the fw switch only when the role was started/stopped
Signed-off-by: Eliad Peller <eliad@wizery.com>
do the fw switch only when the role was started/stopped
Signed-off-by: Eliad Peller <eliad@wizery.com>
mac80211: count started vifs
count the started roles by simply counting the non-idle vifs.
this method also takes care of counting non-associated
stations (when device role is started)
[Arik - backport usage of rcu here]
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
count the started roles by simply counting the non-idle vifs.
this method also takes care of counting non-associated
stations (when device role is started)
[Arik - backport usage of rcu here]
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
11 years agowl12xx: increase command completion timeout r5_3.2 ol_R5.00.21 r5.00.19-build_235 r5.00.19-build_236 r5.00.19-build_237 r5.00.19-build_239 r5.00.19-build_240 r5.00.19-build_241 r5.00.19-build_242 r5.00.19-build_243 r5.00.19-build_245 r5.00.19-build_246 r5.00.19-build_247 r5.00.19-build_248 r5.00.19-build_249 r5.00.19-build_253 r5.00.19-build_254 r5.00.19-build_255 r5.00.19-build_256 r5.00.19-build_257
wl12xx: increase command completion timeout
In some rare cases, the CMD_ROC completion may take over 1 second.
The timeout had earlier been increased to 1000ms (from 750ms), but it
is still not enoug. Increase it to 1500ms.
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
In some rare cases, the CMD_ROC completion may take over 1 second.
The timeout had earlier been increased to 1000ms (from 750ms), but it
is still not enoug. Increase it to 1500ms.
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl12xx: implement SW Tx watchdog
Track freed FW blocks during Tx. If no blocks were freed during a
predefined timeout, initiate a HW recovery. This helps in situations
when the FW watchdog fails.
Don't trigger recovery during activities that can temporarily stop
Tx. This includes:
- scanning
- buffering packets for sleeping stations (AP role)
- ROC on any role
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Track freed FW blocks during Tx. If no blocks were freed during a
predefined timeout, initiate a HW recovery. This helps in situations
when the FW watchdog fails.
Don't trigger recovery during activities that can temporarily stop
Tx. This includes:
- scanning
- buffering packets for sleeping stations (AP role)
- ROC on any role
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
11 years agowl12xx: add an extra block for all data packets in GEM r5.00.19-build_232 r5.00.19-build_233 r5.00.19-build_234
wl12xx: add an extra block for all data packets in GEM
FW does not handle correctly a situation where the STA
is connected using GEM and a non-GEM data packets is sent.
Therefore, when connecting using GEM, add an extra mem
block for all data packets even if they are not encrypted.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
FW does not handle correctly a situation where the STA
is connected using GEM and a non-GEM data packets is sent.
Therefore, when connecting using GEM, add an extra mem
block for all data packets even if they are not encrypted.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
wlcore: don't issue SLEEP_AUTH command during recovery
During interface removal, don't adjust sleep_auth if we are during
recovery. Since the FW is potentially dead we shouldn't talk to it.
Reported-by: Yossi Wortzel <yossiw@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
During interface removal, don't adjust sleep_auth if we are during
recovery. Since the FW is potentially dead we shouldn't talk to it.
Reported-by: Yossi Wortzel <yossiw@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
11 years agowl12xx: change return code in case of WD recovery (squash) ol_R5.00.20 r5.00.19-build_226 r5.00.19-build_227 r5.00.19-build_228 r5.00.19-build_229
wl12xx: change return code in case of WD recovery (squash)
In case of WD recovery we will manage to read correctly
FW status thus the return code will be 0. because of that
recovery wont be triggered.
This patch should be squashed into:
"wl12xx: refactor threaded IRQ routine"
Signed-off-by: Yossi Wortzel <yossiw@ti.com>
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
In case of WD recovery we will manage to read correctly
FW status thus the return code will be 0. because of that
recovery wont be triggered.
This patch should be squashed into:
"wl12xx: refactor threaded IRQ routine"
Signed-off-by: Yossi Wortzel <yossiw@ti.com>
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
wl12xx: add elp_timeout config option
Add a configuration option which defines the
timeout for which the driver waits until it
sets the chip into elp.
Since the dynamic_ps_timeout default value is
set to 1500 msec, using it in order to
define the elp timeout causes the chip to
stay awake for long periods.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Add a configuration option which defines the
timeout for which the driver waits until it
sets the chip into elp.
Since the dynamic_ps_timeout default value is
set to 1500 msec, using it in order to
define the elp timeout causes the chip to
stay awake for long periods.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
wl12xx: increase number of rx filters to 7
This is supported from the following FW revisions:
SR X.2.9.0.115 MR X.3.9.0.29
Signed-off-by: Eyal Shapira <eyal@wizery.com>
This is supported from the following FW revisions:
SR X.2.9.0.115 MR X.3.9.0.29
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: support wowlan pattern actions
Add support for setting the wowlan pattern action
to either ALLOW or DROP.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Add support for setting the wowlan pattern action
to either ALLOW or DROP.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
nl80211: add an action to wowlan patterns
Add an ALLOW or DROP action to wowlan patterns.
This enables configuring exception or blacklist wowlan
pattern which would avoid waking up the host in case
the pattern was found despite matching another wowlan
pattern with ALLOW action.
For example this enables configuring something like:
wakeup for all IPv4 multicast except certain type of
multicast packets.
This patch is based on a patch by Yossi Wortzel.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Add an ALLOW or DROP action to wowlan patterns.
This enables configuring exception or blacklist wowlan
pattern which would avoid waking up the host in case
the pattern was found despite matching another wowlan
pattern with ALLOW action.
For example this enables configuring something like:
wakeup for all IPv4 multicast except certain type of
multicast packets.
This patch is based on a patch by Yossi Wortzel.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: avoid debug prints during intended FW recovery
Don't read the FW panic log or print other debug data when recovery is
intended (i.e. FW type switch). This takes valuable time and can be
confusing to the user.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Don't read the FW panic log or print other debug data when recovery is
intended (i.e. FW type switch). This takes valuable time and can be
confusing to the user.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: android: don't suspend on pending recovery (INTERNAL)
Some customers complain that if we cancel a pending recovery during
suspend, the android scheduler will keep banging on the suspend handler,
without letting recovery take its course. Grab a wakelock to give the
recovery process some breathing room.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Some customers complain that if we cancel a pending recovery during
suspend, the android scheduler will keep banging on the suspend handler,
without letting recovery take its course. Grab a wakelock to give the
recovery process some breathing room.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
mac80211: fix list_aliases handling (INTERNAL)
commit 37a5502 ("cfg80211: more correct support of multi-essid bss-es")
used the wrong syntax for adding an entry to existing list, causing
memory corruption later on, if the original list was not empty.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
commit 37a5502 ("cfg80211: more correct support of multi-essid bss-es")
used the wrong syntax for adding an entry to existing list, causing
memory corruption later on, if the original list was not empty.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: don't set SDIO_FAILED flag when driver state is off
If some IO read/write fails while the FW is not loaded, a recovery
will not take place. This means the SDIO_FAILED flag will stay in place
forever and prevent further read/writes.
This can happen if a check for STATE_OFF was forgotten in some routine.
Take this opportunity to rename the flag to IO_FAILED, since we support
other buses as well.
Reported-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
If some IO read/write fails while the FW is not loaded, a recovery
will not take place. This means the SDIO_FAILED flag will stay in place
forever and prevent further read/writes.
This can happen if a check for STATE_OFF was forgotten in some routine.
Take this opportunity to rename the flag to IO_FAILED, since we support
other buses as well.
Reported-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
mac80211: don't require associated->beacon_ies for ps
beacon_ies is needed only in order to extract the dtim
period. However, even if it's missing we can still enter
ps with dtim=1 (which also happens if the TIM ie is invalid).
Most drivers don't use conf.max_sleep_period/ps_dtim_period
anyway, and this check prevents them from entering ps if
they don't have beacon (but only probe response), even though
the beacon is not needed at all.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
beacon_ies is needed only in order to extract the dtim
period. However, even if it's missing we can still enter
ps with dtim=1 (which also happens if the TIM ie is invalid).
Most drivers don't use conf.max_sleep_period/ps_dtim_period
anyway, and this check prevents them from entering ps if
they don't have beacon (but only probe response), even though
the beacon is not needed at all.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: Prevent processing of work items during op_stop
The interrupt line is disabled in op_stop using disable_irq. Since
pending interrupts are synchronized, the mutex has to be released before
disabling the interrupt to avoid a deadlock with the interrupt handler.
In addition, the internal state of the driver is only set to 'off'
after the interrupt is disabled. Otherwise, if an interrupt fires after
the state is set but before the interrupt line is disabled, the
interrupt handler will not be able to acknowledge the interrupt
resulting in an interrupt storm.
The driver's operations might be called during recovery. If these
acquire the mutex after it was released by op_stop, but before the
driver's state is changed, they may queue new work items instead of just
failing. This is especially problematic in the case of scans, in which a
new scan may be scheduled after all scan requests were cancelled.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
The interrupt line is disabled in op_stop using disable_irq. Since
pending interrupts are synchronized, the mutex has to be released before
disabling the interrupt to avoid a deadlock with the interrupt handler.
In addition, the internal state of the driver is only set to 'off'
after the interrupt is disabled. Otherwise, if an interrupt fires after
the state is set but before the interrupt line is disabled, the
interrupt handler will not be able to acknowledge the interrupt
resulting in an interrupt storm.
The driver's operations might be called during recovery. If these
acquire the mutex after it was released by op_stop, but before the
driver's state is changed, they may queue new work items instead of just
failing. This is especially problematic in the case of scans, in which a
new scan may be scheduled after all scan requests were cancelled.
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wl12xx: always clear recovery flag during recovery_work
If recovery is called when the FW is off, we should clear
the recovery flag. Otherwise we risk booting the driver in
permanent pending-recovery state or getting into a state where
the driver is left in an OFF state.
This can happen if a 2nd recovery is triggered and runs before
ieee80211_reconfig adds back the interface.
Fix this by always clearing the recovery flag.
In addition, enable interrupts to balance the disable in
wl1271_queue_recovery_work.
(This is based on Arik's patch for wlcore with fixes)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
If recovery is called when the FW is off, we should clear
the recovery flag. Otherwise we risk booting the driver in
permanent pending-recovery state or getting into a state where
the driver is left in an OFF state.
This can happen if a 2nd recovery is triggered and runs before
ieee80211_reconfig adds back the interface.
Fix this by always clearing the recovery flag.
In addition, enable interrupts to balance the disable in
wl1271_queue_recovery_work.
(This is based on Arik's patch for wlcore with fixes)
Signed-off-by: Eyal Shapira <eyal@wizery.com>
wlcore: compare ssid_len before comparing ssids
When comparing 2 ssids the ssid_len must be taken
into account. Otherwise, a substring will be treated
as equal.
This bug might cause ssids to get scanned as
public ssids (rather than hidden), resulting in
broadcast probe request (instead of ssid-specific
ones)
[ this is a backport of 587cc28 ("wlcore: compare
ssid_len before comparing ssids") which already
contains the "wlcore: check ssid length against
the correct element" fix ]
Signed-off-by: Eliad Peller <eliad@wizery.com>
When comparing 2 ssids the ssid_len must be taken
into account. Otherwise, a substring will be treated
as equal.
This bug might cause ssids to get scanned as
public ssids (rather than hidden), resulting in
broadcast probe request (instead of ssid-specific
ones)
[ this is a backport of 587cc28 ("wlcore: compare
ssid_len before comparing ssids") which already
contains the "wlcore: check ssid length against
the correct element" fix ]
Signed-off-by: Eliad Peller <eliad@wizery.com>
wl12xx: init the pll reg before reading the fuse reg
The device mac address can be stored in the nvs or
the fuse registers. If the nvs contains a zero mac
address then the driver will fallback to the fuse
mac address which is read during the wl12xx_sdio
insmod.
The fuse registers are held in the DRPW partition,
therefore in order to read them safely the pll
clock must first be initialized.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
The device mac address can be stored in the nvs or
the fuse registers. If the nvs contains a zero mac
address then the driver will fallback to the fuse
mac address which is read during the wl12xx_sdio
insmod.
The fuse registers are held in the DRPW partition,
therefore in order to read them safely the pll
clock must first be initialized.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
wl12xx: always set default wep key idx
The driver doesn't configure the FW default wep key
in case it thinks it's identical to what was set. However,
the FW clears the default tx wep key index as part of removing
that key. This leads to key index 0 being used instead of
the correct key index in case of disconnect and reconnect
to the same network. This of course prevents any TX to the
reconnected network.
Fix it by always configuring the default wep key requested
by mac80211.
Also add a debug log for op_set_default_key_idx like the
rest of mac80211 ops.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
The driver doesn't configure the FW default wep key
in case it thinks it's identical to what was set. However,
the FW clears the default tx wep key index as part of removing
that key. This leads to key index 0 being used instead of
the correct key index in case of disconnect and reconnect
to the same network. This of course prevents any TX to the
reconnected network.
Fix it by always configuring the default wep key requested
by mac80211.
Also add a debug log for op_set_default_key_idx like the
rest of mac80211 ops.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
11 years agowlcore: add probe request templates for sched and one-shot scans ol_R5.00.19 r5.00.19-build_217 r5.00.19-build_218 r5.00.19-build_219 r5.00.19-build_220
wlcore: add probe request templates for sched and one-shot scans
The driver configures the firmware template for probe requests during
the scan process. If the same template is used for one-shot and sched
scans they will override each other when running scans simultaneously.
This fix works only on firmwares later than
X.3.9.2.112 for single role and
X.3.9.2.23 for multi-role
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
The driver configures the firmware template for probe requests during
the scan process. If the same template is used for one-shot and sched
scans they will override each other when running scans simultaneously.
This fix works only on firmwares later than
X.3.9.2.112 for single role and
X.3.9.2.23 for multi-role
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Revert "mac80211: use legacy mode for all ACs"
This reverts commit f4a3ec20b2a41d0988759eea247a73aac1e73f5f.
due to coex issues we have to work in mixed mode (uapsd on VO)
we will add supplicant option to configure the ACs
Signed-off-by: Assaf Azulay <assaf@ti.com>
This reverts commit f4a3ec20b2a41d0988759eea247a73aac1e73f5f.
due to coex issues we have to work in mixed mode (uapsd on VO)
we will add supplicant option to configure the ACs
Signed-off-by: Assaf Azulay <assaf@ti.com>