Loading drivers/net/wireless/ath/wil6210/txrx_edma.c +14 −2 Original line number Diff line number Diff line Loading @@ -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)) Loading @@ -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; } Loading drivers/net/wireless/ath/wil6210/txrx_edma.h +1 −1 Original line number Diff line number Diff line Loading @@ -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); } /** Loading Loading
drivers/net/wireless/ath/wil6210/txrx_edma.c +14 −2 Original line number Diff line number Diff line Loading @@ -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)) Loading @@ -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; } Loading
drivers/net/wireless/ath/wil6210/txrx_edma.h +1 −1 Original line number Diff line number Diff line Loading @@ -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); } /** Loading