On 2011-08-10 2:02 PM, Johannes Berg wrote:
On Wed, 2011-08-10 at 13:45 -0600, Felix Fietkau wrote:
To properly maintain the peer's block ack window, the driver needs to be
able to control the new starting sequence number that is sent along with
the BlockAckReq frame.
I guess with the ath9k patch I understand ... I believe iwlwifi
processes all of the TX status and only sets the BAR flag on the last
one?
+/**
+ * ieee80211_send_bar - send a BlockAckReq frame
+ *
+ * can be used to flush pending frames from the peer's aggregation reorder
+ * buffer.
+ *
+ * @vif:&struct ieee80211_vif pointer from the add_interface callback.
+ * @ra: the peer's destination address
+ * @tid: the TID of the aggregation session
+ * @ssn: the new starting sequence number for the receiver
+ */
+void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn);
You might want to note the locking rules, it's a little strange here
since it calls right back into the driver's tx(). Though of course the
same also happens with tx_status(), it might be less expected here,
especially if you use tx_status_irqsafe() and this doesn't yet have an
irqsafe version.
I think it's not that important, so if you want to avoid adding a new
API, I can also make a simple ath9k patch that reduces the number of
BARs sent.
- Felix
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html