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

Commit 26a359d9 authored by Vladimir Kondratiev's avatar Vladimir Kondratiev Committed by Kalle Valo
Browse files

wil6210: delba for responder



Implement delba flow for the responder (Rx) side

Signed-off-by: default avatarVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent cbcf5866
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -598,7 +598,7 @@ static ssize_t wil_write_addba(struct file *file, const char __user *buf,
	if (agg_wsize > 0)
	if (agg_wsize > 0)
		wmi_addba(wil, 0, agg_wsize, 0);
		wmi_addba(wil, 0, agg_wsize, 0);
	else
	else
		wmi_delba(wil, 0, 0);
		wmi_delba_tx(wil, 0, 0);


	return len;
	return len;
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -607,7 +607,8 @@ int wmi_rxon(struct wil6210_priv *wil, bool on);
int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_m, u32 *t_r);
int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_m, u32 *t_r);
int wmi_disconnect_sta(struct wil6210_priv *wil, const u8 *mac, u16 reason);
int wmi_disconnect_sta(struct wil6210_priv *wil, const u8 *mac, u16 reason);
int wmi_addba(struct wil6210_priv *wil, u8 ringid, u8 size, u16 timeout);
int wmi_addba(struct wil6210_priv *wil, u8 ringid, u8 size, u16 timeout);
int wmi_delba(struct wil6210_priv *wil, u8 ringid, u16 reason);
int wmi_delba_tx(struct wil6210_priv *wil, u8 ringid, u16 reason);
int wmi_delba_rx(struct wil6210_priv *wil, u8 cidxtid, u16 reason);
int wmi_addba_rx_resp(struct wil6210_priv *wil, u8 cid, u8 tid, u8 token,
int wmi_addba_rx_resp(struct wil6210_priv *wil, u8 cid, u8 tid, u8 token,
		      u16 status, bool amsdu, u16 agg_wsize, u16 timeout);
		      u16 status, bool amsdu, u16 agg_wsize, u16 timeout);
int wil_addba_rx_request(struct wil6210_priv *wil, u8 cidxtid,
int wil_addba_rx_request(struct wil6210_priv *wil, u8 cidxtid,
+14 −1
Original line number Original line Diff line number Diff line
@@ -1184,7 +1184,7 @@ int wmi_addba(struct wil6210_priv *wil, u8 ringid, u8 size, u16 timeout)
	return wmi_send(wil, WMI_VRING_BA_EN_CMDID, &cmd, sizeof(cmd));
	return wmi_send(wil, WMI_VRING_BA_EN_CMDID, &cmd, sizeof(cmd));
}
}


int wmi_delba(struct wil6210_priv *wil, u8 ringid, u16 reason)
int wmi_delba_tx(struct wil6210_priv *wil, u8 ringid, u16 reason)
{
{
	struct wmi_vring_ba_dis_cmd cmd = {
	struct wmi_vring_ba_dis_cmd cmd = {
		.ringid = ringid,
		.ringid = ringid,
@@ -1197,6 +1197,19 @@ int wmi_delba(struct wil6210_priv *wil, u8 ringid, u16 reason)
	return wmi_send(wil, WMI_VRING_BA_DIS_CMDID, &cmd, sizeof(cmd));
	return wmi_send(wil, WMI_VRING_BA_DIS_CMDID, &cmd, sizeof(cmd));
}
}


int wmi_delba_rx(struct wil6210_priv *wil, u8 cidxtid, u16 reason)
{
	struct wmi_rcp_delba_cmd cmd = {
		.cidxtid = cidxtid,
		.reason = cpu_to_le16(reason),
	};

	wil_dbg_wmi(wil, "%s(CID %d TID %d reason %d)\n", __func__,
		    cidxtid & 0xf, (cidxtid >> 4) & 0xf, reason);

	return wmi_send(wil, WMI_RCP_DELBA_CMDID, &cmd, sizeof(cmd));
}

int wmi_addba_rx_resp(struct wil6210_priv *wil, u8 cid, u8 tid, u8 token,
int wmi_addba_rx_resp(struct wil6210_priv *wil, u8 cid, u8 tid, u8 token,
		      u16 status, bool amsdu, u16 agg_wsize, u16 timeout)
		      u16 status, bool amsdu, u16 agg_wsize, u16 timeout)
{
{