Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit daf026ae authored by Ping-Ke Shih's avatar Ping-Ke Shih Committed by Kalle Valo
Browse files

rtlwifi: remove duplicate C2H handler



Merge duplicate C2H handler and implement the handler in base.c.

Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 16cefa44
Loading
Loading
Loading
Loading
+72 −0
Original line number Diff line number Diff line
@@ -2306,6 +2306,78 @@ void rtl_c2hcmd_enqueue(struct ieee80211_hw *hw, u8 tag, u8 len, u8 *val)
}
EXPORT_SYMBOL(rtl_c2hcmd_enqueue);

void rtl_c2h_content_parsing(struct ieee80211_hw *hw, u8 cmd_id,
			     u8 cmd_len, u8 *cmd_buf)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
	struct rtl_hal_ops *hal_ops = rtlpriv->cfg->ops;
	const struct rtl_btc_ops *btc_ops = rtlpriv->btcoexist.btc_ops;

	switch (cmd_id) {
	case C2H_DBG:
		RT_TRACE(rtlpriv, COMP_FW, DBG_LOUD, "[C2H], C2H_DBG!!\n");
		break;
	case C2H_TXBF:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_TXBF!!\n");
		break;
	case C2H_TX_REPORT:
		rtl_tx_report_handler(hw, cmd_buf, cmd_len);
		break;
	case C2H_RA_RPT:
		if (hal_ops->c2h_ra_report_handler)
			hal_ops->c2h_ra_report_handler(hw, cmd_buf, cmd_len);
		break;
	case C2H_BT_INFO:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_BT_INFO!!\n");
		if (rtlpriv->cfg->ops->get_btc_status())
			btc_ops->btc_btinfo_notify(rtlpriv, cmd_buf, cmd_len);
		break;
	case C2H_BT_MP:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_BT_MP!!\n");
		if (rtlpriv->cfg->ops->get_btc_status())
			btc_ops->btc_btmpinfo_notify(rtlpriv, cmd_buf, cmd_len);
		break;
	default:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], Unknown packet!! cmd_id(%#X)!\n", cmd_id);
		break;
	}
}
EXPORT_SYMBOL_GPL(rtl_c2h_content_parsing);

void rtl_c2h_packet_handler(struct ieee80211_hw *hw, u8 *buffer, u8 len)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
	u8 c2h_cmd_id = 0, c2h_cmd_seq = 0, c2h_cmd_len = 0;
	u8 *tmp_buf = NULL;

	c2h_cmd_id = buffer[0];
	c2h_cmd_seq = buffer[1];
	c2h_cmd_len = len - 2;
	tmp_buf = buffer + 2;

	RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
		 "[C2H packet], c2hCmdId=0x%x, c2hCmdSeq=0x%x, c2hCmdLen=%d\n",
		 c2h_cmd_id, c2h_cmd_seq, c2h_cmd_len);

	RT_PRINT_DATA(rtlpriv, COMP_FW, DBG_TRACE,
		      "[C2H packet], Content Hex:\n", tmp_buf, c2h_cmd_len);

	switch (c2h_cmd_id) {
	case C2H_BT_INFO:
	case C2H_BT_MP:
		rtl_c2hcmd_enqueue(hw, c2h_cmd_id, c2h_cmd_len, tmp_buf);
		break;
	default:
		rtl_c2h_content_parsing(hw, c2h_cmd_id, c2h_cmd_len, tmp_buf);
		break;
	}
}
EXPORT_SYMBOL_GPL(rtl_c2h_packet_handler);

void rtl_c2hcmd_launcher(struct ieee80211_hw *hw, int exec)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
+3 −0
Original line number Diff line number Diff line
@@ -162,6 +162,9 @@ void rtl_fwevt_wq_callback(void *data);
void rtl_c2hcmd_wq_callback(void *data);
void rtl_c2hcmd_launcher(struct ieee80211_hw *hw, int exec);
void rtl_c2hcmd_enqueue(struct ieee80211_hw *hw, u8 tag, u8 len, u8 *val);
void rtl_c2h_content_parsing(struct ieee80211_hw *hw, u8 c2h_cmd_id,
			     u8 c2h_cmd_len, u8 *tmp_buf);
void rtl_c2h_packet_handler(struct ieee80211_hw *hw, u8 *buffer, u8 len);

u8 rtl_mrate_idx_to_arfr_id(struct ieee80211_hw *hw, u8 rate_index,
			    enum wireless_mode wirelessmode);
