FreeBSD/sys/dev/iwn/if_iwn.c
/*
 * This function is called by upper layer on teardown of an HT-immediate
 * Block Ack agreement (eg. uppon receipt of a DELBA frame).
 */
This function is called by upper layer on teardown of an HT-immediate
Block Ack agreement .
This function is called by upper layer on teardown of an HT - immediate Block Ack agreement .
static void
iwn_ampdu_rx_stop(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
{
	struct ieee80211com *ic = ni->ni_ic;
	struct iwn_softc *sc = ic->ic_softc;
	struct iwn_ops *ops = &sc->ops;
	struct iwn_node *wn = (void *)ni;
	struct iwn_node_info node;
	uint8_t tid;
	DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__);
	for (tid = 0; tid < WME_NUM_TID; tid++) {
		if (&ni->ni_rx_ampdu[tid] == rap)
			break;
	}
	memset(&node, 0, sizeof node);
	node.id = wn->id;
	node.control = IWN_NODE_UPDATE;
	node.flags = IWN_FLAG_SET_DELBA;
	node.delba_tid = tid;
	DPRINTF(sc, IWN_DEBUG_RECV, "DELBA RA=%d TID=%d\n", wn->id, tid);
	(void)ops->add_node(sc, &node, 1);
	sc->sc_ampdu_rx_stop(ni, rap);
}
static void iwn_ampdu_rx_stop ( struct ieee80211_node * ni , struct ieee80211_rx_ampdu * rap ) { struct ieee80211com * ic = ni -> ni_ic ; struct iwn_softc * sc = ic -> ic_softc ; struct iwn_ops * ops = & sc -> ops ; struct iwn_node * wn = ( void * ) ni ; struct iwn_node_info node ; uint8_t tid ; DPRINTF ( sc , IWN_DEBUG_TRACE , " \n " , __func__ ) ; for ( tid = 0 ; tid < WME_NUM_TID ; tid ++ ) { if ( & ni -> ni_rx_ampdu [ tid ] == rap ) break ; } memset ( & node , 0 , sizeof node ) ; node . id = wn -> id ; node . control = IWN_NODE_UPDATE ; node . flags = IWN_FLAG_SET_DELBA ; node . delba_tid = tid ; DPRINTF ( sc , IWN_DEBUG_RECV , " \n " , wn -> id , tid ) ; ( void ) ops -> add_node ( sc , & node , 1 ) ; sc -> sc_ampdu_rx_stop ( ni , rap ) ; }
This function is called by upper layer on teardown of an HT-immediate
 Block Ack agreement (eg.
This function is called by upper layer on teardown of an HT - immediate Block Ack agreement ( eg .
/* XXX: tid as an argument */