Skip to content

Commit 97bce57

Browse files
committed
iwlwifi: mvm: use IWL_HCMD_NOCOPY for MCAST_FILTER_CMD
The MCAST_FILTER_CMD can get quite large when we have many mcast addresses to set (we support up to 255). So the command should be send as NOCOPY to prevent a warning caused by too-long commands: WARNING: CPU: 0 PID: 9700 at /root/iwlwifi/stack-dev/drivers/net/wireless/intel/iwlwifi/pcie/tx.c:1550 iwl_pcie_enqueue_hcmd+0x8c7/0xb40 [iwlwifi] Command MCAST_FILTER_CMD (0x1d0) is too large (328 bytes) This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196743 Cc: [email protected] Signed-off-by: Luca Coelho <[email protected]>
1 parent 8458e48 commit 97bce57

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1546,6 +1546,11 @@ static void iwl_mvm_mc_iface_iterator(void *_data, u8 *mac,
15461546
struct iwl_mvm_mc_iter_data *data = _data;
15471547
struct iwl_mvm *mvm = data->mvm;
15481548
struct iwl_mcast_filter_cmd *cmd = mvm->mcast_filter_cmd;
1549+
struct iwl_host_cmd hcmd = {
1550+
.id = MCAST_FILTER_CMD,
1551+
.flags = CMD_ASYNC,
1552+
.dataflags[0] = IWL_HCMD_DFL_NOCOPY,
1553+
};
15491554
int ret, len;
15501555

15511556
/* if we don't have free ports, mcast frames will be dropped */
@@ -1560,7 +1565,10 @@ static void iwl_mvm_mc_iface_iterator(void *_data, u8 *mac,
15601565
memcpy(cmd->bssid, vif->bss_conf.bssid, ETH_ALEN);
15611566
len = roundup(sizeof(*cmd) + cmd->count * ETH_ALEN, 4);
15621567

1563-
ret = iwl_mvm_send_cmd_pdu(mvm, MCAST_FILTER_CMD, CMD_ASYNC, len, cmd);
1568+
hcmd.len[0] = len;
1569+
hcmd.data[0] = cmd;
1570+
1571+
ret = iwl_mvm_send_cmd(mvm, &hcmd);
15641572
if (ret)
15651573
IWL_ERR(mvm, "mcast filter cmd error. ret=%d\n", ret);
15661574
}

0 commit comments

Comments
 (0)