wlcore: force recheck of version.h and use -dirty if needed (INTERNAL)

If the tree was changed and unstaged or if a new tag was added, we
were not regenerating the version.h file, so it would contain outdated
information.

To fix this, force the version.h file to be rechecked during make and
use __TIMESTAMP__ instead of using the shell's date command, so that
we don't regenerate it everytime.

Additionally, use --dirty in git describe to mark dirty trees as such.

With compat-wireless, we shouldn't force the version.h file checks,
otherwise it will overwrite what we generated in compat-wireless
itself.  This was only needed for dirty trees anyway.  The side-effect
is that the version will not be regenerated when the tree becomes
dirty.

Thanks Eliad for the help with this.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore/wl12xx/wl18xx: add version.h to a new .gitignore file (INTERNAL)

This file is generated by the build process and we should not store it.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
nl80211: report stopped sched scan only after driver does (INTERNAL)

Report NL80211_CMD_SCHED_SCAN_STOPPED and change internal
states in cfg80211 only after the driver reports that
sched scan was actually stopped.

Signed-off-by: Luciano Coelho <coelho@ti.com>
nl80211/cfg80211: add 'scan_cancel' command (INTERNAL)

Mostly from an energy consumption and cpu load perspective,
it can be useful to stop a triggered scan earlier, when one
finds the desired scan results.
Adding the ability to stop a scan from user space by exposing
new NL80211_CMD_SCAN_CANCEL API.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
mac80211: add 'scan_cancel' command (INTERNAL)

Implementing the scan_cancel operation in the mac80211,
by calling existing ieee80211_scan_cancel() function.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
nl80211/cfg80211: add intermediate scan result event (INTERNAL)

Adding intermediate scan result event by exposing new
NL80211_CMD_IM_SCAN_RESULT event, which will contain
NL80211_BSS_BSSID to specify the BSSID of received scan result and
NL80211_BSS_SIGNAL_MBM to indicate signal strength.

This event might be optionally enabled during
NL80211_CMD_TRIGGER_SCAN, with NL80211_ATTR_IM_SCAN_RESULT
flag attribute.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
mac80211: add intermediate scan result event call (INTERNAL)

Adding "cfg80211_send_intermediate_result" call on reception
of new beacon/probe response.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
nl80211/cfg80211: add intermediate scan result filter (INTERNAL)

User might want to be notified with intermediate scan results only
above some minimal RSSI. Adding new NL80211_ATTR_IM_SCAN_RESULT_MIN_RSSI
u32 attribute for the intermediate scan results  RSSI filtering mechanism,
which will significantly reduce unnecessary Kernel-User traffic.
It might be optionally enabled during NL80211_CMD_TRIGGER_SCAN.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
nl80211/cfg80211: add new scan configurations attributes (INTERNAL)

To enhance scan abilities by being able to setup some low level
scan parameters dynamically during NL80211_CMD_TRIGGER_SCAN
command.

Exposing 3 new attributes:
  NL80211_ATTR_SCAN_MIN_DWELL: Minimum scan dwell time (in TUs), u32
	attribute to setup minimum time to wait on each channel, if received
	at least one probe response during this period will continue waiting
	%NL80211_ATTR_SCAN_MAX_DWELL, otherwise will move to next channel.
 	This is optional attribute, so if it's not set driver should
	use hardware default values.
  NL80211_ATTR_SCAN_MAX_DWELL: Maximum scan dwell time (in TUs), u32
	attribute to setup maximum time to wait on each channel.
	This is optional attribute, so if it's not set driver should
	use hardware default values.
  NL80211_ATTR_SCAN_NUM_PROBE:  Attribute (u8) to setup number of probe
 	requests to transmit on each active scan channel, used with
	NL80211_CMD_TRIGGER_SCAN command.

These attributes are also required for the beacon reports in the
802.11k standard.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore: add support for dynamic scan configuration (INTERNAL)

Adding new scan setup parameters: min/max dwell time
and number of probe requests.
Default scan parameters will be used whenever user doesn't set
these new scan parameters during the scan.

Signed-off-by: Victor Goldenshtein <victorg@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>

Conflicts:

	drivers/net/wireless/ti/wl18xx/scan.c
mac80211: retry auth and assoc on error 17 (INTERNAL)

In some congested environments APs return
WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA on auth/assoc
attempt. Instead of failing immediately, retry again
in 200 msec.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
nl80211: support short and long interval in sched scan (INTERNAL)

Enable having a short interval for sched scan for a
given number of intervals and then switch to a longer interval.
Have sched scan users (ath6kl and wl12xx) use long_interval
field instead of just interval as a rename was needed.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>

Conflicts:

	drivers/net/wireless/ti/wl18xx/scan.c
wlcore: support short and long interval in sched scan (INTERNAL)

Configure sched scan in FW to use a short interval
for the first X cycles and the switch to a longer interval.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
nl/mac80211: add roaming capability event to API (INTERNAL)

Some drivers (e.g. wlcore) may want to notify
userspace that roaming is limited and that
background scan and roaming attempts can be stopped.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore: report roaming disabled when switching to multirole (INTERNAL)

In multirole single channel userspace should be notified
so that it can stop background scans and roaming attempts.
This is intended in order to prevent a roaming attempt
to a different channel and breaking another role active
an additional interface.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore: add counters with reasons for aggr packet sending (DEBUG)

Count the reasons that triggered us to send the buffer to the firmware
for transmission.  Count buffer_full, fw_buffer_full, other reasons
and no_data left to send.

This is useful when debugging throughput issues.

To have a better understanding of what is going on in the TX data
path, we can count the number of times we sent n packets.  For
example, if we sent 10 times aggregations of 2 packets, we print [2] =
10.

Instead of counting the reasons as an overall value, we count the
reasons for each number of packets used in the aggregation.

Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore: update debugfs for tx aggregation stats

Use allocated size for aggr_pkts_reason instead of define
WLCORE_AGGR_MAX_PACKETS.
[Is to be applied on top of wlcore/wl18xx/wl12xx: aggregation buffer size set
patch.]

Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wlcore: delete unused WL1271_AGGR_BUFFER_SIZE def

WL1271_AGGR_BUFFER_SIZE and WLCORE_AGGR_MAX_PACKETS unused defines are deleted,
aggr_buf_size from wl1271 structure is used instead. Spi driver is updated
to use aggr_buf_size also.

Signed-off-by: Igal Chernobelsky <igalc@ti.com>
wl18xx: handle dbg aggr size vs rate in a dedicated function (DEBUG)

Size of the output is approximately 2 pages. I am using seq_file API
to avoid overflow of the output buffer and ensure that all chars are
going through to the user space.

Signed-off-by: Arkady Miasnikov <a-miasnikov@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.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>