+0 −75
Original line number Diff line number Diff line
@@ -884,78 +884,3 @@ void rtl92ee_c2h_ra_report_handler(struct ieee80211_hw *hw,

	rtl92ee_dm_dynamic_arfb_select(hw, rate, collision_state);
}

void rtl92ee_c2h_content_parsing(struct ieee80211_hw *hw, u8 c2h_cmd_id,
				 u8 c2h_cmd_len, u8 *tmp_buf)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
	struct rtl_hal_ops *hal_ops = rtlpriv->cfg->ops;
	struct rtl_btc_ops *btc_ops = rtlpriv->btcoexist.btc_ops;

	switch (c2h_cmd_id) {
	case C2H_DBG:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_8723BE_DBG!!\n");
		break;
	case C2H_TXBF:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_8192E_TXBF!!\n");
		break;
	case C2H_TX_REPORT:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE ,
			 "[C2H], C2H_8723BE_TX_REPORT!\n");
		rtl_tx_report_handler(hw, tmp_buf, c2h_cmd_len);
		break;
	case C2H_BT_INFO:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_8723BE_BT_INFO!!\n");
		if (rtlpriv->cfg->ops->get_btc_status())
			btc_ops->btc_btinfo_notify(rtlpriv, tmp_buf,
						   c2h_cmd_len);
		break;
	case C2H_BT_MP:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], C2H_8723BE_BT_MP!!\n");
		if (rtlpriv->cfg->ops->get_btc_status())
			btc_ops->btc_btmpinfo_notify(rtlpriv, tmp_buf,
						     c2h_cmd_len);
		break;
	case C2H_RA_RPT:
		hal_ops->c2h_ra_report_handler(hw, tmp_buf, c2h_cmd_len);
		break;
	default:
		RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
			 "[C2H], Unknown packet!! CmdId(%#X)!\n", c2h_cmd_id);
		break;
	}
}

void rtl92ee_c2h_packet_handler(struct ieee80211_hw *hw, u8 *buffer, u8 len)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
	u8 c2h_cmd_id = 0, c2h_cmd_seq = 0, c2h_cmd_len = 0;
	u8 *tmp_buf = NULL;

	c2h_cmd_id = buffer[0];
	c2h_cmd_seq = buffer[1];
	c2h_cmd_len = len - 2;
	tmp_buf = buffer + 2;

	RT_TRACE(rtlpriv, COMP_FW, DBG_TRACE,
		 "[C2H packet], c2hCmdId=0x%x, c2hCmdSeq=0x%x, c2hCmdLen=%d\n",
		 c2h_cmd_id, c2h_cmd_seq, c2h_cmd_len);

	RT_PRINT_DATA(rtlpriv, COMP_FW, DBG_TRACE,
		      "[C2H packet], Content Hex:\n", tmp_buf, c2h_cmd_len);

	switch (c2h_cmd_id) {
	case C2H_BT_INFO:
	case C2H_BT_MP:
		rtl_c2hcmd_enqueue(hw, c2h_cmd_id, c2h_cmd_len, tmp_buf);
		break;
	default:
		rtl92ee_c2h_content_parsing(hw, c2h_cmd_id, c2h_cmd_len,
					    tmp_buf);
		break;
	}
}
+0 −3
Original line number Diff line number Diff line
@@ -179,9 +179,6 @@ void rtl92ee_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode);
void rtl92ee_set_fw_media_status_rpt_cmd(struct ieee80211_hw *hw, u8 mstatus);
void rtl92ee_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished);
void rtl92ee_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, u8 p2p_ps_state);
void rtl92ee_c2h_packet_handler(struct ieee80211_hw *hw, u8 *buffer, u8 len);
void rtl92ee_c2h_content_parsing(struct ieee80211_hw *hw, u8 c2h_cmd_id,
				 u8 c2h_cmd_len, u8 *tmp_buf);
void rtl92ee_c2h_ra_report_handler(struct ieee80211_hw *hw,
				   u8 *cmd_buf, u8 cmd_len);
#endif
+1 −1
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ static struct rtl_hal_ops rtl8192ee_hal_ops = {
	.fill_h2c_cmd = rtl92ee_fill_h2c_cmd,
	.get_btc_status = rtl92ee_get_btc_status,
	.rx_command_packet = rtl92ee_rx_command_packet,
	.c2h_content_parsing = rtl92ee_c2h_content_parsing,
	.c2h_content_parsing = rtl_c2h_content_parsing,
	.c2h_ra_report_handler = rtl92ee_c2h_ra_report_handler,
};

Loading