Merge tag 'master-2014-10-30' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
John W. Linville says: ==================== pull request: wireless 2014-10-31 Please pull this small batch of spooky fixes intended for the 3.18 stream...boo! Cyril Brulebois adds an rt2x00 device ID. Dan Carpenter provides a one-line masking fix for an ath9k debugfs entry. Larry Finger gives us a package of small rtlwifi fixes which add some bits that were left out of some feature updates that were included in the merge window. Hopefully this isn't a sign that the rtlwifi base is getting too big... Marc Yang brings a fix for a temporary mwifiex stall when doing 11n RX reordering. Please let me know if there are problems! ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
99a49ce613
14 changed files with 67 additions and 32 deletions
|
@ -455,7 +455,7 @@ static ssize_t read_file_dma(struct file *file, char __user *user_buf,
|
||||||
"%2d %2x %1x %2x %2x\n",
|
"%2d %2x %1x %2x %2x\n",
|
||||||
i, (*qcuBase & (0x7 << qcuOffset)) >> qcuOffset,
|
i, (*qcuBase & (0x7 << qcuOffset)) >> qcuOffset,
|
||||||
(*qcuBase & (0x8 << qcuOffset)) >> (qcuOffset + 3),
|
(*qcuBase & (0x8 << qcuOffset)) >> (qcuOffset + 3),
|
||||||
val[2] & (0x7 << (i * 3)) >> (i * 3),
|
(val[2] & (0x7 << (i * 3))) >> (i * 3),
|
||||||
(*dcuBase & (0x1f << dcuOffset)) >> dcuOffset);
|
(*dcuBase & (0x1f << dcuOffset)) >> dcuOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -196,6 +196,7 @@ mwifiex_del_rx_reorder_entry(struct mwifiex_private *priv,
|
||||||
mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, start_win);
|
mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, start_win);
|
||||||
|
|
||||||
del_timer_sync(&tbl->timer_context.timer);
|
del_timer_sync(&tbl->timer_context.timer);
|
||||||
|
tbl->timer_context.timer_is_set = false;
|
||||||
|
|
||||||
spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
|
spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
|
||||||
list_del(&tbl->list);
|
list_del(&tbl->list);
|
||||||
|
@ -297,6 +298,7 @@ mwifiex_flush_data(unsigned long context)
|
||||||
(struct reorder_tmr_cnxt *) context;
|
(struct reorder_tmr_cnxt *) context;
|
||||||
int start_win, seq_num;
|
int start_win, seq_num;
|
||||||
|
|
||||||
|
ctx->timer_is_set = false;
|
||||||
seq_num = mwifiex_11n_find_last_seq_num(ctx);
|
seq_num = mwifiex_11n_find_last_seq_num(ctx);
|
||||||
|
|
||||||
if (seq_num < 0)
|
if (seq_num < 0)
|
||||||
|
@ -385,6 +387,7 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
|
||||||
|
|
||||||
new_node->timer_context.ptr = new_node;
|
new_node->timer_context.ptr = new_node;
|
||||||
new_node->timer_context.priv = priv;
|
new_node->timer_context.priv = priv;
|
||||||
|
new_node->timer_context.timer_is_set = false;
|
||||||
|
|
||||||
init_timer(&new_node->timer_context.timer);
|
init_timer(&new_node->timer_context.timer);
|
||||||
new_node->timer_context.timer.function = mwifiex_flush_data;
|
new_node->timer_context.timer.function = mwifiex_flush_data;
|
||||||
|
@ -399,6 +402,22 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
|
||||||
spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
|
spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mwifiex_11n_rxreorder_timer_restart(struct mwifiex_rx_reorder_tbl *tbl)
|
||||||
|
{
|
||||||
|
u32 min_flush_time;
|
||||||
|
|
||||||
|
if (tbl->win_size >= MWIFIEX_BA_WIN_SIZE_32)
|
||||||
|
min_flush_time = MIN_FLUSH_TIMER_15_MS;
|
||||||
|
else
|
||||||
|
min_flush_time = MIN_FLUSH_TIMER_MS;
|
||||||
|
|
||||||
|
mod_timer(&tbl->timer_context.timer,
|
||||||
|
jiffies + msecs_to_jiffies(min_flush_time * tbl->win_size));
|
||||||
|
|
||||||
|
tbl->timer_context.timer_is_set = true;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function prepares command for adding a BA request.
|
* This function prepares command for adding a BA request.
|
||||||
*
|
*
|
||||||
|
@ -523,31 +542,31 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
|
||||||
u8 *ta, u8 pkt_type, void *payload)
|
u8 *ta, u8 pkt_type, void *payload)
|
||||||
{
|
{
|
||||||
struct mwifiex_rx_reorder_tbl *tbl;
|
struct mwifiex_rx_reorder_tbl *tbl;
|
||||||
int start_win, end_win, win_size;
|
int prev_start_win, start_win, end_win, win_size;
|
||||||
u16 pkt_index;
|
u16 pkt_index;
|
||||||
bool init_window_shift = false;
|
bool init_window_shift = false;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, ta);
|
tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, ta);
|
||||||
if (!tbl) {
|
if (!tbl) {
|
||||||
if (pkt_type != PKT_TYPE_BAR)
|
if (pkt_type != PKT_TYPE_BAR)
|
||||||
mwifiex_11n_dispatch_pkt(priv, payload);
|
mwifiex_11n_dispatch_pkt(priv, payload);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pkt_type == PKT_TYPE_AMSDU) && !tbl->amsdu) {
|
if ((pkt_type == PKT_TYPE_AMSDU) && !tbl->amsdu) {
|
||||||
mwifiex_11n_dispatch_pkt(priv, payload);
|
mwifiex_11n_dispatch_pkt(priv, payload);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
start_win = tbl->start_win;
|
start_win = tbl->start_win;
|
||||||
|
prev_start_win = start_win;
|
||||||
win_size = tbl->win_size;
|
win_size = tbl->win_size;
|
||||||
end_win = ((start_win + win_size) - 1) & (MAX_TID_VALUE - 1);
|
end_win = ((start_win + win_size) - 1) & (MAX_TID_VALUE - 1);
|
||||||
if (tbl->flags & RXREOR_INIT_WINDOW_SHIFT) {
|
if (tbl->flags & RXREOR_INIT_WINDOW_SHIFT) {
|
||||||
init_window_shift = true;
|
init_window_shift = true;
|
||||||
tbl->flags &= ~RXREOR_INIT_WINDOW_SHIFT;
|
tbl->flags &= ~RXREOR_INIT_WINDOW_SHIFT;
|
||||||
}
|
}
|
||||||
mod_timer(&tbl->timer_context.timer,
|
|
||||||
jiffies + msecs_to_jiffies(MIN_FLUSH_TIMER_MS * win_size));
|
|
||||||
|
|
||||||
if (tbl->flags & RXREOR_FORCE_NO_DROP) {
|
if (tbl->flags & RXREOR_FORCE_NO_DROP) {
|
||||||
dev_dbg(priv->adapter->dev,
|
dev_dbg(priv->adapter->dev,
|
||||||
|
@ -568,11 +587,14 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
|
||||||
if ((start_win + TWOPOW11) > (MAX_TID_VALUE - 1)) {
|
if ((start_win + TWOPOW11) > (MAX_TID_VALUE - 1)) {
|
||||||
if (seq_num >= ((start_win + TWOPOW11) &
|
if (seq_num >= ((start_win + TWOPOW11) &
|
||||||
(MAX_TID_VALUE - 1)) &&
|
(MAX_TID_VALUE - 1)) &&
|
||||||
seq_num < start_win)
|
seq_num < start_win) {
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
} else if ((seq_num < start_win) ||
|
} else if ((seq_num < start_win) ||
|
||||||
(seq_num > (start_win + TWOPOW11))) {
|
(seq_num >= (start_win + TWOPOW11))) {
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,8 +623,10 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
|
||||||
else
|
else
|
||||||
pkt_index = (seq_num+MAX_TID_VALUE) - start_win;
|
pkt_index = (seq_num+MAX_TID_VALUE) - start_win;
|
||||||
|
|
||||||
if (tbl->rx_reorder_ptr[pkt_index])
|
if (tbl->rx_reorder_ptr[pkt_index]) {
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
tbl->rx_reorder_ptr[pkt_index] = payload;
|
tbl->rx_reorder_ptr[pkt_index] = payload;
|
||||||
}
|
}
|
||||||
|
@ -613,7 +637,11 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
|
||||||
*/
|
*/
|
||||||
mwifiex_11n_scan_and_dispatch(priv, tbl);
|
mwifiex_11n_scan_and_dispatch(priv, tbl);
|
||||||
|
|
||||||
return 0;
|
done:
|
||||||
|
if (!tbl->timer_context.timer_is_set ||
|
||||||
|
prev_start_win != tbl->start_win)
|
||||||
|
mwifiex_11n_rxreorder_timer_restart(tbl);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#define _MWIFIEX_11N_RXREORDER_H_
|
#define _MWIFIEX_11N_RXREORDER_H_
|
||||||
|
|
||||||
#define MIN_FLUSH_TIMER_MS 50
|
#define MIN_FLUSH_TIMER_MS 50
|
||||||
|
#define MIN_FLUSH_TIMER_15_MS 15
|
||||||
|
#define MWIFIEX_BA_WIN_SIZE_32 32
|
||||||
|
|
||||||
#define PKT_TYPE_BAR 0xE7
|
#define PKT_TYPE_BAR 0xE7
|
||||||
#define MAX_TID_VALUE (2 << 11)
|
#define MAX_TID_VALUE (2 << 11)
|
||||||
|
|
|
@ -592,6 +592,7 @@ struct reorder_tmr_cnxt {
|
||||||
struct timer_list timer;
|
struct timer_list timer;
|
||||||
struct mwifiex_rx_reorder_tbl *ptr;
|
struct mwifiex_rx_reorder_tbl *ptr;
|
||||||
struct mwifiex_private *priv;
|
struct mwifiex_private *priv;
|
||||||
|
u8 timer_is_set;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mwifiex_rx_reorder_tbl {
|
struct mwifiex_rx_reorder_tbl {
|
||||||
|
|
|
@ -1111,6 +1111,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
|
||||||
/* Ovislink */
|
/* Ovislink */
|
||||||
{ USB_DEVICE(0x1b75, 0x3071) },
|
{ USB_DEVICE(0x1b75, 0x3071) },
|
||||||
{ USB_DEVICE(0x1b75, 0x3072) },
|
{ USB_DEVICE(0x1b75, 0x3072) },
|
||||||
|
{ USB_DEVICE(0x1b75, 0xa200) },
|
||||||
/* Para */
|
/* Para */
|
||||||
{ USB_DEVICE(0x20b8, 0x8888) },
|
{ USB_DEVICE(0x20b8, 0x8888) },
|
||||||
/* Pegatron */
|
/* Pegatron */
|
||||||
|
|
|
@ -1828,3 +1828,9 @@ const struct ieee80211_ops rtl_ops = {
|
||||||
.flush = rtl_op_flush,
|
.flush = rtl_op_flush,
|
||||||
};
|
};
|
||||||
EXPORT_SYMBOL_GPL(rtl_ops);
|
EXPORT_SYMBOL_GPL(rtl_ops);
|
||||||
|
|
||||||
|
bool rtl_btc_status_false(void)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(rtl_btc_status_false);
|
||||||
|
|
|
@ -42,5 +42,6 @@ void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr,
|
||||||
u32 mask, u32 data);
|
u32 mask, u32 data);
|
||||||
void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data);
|
void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data);
|
||||||
bool rtl_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb);
|
bool rtl_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb);
|
||||||
|
bool rtl_btc_status_false(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -114,6 +114,8 @@
|
||||||
LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4)
|
LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4)
|
||||||
#define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \
|
#define GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr) \
|
||||||
LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12)
|
LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12)
|
||||||
|
#define GET_RX_STATUS_DESC_BUFF_ADDR(__pdesc) \
|
||||||
|
SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32)
|
||||||
|
|
||||||
#define CHIP_VER_B BIT(4)
|
#define CHIP_VER_B BIT(4)
|
||||||
#define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3)
|
#define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3)
|
||||||
|
|
|
@ -244,6 +244,7 @@ static struct rtl_hal_ops rtl8192ce_hal_ops = {
|
||||||
.phy_lc_calibrate = _rtl92ce_phy_lc_calibrate,
|
.phy_lc_calibrate = _rtl92ce_phy_lc_calibrate,
|
||||||
.phy_set_bw_mode_callback = rtl92ce_phy_set_bw_mode_callback,
|
.phy_set_bw_mode_callback = rtl92ce_phy_set_bw_mode_callback,
|
||||||
.dm_dynamic_txpower = rtl92ce_dm_dynamic_txpower,
|
.dm_dynamic_txpower = rtl92ce_dm_dynamic_txpower,
|
||||||
|
.get_btc_status = rtl_btc_status_false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct rtl_mod_params rtl92ce_mod_params = {
|
static struct rtl_mod_params rtl92ce_mod_params = {
|
||||||
|
|
|
@ -728,6 +728,9 @@ u32 rtl92ce_get_desc(u8 *p_desc, bool istx, u8 desc_name)
|
||||||
case HW_DESC_RXPKT_LEN:
|
case HW_DESC_RXPKT_LEN:
|
||||||
ret = GET_RX_DESC_PKT_LEN(pdesc);
|
ret = GET_RX_DESC_PKT_LEN(pdesc);
|
||||||
break;
|
break;
|
||||||
|
case HW_DESC_RXBUFF_ADDR:
|
||||||
|
ret = GET_RX_STATUS_DESC_BUFF_ADDR(pdesc);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
RT_ASSERT(false, "ERR rxdesc :%d not process\n",
|
RT_ASSERT(false, "ERR rxdesc :%d not process\n",
|
||||||
desc_name);
|
desc_name);
|
||||||
|
|
|
@ -251,6 +251,7 @@ static struct rtl_hal_ops rtl8192de_hal_ops = {
|
||||||
.get_rfreg = rtl92d_phy_query_rf_reg,
|
.get_rfreg = rtl92d_phy_query_rf_reg,
|
||||||
.set_rfreg = rtl92d_phy_set_rf_reg,
|
.set_rfreg = rtl92d_phy_set_rf_reg,
|
||||||
.linked_set_reg = rtl92d_linked_set_reg,
|
.linked_set_reg = rtl92d_linked_set_reg,
|
||||||
|
.get_btc_status = rtl_btc_status_false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct rtl_mod_params rtl92de_mod_params = {
|
static struct rtl_mod_params rtl92de_mod_params = {
|
||||||
|
|
|
@ -446,6 +446,8 @@
|
||||||
/* DWORD 6 */
|
/* DWORD 6 */
|
||||||
#define SET_RX_STATUS__DESC_BUFF_ADDR(__pdesc, __val) \
|
#define SET_RX_STATUS__DESC_BUFF_ADDR(__pdesc, __val) \
|
||||||
SET_BITS_OFFSET_LE(__pdesc + 24, 0, 32, __val)
|
SET_BITS_OFFSET_LE(__pdesc + 24, 0, 32, __val)
|
||||||
|
#define GET_RX_STATUS_DESC_BUFF_ADDR(__pdesc) \
|
||||||
|
SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32)
|
||||||
|
|
||||||
#define SE_RX_HAL_IS_CCK_RATE(_pdesc)\
|
#define SE_RX_HAL_IS_CCK_RATE(_pdesc)\
|
||||||
(GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE1M || \
|
(GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE1M || \
|
||||||
|
|
|
@ -87,11 +87,8 @@ static void rtl92s_init_aspm_vars(struct ieee80211_hw *hw)
|
||||||
static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
|
static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
|
||||||
{
|
{
|
||||||
struct ieee80211_hw *hw = context;
|
struct ieee80211_hw *hw = context;
|
||||||
struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
|
|
||||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||||
struct rtl_pci *rtlpci = rtl_pcidev(pcipriv);
|
|
||||||
struct rt_firmware *pfirmware = NULL;
|
struct rt_firmware *pfirmware = NULL;
|
||||||
int err;
|
|
||||||
|
|
||||||
RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
|
RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
|
||||||
"Firmware callback routine entered!\n");
|
"Firmware callback routine entered!\n");
|
||||||
|
@ -112,20 +109,6 @@ static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
|
||||||
memcpy(pfirmware->sz_fw_tmpbuffer, firmware->data, firmware->size);
|
memcpy(pfirmware->sz_fw_tmpbuffer, firmware->data, firmware->size);
|
||||||
pfirmware->sz_fw_tmpbufferlen = firmware->size;
|
pfirmware->sz_fw_tmpbufferlen = firmware->size;
|
||||||
release_firmware(firmware);
|
release_firmware(firmware);
|
||||||
|
|
||||||
err = ieee80211_register_hw(hw);
|
|
||||||
if (err) {
|
|
||||||
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
|
|
||||||
"Can't register mac80211 hw\n");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
rtlpriv->mac80211.mac80211_registered = 1;
|
|
||||||
}
|
|
||||||
rtlpci->irq_alloc = 1;
|
|
||||||
set_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status);
|
|
||||||
|
|
||||||
/*init rfkill */
|
|
||||||
rtl_init_rfkill(hw);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)
|
static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)
|
||||||
|
@ -226,8 +209,8 @@ static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)
|
||||||
if (!rtlpriv->rtlhal.pfirmware)
|
if (!rtlpriv->rtlhal.pfirmware)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
rtlpriv->max_fw_size = RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE;
|
rtlpriv->max_fw_size = RTL8190_MAX_FIRMWARE_CODE_SIZE*2 +
|
||||||
|
sizeof(struct fw_hdr);
|
||||||
pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"
|
pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"
|
||||||
"Loading firmware %s\n", rtlpriv->cfg->fw_name);
|
"Loading firmware %s\n", rtlpriv->cfg->fw_name);
|
||||||
/* request fw */
|
/* request fw */
|
||||||
|
@ -294,6 +277,7 @@ static struct rtl_hal_ops rtl8192se_hal_ops = {
|
||||||
.set_bbreg = rtl92s_phy_set_bb_reg,
|
.set_bbreg = rtl92s_phy_set_bb_reg,
|
||||||
.get_rfreg = rtl92s_phy_query_rf_reg,
|
.get_rfreg = rtl92s_phy_query_rf_reg,
|
||||||
.set_rfreg = rtl92s_phy_set_rf_reg,
|
.set_rfreg = rtl92s_phy_set_rf_reg,
|
||||||
|
.get_btc_status = rtl_btc_status_false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct rtl_mod_params rtl92se_mod_params = {
|
static struct rtl_mod_params rtl92se_mod_params = {
|
||||||
|
|
|
@ -640,6 +640,9 @@ u32 rtl92se_get_desc(u8 *desc, bool istx, u8 desc_name)
|
||||||
case HW_DESC_RXPKT_LEN:
|
case HW_DESC_RXPKT_LEN:
|
||||||
ret = GET_RX_STATUS_DESC_PKT_LEN(desc);
|
ret = GET_RX_STATUS_DESC_PKT_LEN(desc);
|
||||||
break;
|
break;
|
||||||
|
case HW_DESC_RXBUFF_ADDR:
|
||||||
|
ret = GET_RX_STATUS_DESC_BUFF_ADDR(desc);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
RT_ASSERT(false, "ERR rxdesc :%d not process\n",
|
RT_ASSERT(false, "ERR rxdesc :%d not process\n",
|
||||||
desc_name);
|
desc_name);
|
||||||
|
|
Loading…
Add table
Reference in a new issue