Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: net/bluetooth/l2cap_core.c
This commit is contained in:
@@ -1595,6 +1595,8 @@ static void sctp_check_transmitted(struct sctp_outq *q,
|
||||
#endif /* SCTP_DEBUG */
|
||||
if (transport) {
|
||||
if (bytes_acked) {
|
||||
struct sctp_association *asoc = transport->asoc;
|
||||
|
||||
/* We may have counted DATA that was migrated
|
||||
* to this transport due to DEL-IP operation.
|
||||
* Subtract those bytes, since the were never
|
||||
@@ -1613,6 +1615,17 @@ static void sctp_check_transmitted(struct sctp_outq *q,
|
||||
transport->error_count = 0;
|
||||
transport->asoc->overall_error_count = 0;
|
||||
|
||||
/*
|
||||
* While in SHUTDOWN PENDING, we may have started
|
||||
* the T5 shutdown guard timer after reaching the
|
||||
* retransmission limit. Stop that timer as soon
|
||||
* as the receiver acknowledged any data.
|
||||
*/
|
||||
if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING &&
|
||||
del_timer(&asoc->timers
|
||||
[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]))
|
||||
sctp_association_put(asoc);
|
||||
|
||||
/* Mark the destination transport address as
|
||||
* active if it is not so marked.
|
||||
*/
|
||||
@@ -1642,10 +1655,15 @@ static void sctp_check_transmitted(struct sctp_outq *q,
|
||||
* A sender is doing zero window probing when the
|
||||
* receiver's advertised window is zero, and there is
|
||||
* only one data chunk in flight to the receiver.
|
||||
*
|
||||
* Allow the association to timeout while in SHUTDOWN
|
||||
* PENDING or SHUTDOWN RECEIVED in case the receiver
|
||||
* stays in zero window mode forever.
|
||||
*/
|
||||
if (!q->asoc->peer.rwnd &&
|
||||
!list_empty(&tlist) &&
|
||||
(sack_ctsn+2 == q->asoc->next_tsn)) {
|
||||
(sack_ctsn+2 == q->asoc->next_tsn) &&
|
||||
q->asoc->state < SCTP_STATE_SHUTDOWN_PENDING) {
|
||||
SCTP_DEBUG_PRINTK("%s: SACK received for zero "
|
||||
"window probe: %u\n",
|
||||
__func__, sack_ctsn);
|
||||
|
Reference in New Issue
Block a user