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

Commit 6d4d71d9 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "wil6210: Drop unicast sub frame if part of a multicast amsdu"

parents aa0682c8 91b4e04b
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -864,9 +864,20 @@ static int wil_check_amsdu(struct wil6210_priv *wil, void *msg, int cid,
	switch (vif->wdev.iftype) {
	case NL80211_IFTYPE_STATION:
	case NL80211_IFTYPE_P2P_CLIENT:
		/* check if the MSDU (a sub-frame of AMSDU) is multicast */
		if (is_multicast_ether_addr(da))
			return 0;

		/* check if the current AMSDU (MPDU) frame is a multicast.
		 * If so we have unicast sub frame as part of a multicast
		 * AMSDU. Current frame and all sub frames should be dropped.
		 */
		if (wil_rx_status_get_mcast(msg)) {
			wil_dbg_txrx(wil,
				     "Found unicast sub frame in a multicast mpdu. Drop it\n");
			goto out;
		}

		/* On client side, DA should be the client mac address */
		ndev = vif_to_ndev(vif);
		if (ether_addr_equal(ndev->dev_addr, da))
@@ -887,12 +898,13 @@ static int wil_check_amsdu(struct wil6210_priv *wil, void *msg, int cid,
		return 0;
	}

out:
	sta->amsdu_drop_sn = seq;
	sta->amsdu_drop_tid = tid;
	sta->amsdu_drop = 1;
	wil_dbg_txrx(wil,
		     "Drop AMSDU frame, sn=%d. Drop this and all next sub frames\n",
		     seq);
		     "Drop AMSDU frame, sn=%d tid=%d. Drop this and all next sub frames\n",
		     seq, tid);

	return -EAGAIN;
}
+1 −1
Original line number Diff line number Diff line
@@ -372,7 +372,7 @@ static inline u16 wil_rx_status_get_flow_id(void *msg)
static inline u8 wil_rx_status_get_mcast(void *msg)
{
	return WIL_GET_BITS(((struct wil_rx_status_compressed *)msg)->d0,
			    26, 26);
			    25, 26);
}

/**