<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/net/mac80211/driver-ops.h, branch linux-4.4.y</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=linux-4.4.y</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=linux-4.4.y'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2019-04-27T07:34:02+00:00</updated>
<entry>
<title>mac80211: do not call driver wake_tx_queue op during reconfig</title>
<updated>2019-04-27T07:34:02+00:00</updated>
<author>
<name>Felix Fietkau</name>
<email>nbd@nbd.name</email>
</author>
<published>2019-03-01T13:48:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=9090d691a874f6b4bc8e20bcfc37b421683f60ee'/>
<id>urn:sha1:9090d691a874f6b4bc8e20bcfc37b421683f60ee</id>
<content type='text'>
commit 4856bfd230985e43e84c26473c91028ff0a533bd upstream.

There are several scenarios in which mac80211 can call drv_wake_tx_queue
after ieee80211_restart_hw has been called and has not yet completed.
Driver private structs are considered uninitialized until mac80211 has
uploaded the vifs, stations and keys again, so using private tx queue
data during that time is not safe.

The driver can also not rely on drv_reconfig_complete to figure out when
it is safe to accept drv_wake_tx_queue calls again, because it is only
called after all tx queues are woken again.

To fix this, bail out early in drv_wake_tx_queue if local-&gt;in_reconfig
is set.

Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>mac80211: pass block ack session timeout to to driver</title>
<updated>2017-05-20T12:27:03+00:00</updated>
<author>
<name>Sara Sharon</name>
<email>sarasharon1@gmail.com</email>
</author>
<published>2015-12-30T14:06:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=d13333edbcc7e931e63bd94feb7f81d7d990986a'/>
<id>urn:sha1:d13333edbcc7e931e63bd94feb7f81d7d990986a</id>
<content type='text'>
commit 50ea05efaf3bed7dd34bcc2635a8b3f53bd0ccc1 upstream.

Currently mac80211 does not inform the driver of the session
block ack timeout when starting a rx aggregation session.
Drivers that manage the reorder buffer need to know this
parameter.
Seeing that there are now too many arguments for the
drv_ampdu_action() function, wrap them inside a structure.

Signed-off-by: Sara Sharon &lt;sara.sharon@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Amit Pundir &lt;amit.pundir@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>mac80211: document sleep requirements for channel context ops</title>
<updated>2015-11-03T10:15:48+00:00</updated>
<author>
<name>Chaitanya T K</name>
<email>chaitanya.mgit@gmail.com</email>
</author>
<published>2015-10-30T17:46:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=dcae9e0203dfd887a7413cd38d1f87aaac1127f4'/>
<id>urn:sha1:dcae9e0203dfd887a7413cd38d1f87aaac1127f4</id>
<content type='text'>
Channel context driver operations can sleep, so add might_sleep()
and document this.

Signed-off-by: Chaitanya T K &lt;chaitanya.mgit@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: call drv_stop only if driver is started</title>
<updated>2015-11-03T09:41:12+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2015-10-25T08:59:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=968a76cef3d1bb9a3b4d135cd788056e742859f3'/>
<id>urn:sha1:968a76cef3d1bb9a3b4d135cd788056e742859f3</id>
<content type='text'>
If drv_start() fails during hw_restart, all the running
interfaces are being closed/stopped, which results in
drv_stop() being called, although the driver was never
started successfully.

This might cause drivers to perform operations on uninitialized
memory (as they assume it was initialized on drv_start)

Consider the local-&gt;started flag, and call the driver's stop()
op only if drv_start() succeeded before.

Move drv_start() and drv_stop() to driver-ops.c, as they are no
longer simple wrappers.

Signed-off-by: Eliad Peller &lt;eliadx.peller@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: Deinline drv_get/set/reset_tsf()</title>
<updated>2015-09-29T13:56:49+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>dvlasenk@redhat.com</email>
</author>
<published>2015-09-23T12:18:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=416eb9fc29469f036c85b412edf89774d6b34b0f'/>
<id>urn:sha1:416eb9fc29469f036c85b412edf89774d6b34b0f</id>
<content type='text'>
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os,
after deinlining these functions have sizes and callsite counts
as follows:

drv_get_tsf: 634 bytes, 6 calls
drv_set_tsf: 626 bytes, 2 calls
drv_reset_tsf: 617 bytes, 2 calls

Total size reduction is about 4.2 kbytes.

