freebsd-skq/sys
Adrian Chadd 545c886250 Fix some corner cases in the ieee80211_send_bar() handling.
* If the first call succeeded but failed to transmit, a timer would
  reschedule it via bar_timeout().  Unfortunately bar_timeout() didn't
  check the return value from the ieee80211_send_bar() reattempt and
  if that failed (eg the driver ic_raw_xmit() failed), it would never
  re-arm the timer.

* If BARPEND is cleared (which ieee80211_send_bar() will do if it can't
  TX), then re-arming the timer isn't enough - once bar_timeout() occurs,
  it'll see BARPEND is 0 and not run through the rest of the routine.
  So when rearming the timer, also set that flag.

* If the TX wasn't occuring, bar_tx_complete() wouldn't be called and the
  driver callback wouldn't be called either.  So the driver had no idea
  that the BAR TX attempt had failed.  In the ath(4) case, TX would stay
  paused.

  (There's no callback to indicate that BAR TX had failed or not;
  only a "BAR TX was attempted".  That's a separate, later problem.)

  So call the driver callback (ic_bar_response()) before the ADDBA session
  is torn down, so it has a chance of being notified that things didn't
  quite go to plan.

I've verified that yes, this does suspend traffic for ath(4), retry BAR
TX even if the driver is failing ic_raw_xmit(), and then eventually giving
up and sending a DELBA.  I'll address the "out of ath_buf" issue in ath(4)
in a subsequent commit - this commit just fixes the edge case where any
driver is (way) out of internal buffers/descriptors and fails frame TX.

PR:		kern/168170
Reviewed by:	bschmidt
MFC after:	1 month
2012-05-22 19:37:12 +00:00
..
amd64 Replace all uses of the vm page queues lock by a r/w lock that is private 2012-05-20 18:25:45 +00:00
arm Be a little less magical, not that these values are likely to change... 2012-05-21 07:47:57 +00:00
boot Divide nand flash for DB6281 into two partitions. One for u-boot 2012-05-22 09:27:57 +00:00
bsm
cam Add two functions xpt_batch_start() and xpt_batch_done() to the CAM SIM KPI 2012-05-12 13:55:36 +00:00
cddl Fix enforcement of file size limit with O_APPEND on ZFS. 2012-05-22 10:54:42 +00:00
compat - >500 static DTrace probes for the linuxulator 2012-05-05 19:42:38 +00:00
conf Add a new geom class which allows to divide NAND Flash chip 2012-05-22 08:33:14 +00:00
contrib Revert r234834 per luigi@ request. 2012-05-03 08:56:43 +00:00
crypto Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
ddb Update the ddb and gdb backends for the new 'trace_thread' hook. 2012-04-12 21:34:58 +00:00
dev Add the code for new Intel GPU driver, which supports GEM, KMS and 2012-05-22 11:07:44 +00:00
fs A problem with the NFSv4 server was reported by Andrew Leonard 2012-05-17 21:52:17 +00:00
gdb Update the ddb and gdb backends for the new 'trace_thread' hook. 2012-04-12 21:34:58 +00:00
geom Add a new geom class which allows to divide NAND Flash chip 2012-05-22 08:33:14 +00:00
gnu/fs Remove unused thread argument to vrecycle(). 2012-04-23 14:10:34 +00:00
i386 Remove cpususpend IDT vector for XEN. 2012-05-20 08:17:20 +00:00
ia64 Don't assume we have legacy PICs (i.e. 8259A in cascade) at the legacy 2012-05-04 23:16:29 +00:00
isa
kern Don't leak locks in prison_racct_modify(). 2012-05-22 17:30:02 +00:00
kgssapi
libkern Use strcmp that I replaced by accident. 2012-05-21 02:45:47 +00:00
mips Enable the AR8316 switch on the routerstation pro board. 2012-05-19 20:11:18 +00:00
modules A rewrite of the i810 bits of the agp(4) driver. New driver supports 2012-05-22 10:59:26 +00:00
net Make most BPF ioctls() SMP-safe. 2012-05-21 22:21:00 +00:00
net80211 Fix some corner cases in the ieee80211_send_bar() handling. 2012-05-22 19:37:12 +00:00
netatalk Fix typos 2012-02-28 15:07:05 +00:00
netgraph Fix panic in ng_patch(4) caused by checksum flags being added to mbuf flags. 2012-04-22 17:00:52 +00:00
netinet Remove unused inclusion of curses.h 2012-05-19 05:14:24 +00:00
netinet6 Rewrite nd6_sysctl_{d,p}rlist() to avoid misaligned accesses to char arrays 2012-05-20 05:12:31 +00:00
netipsec Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
netipx
netnatm
netncp
netsmb
nfs Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
nfsclient PR# 165923 reported intermittent write failures for dirty 2012-05-12 12:02:51 +00:00
nfsserver
nlm jwd@ reported a problem via email to freebsd-fs@ on Aug 25, 2011 2012-01-31 02:11:05 +00:00
ofed Revert r234834 per luigi@ request. 2012-05-03 08:56:43 +00:00
opencrypto
pc98 Add SMP/i386 suspend/resume support. 2012-05-18 18:55:58 +00:00
pci intpm: add ATI IXP400 pci id 2012-04-16 10:33:46 +00:00
powerpc Replace the list of PVOs owned by each PMAP with an RB tree. This simplifies 2012-05-20 14:33:28 +00:00
rpc
security Check vplabel for NULL before dereferencing it. Fixes a panic 2012-05-03 15:51:34 +00:00
sparc64 Fix mismerge in r235231. 2012-05-10 15:23:20 +00:00
sys Bump __FreeBSD_version for the byacc import, and update _bootstrap_tools. 2012-05-22 15:59:07 +00:00
teken
tools Make vnode_if.awk parse vnode operations with underscores, like VOP_FOO_BAR. 2012-02-21 19:35:59 +00:00
ufs Add missing `continue' statement at end of case. 2012-05-18 15:20:21 +00:00
vm Fix booting on ARM. 2012-05-22 07:04:23 +00:00
x86 Don't expose i386-only ptrace constants on amd64. This broke gdb with 2012-05-17 20:21:55 +00:00
xdr
xen blkif interface comment cleanups. No functional changes 2012-02-29 17:47:01 +00:00
Makefile Add sys/ofed to the 'make cscope' target. 2012-03-20 18:05:15 +00:00