|
@@ -201,13 +201,15 @@ static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode)
|
|
}
|
|
}
|
|
|
|
|
|
struct iwl_rx_handlers {
|
|
struct iwl_rx_handlers {
|
|
- u8 cmd_id;
|
|
|
|
|
|
+ u16 cmd_id;
|
|
bool async;
|
|
bool async;
|
|
void (*fn)(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
|
|
void (*fn)(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
|
|
};
|
|
};
|
|
|
|
|
|
#define RX_HANDLER(_cmd_id, _fn, _async) \
|
|
#define RX_HANDLER(_cmd_id, _fn, _async) \
|
|
{ .cmd_id = _cmd_id , .fn = _fn , .async = _async }
|
|
{ .cmd_id = _cmd_id , .fn = _fn , .async = _async }
|
|
|
|
+#define RX_HANDLER_GRP(_grp, _cmd, _fn, _async) \
|
|
|
|
+ { .cmd_id = WIDE_ID(_grp, _cmd), .fn = _fn, .async = _async }
|
|
|
|
|
|
/*
|
|
/*
|
|
* Handlers for fw notifications
|
|
* Handlers for fw notifications
|
|
@@ -263,6 +265,7 @@ static const struct iwl_rx_handlers iwl_mvm_rx_handlers[] = {
|
|
|
|
|
|
};
|
|
};
|
|
#undef RX_HANDLER
|
|
#undef RX_HANDLER
|
|
|
|
+#undef RX_HANDLER_GRP
|
|
#define CMD(x) [x] = #x
|
|
#define CMD(x) [x] = #x
|
|
|
|
|
|
static const char *const iwl_mvm_cmd_strings[REPLY_MAX] = {
|
|
static const char *const iwl_mvm_cmd_strings[REPLY_MAX] = {
|
|
@@ -735,7 +738,7 @@ static void iwl_mvm_rx_dispatch(struct iwl_op_mode *op_mode,
|
|
const struct iwl_rx_handlers *rx_h = &iwl_mvm_rx_handlers[i];
|
|
const struct iwl_rx_handlers *rx_h = &iwl_mvm_rx_handlers[i];
|
|
struct iwl_async_handler_entry *entry;
|
|
struct iwl_async_handler_entry *entry;
|
|
|
|
|
|
- if (rx_h->cmd_id != pkt->hdr.cmd)
|
|
|
|
|
|
+ if (rx_h->cmd_id != WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd))
|
|
continue;
|
|
continue;
|
|
|
|
|
|
if (!rx_h->async) {
|
|
if (!rx_h->async) {
|