Loading drivers/net/wireless/ath/wil6210/wmi.c +7 −0 Original line number Diff line number Diff line Loading @@ -3093,6 +3093,10 @@ static const char *suspend_status2name(u8 status) switch (status) { case WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE: return "LINK_NOT_IDLE"; case WMI_TRAFFIC_SUSPEND_REJECTED_DISCONNECT: return "DISCONNECT"; case WMI_TRAFFIC_SUSPEND_REJECTED_OTHER: return "OTHER"; default: return "Untracked status"; } Loading Loading @@ -3182,6 +3186,9 @@ static void resume_triggers2string(u32 triggers, char *string, int str_size) if (triggers & WMI_RESUME_TRIGGER_WMI_EVT) strlcat(string, " WMI_EVT", str_size); if (triggers & WMI_RESUME_TRIGGER_DISCONNECT) strlcat(string, " DISCONNECT", str_size); } int wmi_resume(struct wil6210_priv *wil) Loading drivers/net/wireless/ath/wil6210/wmi.h +86 −3 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ enum wmi_fw_capability { WMI_FW_CAPABILITY_RAW_MODE = 24, WMI_FW_CAPABILITY_TX_REQ_EXT = 25, WMI_FW_CAPABILITY_CHANNEL_4 = 26, WMI_FW_CAPABILITY_IPA = 27, WMI_FW_CAPABILITY_MAX, }; Loading Loading @@ -285,6 +286,7 @@ enum wmi_command_id { WMI_SET_AP_SLOT_SIZE_CMDID = 0xA0F, WMI_SET_VRING_PRIORITY_WEIGHT_CMDID = 0xA10, WMI_SET_VRING_PRIORITY_CMDID = 0xA11, WMI_RBUFCAP_CFG_CMDID = 0xA12, WMI_SET_MAC_ADDRESS_CMDID = 0xF003, WMI_ABORT_SCAN_CMDID = 0xF007, WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, Loading Loading @@ -987,10 +989,22 @@ enum wmi_rx_msg_type { WMI_RX_MSG_TYPE_EXTENDED = 0x01, }; enum wmi_ring_add_irq_mode { /* Backwards compatibility * for DESC ring - interrupt disabled * for STATUS ring - interrupt enabled */ WMI_RING_ADD_IRQ_MODE_BWC = 0x00, WMI_RING_ADD_IRQ_MODE_DISABLE = 0x01, WMI_RING_ADD_IRQ_MODE_ENABLE = 0x02, }; struct wmi_tx_status_ring_add_cmd { struct wmi_edma_ring_cfg ring_cfg; u8 irq_index; u8 reserved[3]; /* wmi_ring_add_irq_mode */ u8 irq_mode; u8 reserved[2]; } __packed; struct wmi_rx_status_ring_add_cmd { Loading Loading @@ -1024,7 +1038,10 @@ struct wmi_tx_desc_ring_add_cmd { u8 mac_ctrl; u8 to_resolution; u8 agg_max_wsize; u8 reserved[3]; u8 irq_index; /* wmi_ring_add_irq_mode */ u8 irq_mode; u8 reserved; struct wmi_vring_cfg_schd schd_params; } __packed; Loading Loading @@ -1990,6 +2007,7 @@ enum wmi_event_id { WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, WMI_BF_TRIG_EVENTID = 0x183A, WMI_RS_MGMT_DONE_EVENTID = 0x1852, WMI_RF_MGMT_STATUS_EVENTID = 0x1853, WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, Loading Loading @@ -2090,6 +2108,7 @@ enum wmi_event_id { WMI_SET_AP_SLOT_SIZE_EVENTID = 0x1A0F, WMI_SET_VRING_PRIORITY_WEIGHT_EVENTID = 0x1A10, WMI_SET_VRING_PRIORITY_EVENTID = 0x1A11, WMI_RBUFCAP_CFG_EVENTID = 0x1A12, WMI_SET_CHANNEL_EVENTID = 0x9000, WMI_ASSOC_REQ_EVENTID = 0x9001, WMI_EAPOL_RX_EVENTID = 0x9002, Loading Loading @@ -2275,7 +2294,9 @@ struct wmi_notify_req_done_event { __le32 status; __le64 tsf; s8 rssi; u8 reserved0[3]; /* enum wmi_edmg_tx_mode */ u8 tx_mode; u8 reserved0[2]; __le32 tx_tpt; __le32 tx_goodput; __le32 rx_goodput; Loading Loading @@ -2328,6 +2349,7 @@ enum wmi_disconnect_reason { WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, WMI_DIS_REASON_IBSS_MERGE = 0x0E, WMI_DIS_REASON_HIGH_TEMPERATURE = 0x0F, }; /* WMI_DISCONNECT_EVENTID */ Loading Loading @@ -3180,6 +3202,30 @@ struct wmi_brp_set_ant_limit_event { u8 reserved[3]; } __packed; enum wmi_bf_type { WMI_BF_TYPE_SLS = 0x00, WMI_BF_TYPE_BRP_RX = 0x01, }; /* WMI_BF_TRIG_CMDID */ struct wmi_bf_trig_cmd { /* enum wmi_bf_type - type of requested beamforming */ u8 bf_type; /* used only for WMI_BF_TYPE_BRP_RX */ u8 cid; /* used only for WMI_BF_TYPE_SLS */ u8 dst_mac[WMI_MAC_LEN]; u8 reserved[4]; } __packed; /* WMI_BF_TRIG_EVENTID */ struct wmi_bf_trig_event { /* enum wmi_fw_status */ u8 status; u8 cid; u8 reserved[2]; } __packed; /* broadcast connection ID */ #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF) Loading Loading @@ -3275,6 +3321,8 @@ struct wmi_link_maintain_cfg_read_done_event { enum wmi_traffic_suspend_status { WMI_TRAFFIC_SUSPEND_APPROVED = 0x0, WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE = 0x1, WMI_TRAFFIC_SUSPEND_REJECTED_DISCONNECT = 0x2, WMI_TRAFFIC_SUSPEND_REJECTED_OTHER = 0x3, }; /* WMI_TRAFFIC_SUSPEND_EVENTID */ Loading @@ -3294,6 +3342,7 @@ enum wmi_resume_trigger { WMI_RESUME_TRIGGER_UCAST_RX = 0x2, WMI_RESUME_TRIGGER_BCAST_RX = 0x4, WMI_RESUME_TRIGGER_WMI_EVT = 0x8, WMI_RESUME_TRIGGER_DISCONNECT = 0x10, }; /* WMI_TRAFFIC_RESUME_EVENTID */ Loading Loading @@ -4069,4 +4118,38 @@ struct wmi_set_vring_priority_event { u8 reserved[3]; } __packed; /* WMI_RADAR_PCI_CTRL_BLOCK struct */ struct wmi_radar_pci_ctrl_block { /* last fw tail address index */ __le32 fw_tail_index; /* last SW head address index known to FW */ __le32 sw_head_index; __le32 last_wr_pulse_tsf_low; __le32 last_wr_pulse_count; __le32 last_wr_in_bytes; __le32 last_wr_pulse_id; __le32 last_wr_burst_id; /* When pre overflow detected, advance sw head in unit of pulses */ __le32 sw_head_inc; __le32 reserved[8]; } __packed; /* WMI_RBUFCAP_CFG_CMD */ struct wmi_rbufcap_cfg_cmd { u8 enable; u8 reserved; /* RBUFCAP indicates rx space unavailable when number of rx * descriptors drops below this threshold. Set 0 to use system * default */ __le16 rx_desc_threshold; } __packed; /* WMI_RBUFCAP_CFG_EVENTID */ struct wmi_rbufcap_cfg_event { /* enum wmi_fw_status */ u8 status; u8 reserved[3]; } __packed; #endif /* __WILOCITY_WMI_H__ */ Loading
drivers/net/wireless/ath/wil6210/wmi.c +7 −0 Original line number Diff line number Diff line Loading @@ -3093,6 +3093,10 @@ static const char *suspend_status2name(u8 status) switch (status) { case WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE: return "LINK_NOT_IDLE"; case WMI_TRAFFIC_SUSPEND_REJECTED_DISCONNECT: return "DISCONNECT"; case WMI_TRAFFIC_SUSPEND_REJECTED_OTHER: return "OTHER"; default: return "Untracked status"; } Loading Loading @@ -3182,6 +3186,9 @@ static void resume_triggers2string(u32 triggers, char *string, int str_size) if (triggers & WMI_RESUME_TRIGGER_WMI_EVT) strlcat(string, " WMI_EVT", str_size); if (triggers & WMI_RESUME_TRIGGER_DISCONNECT) strlcat(string, " DISCONNECT", str_size); } int wmi_resume(struct wil6210_priv *wil) Loading
drivers/net/wireless/ath/wil6210/wmi.h +86 −3 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ enum wmi_fw_capability { WMI_FW_CAPABILITY_RAW_MODE = 24, WMI_FW_CAPABILITY_TX_REQ_EXT = 25, WMI_FW_CAPABILITY_CHANNEL_4 = 26, WMI_FW_CAPABILITY_IPA = 27, WMI_FW_CAPABILITY_MAX, }; Loading Loading @@ -285,6 +286,7 @@ enum wmi_command_id { WMI_SET_AP_SLOT_SIZE_CMDID = 0xA0F, WMI_SET_VRING_PRIORITY_WEIGHT_CMDID = 0xA10, WMI_SET_VRING_PRIORITY_CMDID = 0xA11, WMI_RBUFCAP_CFG_CMDID = 0xA12, WMI_SET_MAC_ADDRESS_CMDID = 0xF003, WMI_ABORT_SCAN_CMDID = 0xF007, WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, Loading Loading @@ -987,10 +989,22 @@ enum wmi_rx_msg_type { WMI_RX_MSG_TYPE_EXTENDED = 0x01, }; enum wmi_ring_add_irq_mode { /* Backwards compatibility * for DESC ring - interrupt disabled * for STATUS ring - interrupt enabled */ WMI_RING_ADD_IRQ_MODE_BWC = 0x00, WMI_RING_ADD_IRQ_MODE_DISABLE = 0x01, WMI_RING_ADD_IRQ_MODE_ENABLE = 0x02, }; struct wmi_tx_status_ring_add_cmd { struct wmi_edma_ring_cfg ring_cfg; u8 irq_index; u8 reserved[3]; /* wmi_ring_add_irq_mode */ u8 irq_mode; u8 reserved[2]; } __packed; struct wmi_rx_status_ring_add_cmd { Loading Loading @@ -1024,7 +1038,10 @@ struct wmi_tx_desc_ring_add_cmd { u8 mac_ctrl; u8 to_resolution; u8 agg_max_wsize; u8 reserved[3]; u8 irq_index; /* wmi_ring_add_irq_mode */ u8 irq_mode; u8 reserved; struct wmi_vring_cfg_schd schd_params; } __packed; Loading Loading @@ -1990,6 +2007,7 @@ enum wmi_event_id { WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, WMI_BF_TRIG_EVENTID = 0x183A, WMI_RS_MGMT_DONE_EVENTID = 0x1852, WMI_RF_MGMT_STATUS_EVENTID = 0x1853, WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, Loading Loading @@ -2090,6 +2108,7 @@ enum wmi_event_id { WMI_SET_AP_SLOT_SIZE_EVENTID = 0x1A0F, WMI_SET_VRING_PRIORITY_WEIGHT_EVENTID = 0x1A10, WMI_SET_VRING_PRIORITY_EVENTID = 0x1A11, WMI_RBUFCAP_CFG_EVENTID = 0x1A12, WMI_SET_CHANNEL_EVENTID = 0x9000, WMI_ASSOC_REQ_EVENTID = 0x9001, WMI_EAPOL_RX_EVENTID = 0x9002, Loading Loading @@ -2275,7 +2294,9 @@ struct wmi_notify_req_done_event { __le32 status; __le64 tsf; s8 rssi; u8 reserved0[3]; /* enum wmi_edmg_tx_mode */ u8 tx_mode; u8 reserved0[2]; __le32 tx_tpt; __le32 tx_goodput; __le32 rx_goodput; Loading Loading @@ -2328,6 +2349,7 @@ enum wmi_disconnect_reason { WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, WMI_DIS_REASON_IBSS_MERGE = 0x0E, WMI_DIS_REASON_HIGH_TEMPERATURE = 0x0F, }; /* WMI_DISCONNECT_EVENTID */ Loading Loading @@ -3180,6 +3202,30 @@ struct wmi_brp_set_ant_limit_event { u8 reserved[3]; } __packed; enum wmi_bf_type { WMI_BF_TYPE_SLS = 0x00, WMI_BF_TYPE_BRP_RX = 0x01, }; /* WMI_BF_TRIG_CMDID */ struct wmi_bf_trig_cmd { /* enum wmi_bf_type - type of requested beamforming */ u8 bf_type; /* used only for WMI_BF_TYPE_BRP_RX */ u8 cid; /* used only for WMI_BF_TYPE_SLS */ u8 dst_mac[WMI_MAC_LEN]; u8 reserved[4]; } __packed; /* WMI_BF_TRIG_EVENTID */ struct wmi_bf_trig_event { /* enum wmi_fw_status */ u8 status; u8 cid; u8 reserved[2]; } __packed; /* broadcast connection ID */ #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF) Loading Loading @@ -3275,6 +3321,8 @@ struct wmi_link_maintain_cfg_read_done_event { enum wmi_traffic_suspend_status { WMI_TRAFFIC_SUSPEND_APPROVED = 0x0, WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE = 0x1, WMI_TRAFFIC_SUSPEND_REJECTED_DISCONNECT = 0x2, WMI_TRAFFIC_SUSPEND_REJECTED_OTHER = 0x3, }; /* WMI_TRAFFIC_SUSPEND_EVENTID */ Loading @@ -3294,6 +3342,7 @@ enum wmi_resume_trigger { WMI_RESUME_TRIGGER_UCAST_RX = 0x2, WMI_RESUME_TRIGGER_BCAST_RX = 0x4, WMI_RESUME_TRIGGER_WMI_EVT = 0x8, WMI_RESUME_TRIGGER_DISCONNECT = 0x10, }; /* WMI_TRAFFIC_RESUME_EVENTID */ Loading Loading @@ -4069,4 +4118,38 @@ struct wmi_set_vring_priority_event { u8 reserved[3]; } __packed; /* WMI_RADAR_PCI_CTRL_BLOCK struct */ struct wmi_radar_pci_ctrl_block { /* last fw tail address index */ __le32 fw_tail_index; /* last SW head address index known to FW */ __le32 sw_head_index; __le32 last_wr_pulse_tsf_low; __le32 last_wr_pulse_count; __le32 last_wr_in_bytes; __le32 last_wr_pulse_id; __le32 last_wr_burst_id; /* When pre overflow detected, advance sw head in unit of pulses */ __le32 sw_head_inc; __le32 reserved[8]; } __packed; /* WMI_RBUFCAP_CFG_CMD */ struct wmi_rbufcap_cfg_cmd { u8 enable; u8 reserved; /* RBUFCAP indicates rx space unavailable when number of rx * descriptors drops below this threshold. Set 0 to use system * default */ __le16 rx_desc_threshold; } __packed; /* WMI_RBUFCAP_CFG_EVENTID */ struct wmi_rbufcap_cfg_event { /* enum wmi_fw_status */ u8 status; u8 reserved[3]; } __packed; #endif /* __WILOCITY_WMI_H__ */