Signed-off-by: Denys Vlasenko &lt;dvlasenk@redhat.com&gt;
CC: Johannes Berg &lt;johannes.berg@intel.com&gt;
CC: John Linville &lt;linville@tuxdriver.com&gt;
CC: Michal Kazior &lt;michal.kazior@tieto.com&gt;
CC: linux-wireless@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: Deinline drv_ampdu_action()</title>
<updated>2015-09-29T13:56:49+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>dvlasenk@redhat.com</email>
</author>
<published>2015-09-23T12:18:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=6db96838971eb4c8ae6285795188f391e97d47c3'/>
<id>urn:sha1:6db96838971eb4c8ae6285795188f391e97d47c3</id>
<content type='text'>
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os,
after deinlining the function size is 755 bytes and there are
6 callsites.

Total size reduction is about 3.3 kbytes.

Signed-off-by: Denys Vlasenko &lt;dvlasenk@redhat.com&gt;
CC: Johannes Berg &lt;johannes.berg@intel.com&gt;
CC: John Linville &lt;linville@tuxdriver.com&gt;
CC: Michal Kazior &lt;michal.kazior@tieto.com&gt;
CC: linux-wireless@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: Deinline drv_switch_vif_chanctx()</title>
<updated>2015-09-29T13:56:48+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>dvlasenk@redhat.com</email>
</author>
<published>2015-09-23T12:18:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=42677ed33a8b6995e6af2ec15643840afcf1c48b'/>
<id>urn:sha1:42677ed33a8b6995e6af2ec15643840afcf1c48b</id>
<content type='text'>
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os,
after deinlining the function size is 821 bytes and there are
2 callsites, reducing code size by about 800 bytes.

Signed-off-by: Denys Vlasenko &lt;dvlasenk@redhat.com&gt;
CC: Johannes Berg &lt;johannes.berg@intel.com&gt;
CC: John Linville &lt;linville@tuxdriver.com&gt;
CC: Michal Kazior &lt;michal.kazior@tieto.com&gt;
CC: linux-wireless@vger.kernel.org
CC: linux-kernel@vger.kernel.org
[adjust code-style a bit]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: Deinline drv_add/remove/change_interface()</title>
<updated>2015-09-29T13:56:46+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>dvlasenk@redhat.com</email>
</author>
<published>2015-09-18T13:19:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=9aae296a6208188fb40da987efb6bcd92f4fb169'/>
<id>urn:sha1:9aae296a6208188fb40da987efb6bcd92f4fb169</id>
<content type='text'>
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os,
after deinlining these functions have sizes and callsite counts
as follows:

drv_add_interface: 638 bytes, 5 calls
drv_remove_interface: 611 bytes, 6 calls
drv_change_interface: 658 bytes, 1 call

Total size reduction is about 9 kbytes.

Signed-off-by: Denys Vlasenko &lt;dvlasenk@redhat.com&gt;
CC: John Linville &lt;linville@tuxdriver.com&gt;
CC: Michal Kazior &lt;michal.kazior@tieto.com&gt;
CC: Johannes Berg &lt;johannes.berg@intel.com&gt;
CC: linux-wireless@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: Deinline drv_sta_rc_update()</title>
<updated>2015-09-29T13:56:45+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>dvlasenk@redhat.com</email>
</author>
<published>2015-09-18T13:19:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4fbd572c29bd184146e8adf52631db193c4e34b9'/>
<id>urn:sha1:4fbd572c29bd184146e8adf52631db193c4e34b9</id>
<content type='text'>
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os,
after deinlining the function size is 706 bytes and there are
2 callsites, reducing code size by about 700 bytes.

Signed-off-by: Denys Vlasenko &lt;dvlasenk@redhat.com&gt;
CC: John Linville &lt;linville@tuxdriver.com&gt;
CC: Michal Kazior &lt;michal.kazior@tieto.com&gt;
CC: Johannes Berg &lt;johannes.berg@intel.com&gt;
CC: linux-wireless@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: Deinline drv_conf_tx()</title>
<updated>2015-09-29T13:56:45+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>dvlasenk@redhat.com</email>
</author>
<published>2015-09-18T13:19:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b23dcd4aca1854cda520def01731ad035cae94d8'/>
<id>urn:sha1:b23dcd4aca1854cda520def01731ad035cae94d8</id>
<content type='text'>
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os,
after deinlining the function size is 785 bytes and there are
7 callsites.

Total size reduction is about 3.5 kbytes.

Signed-off-by: Denys Vlasenko &lt;dvlasenk@redhat.com&gt;
CC: John Linville &lt;linville@tuxdriver.com&gt;
CC: Michal Kazior &lt;michal.kazior@tieto.com&gt;
CC: Johannes Berg &lt;johannes.berg@intel.com&gt;
CC: linux-wireless@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
</feed>
