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

Commit 5d755997 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "wil6210: report association ID (AID) per station in debugfs"

parents c9874a81 8a35beec
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -686,6 +686,7 @@ static int wil_cfg80211_connect(struct wiphy *wiphy,
		goto out;
	}
	wil->privacy = sme->privacy;
	wil->pbss = sme->pbss;

	if (wil->privacy) {
		/* For secure assoc, remove old keys */
+3 −1
Original line number Diff line number Diff line
@@ -1385,6 +1385,7 @@ __acquires(&p->tid_rx_lock) __releases(&p->tid_rx_lock)
	for (i = 0; i < ARRAY_SIZE(wil->sta); i++) {
		struct wil_sta_info *p = &wil->sta[i];
		char *status = "unknown";
		u8 aid = 0;

		switch (p->status) {
		case wil_sta_unused:
@@ -1395,9 +1396,10 @@ __acquires(&p->tid_rx_lock) __releases(&p->tid_rx_lock)
			break;
		case wil_sta_connected:
			status = "connected";
			aid = p->aid;
			break;
		}
		seq_printf(s, "[%d] %pM %s\n", i, p->addr, status);
		seq_printf(s, "[%d] %pM %s AID %d\n", i, p->addr, status, aid);

		if (p->status == wil_sta_connected) {
			spin_lock_bh(&p->tid_rx_lock);
+3 −2
Original line number Diff line number Diff line
@@ -29,8 +29,9 @@ static int wil_open(struct net_device *ndev)

	wil_dbg_misc(wil, "open\n");

	if (debug_fw) {
		wil_err(wil, "while in debug_fw mode\n");
	if (debug_fw ||
	    test_bit(WMI_FW_CAPABILITY_WMI_ONLY, wil->fw_capabilities)) {
		wil_err(wil, "while in debug_fw or wmi_only mode\n");
		return -EINVAL;
	}

+7 −3
Original line number Diff line number Diff line
@@ -99,8 +99,10 @@ static int wil_if_pcie_enable(struct wil6210_priv *wil)
	 */
	int msi_only = pdev->msi_enabled;
	bool _use_msi = use_msi;
	bool wmi_only = test_bit(WMI_FW_CAPABILITY_WMI_ONLY,
				 wil->fw_capabilities);

	wil_dbg_misc(wil, "if_pcie_enable\n");
	wil_dbg_misc(wil, "if_pcie_enable, wmi_only %d\n", wmi_only);

	pdev->msi_enabled = 0;

@@ -123,9 +125,11 @@ static int wil_if_pcie_enable(struct wil6210_priv *wil)
	if (rc)
		goto stop_master;

	/* need reset here to obtain MAC */
	/* need reset here to obtain MAC or in case of WMI-only FW, full reset
	 * and fw loading takes place
	 */
	mutex_lock(&wil->mutex);
	rc = wil_reset(wil, false);
	rc = wil_reset(wil, wmi_only);
	mutex_unlock(&wil->mutex);
	if (rc)
		goto release_irq;
+19 −16
Original line number Diff line number Diff line
@@ -1212,17 +1212,6 @@ found:
	return v;
}

static struct vring *wil_find_tx_bcast(struct wil6210_priv *wil,
				       struct sk_buff *skb)
{
	struct wireless_dev *wdev = wil->wdev;

	if (wdev->iftype != NL80211_IFTYPE_AP)
		return wil_find_tx_bcast_2(wil, skb);

	return wil_find_tx_bcast_1(wil, skb);
}

static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len,
			   int vring_index)
{
@@ -1922,12 +1911,26 @@ netdev_tx_t wil_start_xmit(struct sk_buff *skb, struct net_device *ndev)
	pr_once_fw = false;

	/* find vring */
	if (wil->wdev->iftype == NL80211_IFTYPE_STATION) {
		/* in STA mode (ESS), all to same VRING */
	if (wil->wdev->iftype == NL80211_IFTYPE_STATION && !wil->pbss) {
		/* in STA mode (ESS), all to same VRING (to AP) */
		vring = wil_find_tx_vring_sta(wil, skb);
	} else { /* direct communication, find matching VRING */
		vring = bcast ? wil_find_tx_bcast(wil, skb) :
				wil_find_tx_ucast(wil, skb);
	} else if (bcast) {
		if (wil->pbss)
			/* in pbss, no bcast VRING - duplicate skb in
			 * all stations VRINGs
			 */
			vring = wil_find_tx_bcast_2(wil, skb);
		else if (wil->wdev->iftype == NL80211_IFTYPE_AP)
			/* AP has a dedicated bcast VRING */
			vring = wil_find_tx_bcast_1(wil, skb);
		else
			/* unexpected combination, fallback to duplicating
			 * the skb in all stations VRINGs
			 */
			vring = wil_find_tx_bcast_2(wil, skb);
	} else {
		/* unicast, find specific VRING by dest. address */
		vring = wil_find_tx_ucast(wil, skb);
	}
	if (unlikely(!vring)) {
		wil_dbg_txrx(wil, "No Tx VRING found for %pM\n", eth->h_dest);
Loading