Example #1
0
static int rtl_op_ampdu_action(struct ieee80211_hw *hw,
			       struct ieee80211_vif *vif,
			       enum ieee80211_ampdu_mlme_action action,
			       struct ieee80211_sta *sta, u16 tid, u16 * ssn
/*<delete in kernel start>*/
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
/*<delete in kernel end>*/
			       ,u8 buf_size
/*<delete in kernel start>*/
#endif
/*<delete in kernel end>*/
			       )
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);

	switch (action) {
	case IEEE80211_AMPDU_TX_START:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_TX_START: TID:%d\n", tid));
		return rtl_tx_agg_start(hw, vif, sta, tid, ssn);
		break;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
	case IEEE80211_AMPDU_TX_STOP_CONT:		/*added by binxia*/
	case IEEE80211_AMPDU_TX_STOP_FLUSH:
	case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
#else
	case IEEE80211_AMPDU_TX_STOP:
#endif
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_TX_STOP: TID:%d\n", tid));
		return rtl_tx_agg_stop(hw, vif, sta, tid);
		break;
	case IEEE80211_AMPDU_TX_OPERATIONAL:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_TX_OPERATIONAL:TID:%d\n", tid));
		rtl_tx_agg_oper(hw, sta, tid);
		break;
	case IEEE80211_AMPDU_RX_START:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_RX_START:TID:%d\n", tid));
		return rtl_rx_agg_start(hw, sta, tid);
		break;
	case IEEE80211_AMPDU_RX_STOP:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_RX_STOP:TID:%d\n", tid));
		return rtl_rx_agg_stop(hw, sta, tid);
		break;
	default:
		RT_TRACE(COMP_ERR, DBG_EMERG,
			 ("IEEE80211_AMPDU_ERR!!!!:\n"));
		return -EOPNOTSUPP;
	}
	return 0;
}
Example #2
0
static int rtl_op_ampdu_action(struct ieee80211_hw *hw,
			       struct ieee80211_vif *vif,
			       enum ieee80211_ampdu_mlme_action action,
			       struct ieee80211_sta *sta, u16 tid, u16 * ssn
			       ,u8 buf_size
			       )
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);

	switch (action) {
	case IEEE80211_AMPDU_TX_START:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_TX_START: TID:%d\n", tid));
		return rtl_tx_agg_start(hw, vif, sta, tid, ssn);
		break;
	case IEEE80211_AMPDU_TX_STOP_CONT:
	case IEEE80211_AMPDU_TX_STOP_FLUSH:
	case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_TX_STOP: TID:%d\n", tid));
		return rtl_tx_agg_stop(hw, vif, sta, tid);
		break;
	case IEEE80211_AMPDU_TX_OPERATIONAL:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_TX_OPERATIONAL:TID:%d\n", tid));
		rtl_tx_agg_oper(hw, sta, tid);
		break;
	case IEEE80211_AMPDU_RX_START:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_RX_START:TID:%d\n", tid));
		return rtl_rx_agg_start(hw, sta, tid);
		break;
	case IEEE80211_AMPDU_RX_STOP:
		RT_TRACE(COMP_MAC80211, DBG_TRACE,
			 ("IEEE80211_AMPDU_RX_STOP:TID:%d\n", tid));
		return rtl_rx_agg_stop(hw, sta, tid);
		break;
	default:
		RT_TRACE(COMP_ERR, DBG_EMERG,
			 ("IEEE80211_AMPDU_ERR!!!!:\n"));
		return -EOPNOTSUPP;
	}
	return 0;
}