New TWT operations and attributes to TWT Setup and Nudge

Define the following additional TWT operations:
QCA_WLAN_TWT_GET_STATS, QCA_WLAN_TWT_CLEAR_STATS,
QCA_WLAN_TWT_GET_CAPABILITIES, QCA_WLAN_TWT_SETUP_READY_NOTIFY.

Also define new attributes to qca_wlan_vendor_attr_twt_setup
and qca_wlan_vendor_attr_twt_nudge.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
Sunil Dutt 2020-11-24 23:41:11 +05:30 committed by Jouni Malinen
parent b709bb40fd
commit a337c1d7c9

View File

@ -7839,6 +7839,8 @@ enum qca_wlan_vendor_attr_wifi_test_config {
* @QCA_WLAN_TWT_TERMINATE: Terminate the TWT session. Required parameters are
* obtained through QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_PARAMS. Refers the enum
* qca_wlan_vendor_attr_twt_setup. Valid only after the TWT session is setup.
* This terminate can either get triggered by the user space or can as well be
* a notification from the firmware if it initiates a terminate.
*
* @QCA_WLAN_TWT_SUSPEND: Suspend the TWT session. Required parameters are
* obtained through QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_PARAMS. Refers the enum
@ -7847,12 +7849,29 @@ enum qca_wlan_vendor_attr_wifi_test_config {
* @QCA_WLAN_TWT_RESUME: Resume the TWT session. Required parameters are
* configured through QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_PARAMS. Refers the enum
* qca_wlan_vendor_attr_twt_resume. Valid only after the TWT session is setup.
* This can as well be a notification from the firmware on a QCA_WLAN_TWT_NUDGE
* request.
*
* @QCA_WLAN_TWT_NUDGE: Suspend and resume the TWT session. TWT nudge is a
* combination of suspend and resume in a single request. Required parameters
* are configured through QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_PARAMS. Refers the
* enum qca_wlan_vendor_attr_twt_nudge. Valid only after the TWT session is
* setup.
*
* @QCA_WLAN_TWT_GET_STATS: Get the TWT session traffic statistics information.
* Refers the enum qca_wlan_vendor_attr_twt_stats. Valid only after the TWT
* session is setup.
*
* @QCA_WLAN_TWT_CLEAR_STATS: Clear TWT session traffic statistics information.
* Valid only after the TWT session is setup.
*
* @QCA_WLAN_TWT_GET_CAPABILITIES: Get TWT capabilities of this device and its
* peer. Refers the enum qca_wlan_vendor_attr_twt_capability. It's a synchronous
* operation, i.e., the capabilities are obtained in the corresponding
* vendor command reply to the user space.
*
* @QCA_WLAN_TWT_SETUP_READY_NOTIFY: Notify userspace that the firmare is
* ready for a new TWT session setup after it issued a TWT teardown.
*/
enum qca_wlan_twt_operation {
QCA_WLAN_TWT_SET = 0,
@ -7861,6 +7880,10 @@ enum qca_wlan_twt_operation {
QCA_WLAN_TWT_SUSPEND = 3,
QCA_WLAN_TWT_RESUME = 4,
QCA_WLAN_TWT_NUDGE = 5,
QCA_WLAN_TWT_GET_STATS = 6,
QCA_WLAN_TWT_CLEAR_STATS = 7,
QCA_WLAN_TWT_GET_CAPABILITIES = 8,
QCA_WLAN_TWT_SETUP_READY_NOTIFY = 9,
};
/**
@ -7874,8 +7897,8 @@ enum qca_wlan_twt_operation {
*
* @QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_PARAMS: Nested attribute representing the
* parameters configured for TWT. These parameters are represented by
* enum qca_wlan_vendor_attr_twt_setup or enum qca_wlan_vendor_attr_twt_resume
* based on the operation.
* enum qca_wlan_vendor_attr_twt_setup, enum qca_wlan_vendor_attr_twt_resume,
* or enum qca_wlan_vendor_attr_twt_stats based on the operation.
*/
enum qca_wlan_vendor_attr_config_twt {
QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_INVALID = 0,
@ -8035,6 +8058,19 @@ enum qca_wlan_vendor_attr_nan_params {
QCA_WLAN_VENDOR_ATTR_NAN_PARAMS_AFTER_LAST - 1
};
/**
* qca_wlan_twt_setup_state: Represents the TWT session states.
*
* QCA_WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED: TWT session not established.
* QCA_WLAN_TWT_SETUP_STATE_ACTIVE: TWT session is active.
* QCA_WLAN_TWT_SETUP_STATE_SUSPEND: TWT session is in suspended state.
*/
enum qca_wlan_twt_setup_state {
QCA_WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED = 0,
QCA_WLAN_TWT_SETUP_STATE_ACTIVE = 1,
QCA_WLAN_TWT_SETUP_STATE_SUSPEND = 2,
};
/**
* enum qca_wlan_vendor_attr_twt_setup: Represents attributes for
* TWT (Target Wake Time) setup request. These attributes are sent as part of
@ -8085,6 +8121,14 @@ enum qca_wlan_vendor_attr_nan_params {
* 2. TWT GET Request and Response
* 3. TWT TERMINATE Request and Response
* 4. TWT SUSPEND Request and Response
* Flow ID values from 0 to 254 represent a single TWT session
* Flow ID value of 255 represents all TWT sessions for the following
* 1. TWT TERMINATE Request and Response
* 2. TWT SUSPEND Request and Response
* 4. TWT CLEAR STATISTICS request
* 5. TWT GET STATISTICS request and response
* If an invalid dialog ID is provided, status
* QCA_WLAN_VENDOR_TWT_STATUS_SESSION_NOT_EXIST will be returned.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL_EXP: Required (u8)
* This attribute (exp) is used along with the mantissa to derive the
@ -8172,6 +8216,23 @@ enum qca_wlan_vendor_attr_nan_params {
* 4. TWT SUSPEND Request
* In STA mode, this is an optional parameter in request and response for
* the above four TWT operations.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MIN_WAKE_INTVL: Optional (u32)
* Minimum tolerance limit of wake interval parameter in microseconds.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX_WAKE_INTVL: Optional (u32)
* Maximum tolerance limit of wake interval parameter in microseconds.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MIN_WAKE_DURATION: Optional (u32)
* Minimum tolerance limit of wake duration parameter in microseconds.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX_WAKE_DURATION: Optional (u32)
* Maximum tolerance limit of wake duration parameter in microseconds.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_STATE: Optional (u32)
* TWT state for the given dialog id. The values for this are represented
* by enum qca_wlan_twt_setup_state.
* This is obtained through TWT GET operation.
*/
enum qca_wlan_vendor_attr_twt_setup {
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_INVALID = 0,
@ -8193,6 +8254,11 @@ enum qca_wlan_vendor_attr_twt_setup {
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_TWT_INFO_ENABLED = 14,
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAC_ADDR = 15,
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MIN_WAKE_INTVL = 16,
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX_WAKE_INTVL = 17,
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MIN_WAKE_DURATION = 18,
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX_WAKE_DURATION = 19,
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_STATE = 20,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TWT_SETUP_AFTER_LAST,
@ -8222,6 +8288,16 @@ enum qca_wlan_vendor_attr_twt_setup {
* unknown reason
* @QCA_WLAN_VENDOR_TWT_STATUS_ALREADY_SUSPENDED: TWT session already in
* suspend state
* @QCA_WLAN_VENDOR_TWT_STATUS_IE_INVALID: FW has dropped the frame due to
* invalid IE in the received TWT frame
* @QCA_WLAN_VENDOR_TWT_STATUS_PARAMS_NOT_IN_RANGE: Parameters received from
* the responder are not in the specified range
* @QCA_WLAN_VENDOR_TWT_STATUS_PEER_INITIATED_TERMINATE: FW terminated the TWT
* session due to request from the responder. Used on the TWT_TERMINATE
* notification from the firmware.
* @QCA_WLAN_VENDOR_TWT_STATUS_ROAM_INITIATED_TERMINATE: FW terminated the TWT
* session due to roaming. Used on the TWT_TERMINATE notification from the
* firmware.
*/
enum qca_wlan_vendor_twt_status {
QCA_WLAN_VENDOR_TWT_STATUS_OK = 0,
@ -8238,6 +8314,10 @@ enum qca_wlan_vendor_twt_status {
QCA_WLAN_VENDOR_TWT_STATUS_DENIED = 11,
QCA_WLAN_VENDOR_TWT_STATUS_UNKNOWN_ERROR = 12,
QCA_WLAN_VENDOR_TWT_STATUS_ALREADY_SUSPENDED = 13,
QCA_WLAN_VENDOR_TWT_STATUS_IE_INVALID = 14,
QCA_WLAN_VENDOR_TWT_STATUS_PARAMS_NOT_IN_RANGE = 15,
QCA_WLAN_VENDOR_TWT_STATUS_PEER_INITIATED_TERMINATE = 16,
QCA_WLAN_VENDOR_TWT_STATUS_ROAM_INITIATED_TERMINATE = 17,
};
/**
@ -8264,6 +8344,10 @@ enum qca_wlan_vendor_twt_status {
* @QCA_WLAN_VENDOR_ATTR_TWT_RESUME_FLOW_ID: Required (u8).
* Flow ID is the unique identifier for each TWT session. This attribute
* represents the respective TWT session to resume.
* Flow ID values from 0 to 254 represent a single TWT session
* Flow ID value of 255 represents all TWT sessions.
* If an invalid dialog id is provided, status
* QCA_WLAN_VENDOR_TWT_STATUS_SESSION_NOT_EXIST will be returned.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_RESUME_MAC_ADDR: 6-byte MAC address
* Represents the MAC address of the peer to which TWT Resume is
@ -8294,6 +8378,11 @@ enum qca_wlan_vendor_attr_twt_resume {
* @QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_FLOW_ID: Required (u8)
* Flow ID is the unique identifier for each TWT session. This attribute
* represents the respective TWT session to suspend and resume.
* Flow ID values from 0 to 254 represent a single TWT session
* Flow ID value of 255 represents all TWT sessions in TWT NUDGE request
* and response.
* If an invalid dialog id is provided, status
* QCA_WLAN_VENDOR_TWT_STATUS_SESSION_NOT_EXIST will be returned.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_WAKE_TIME: Required (u32)
* This attribute is used as the SP offset which is the offset from
@ -8309,6 +8398,10 @@ enum qca_wlan_vendor_attr_twt_resume {
* being sent. This is used in AP mode to represent the respective
* client and is a required parameter. In STA mode, this is an optional
* parameter.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_WAKE_TIME_TSF: Optional (u64)
* This field contains absolute TSF value of the time at which the TWT
* session will be resumed.
*/
enum qca_wlan_vendor_attr_twt_nudge {
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_INVALID = 0,
@ -8316,6 +8409,7 @@ enum qca_wlan_vendor_attr_twt_nudge {
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_WAKE_TIME = 2,
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_NEXT_TWT_SIZE = 3,
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_MAC_ADDR = 4,
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_WAKE_TIME_TSF = 5,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_AFTER_LAST,
@ -8323,6 +8417,162 @@ enum qca_wlan_vendor_attr_twt_nudge {
QCA_WLAN_VENDOR_ATTR_TWT_NUDGE_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_attr_twt_stats: Represents attributes for
* TWT (Target Wake Time) get statistics and clear statistics request.
* These attributes are sent as part of
* %QCA_NL80211_VENDOR_SUBCMD_CONFIG_TWT.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_FLOW_ID: Required (u8)
* Flow ID is the unique identifier for each TWT session. This attribute
* represents the respective TWT session for get and clear TWT statistics.
* Flow ID values from 0 to 254 represent a single TWT session
* Flow ID value of 255 represents all TWT sessions in
* 1) TWT GET STATISTICS request and response
* 2) TWT CLEAR STATISTICS request
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_MAC_ADDR: 6-byte MAC address
* Represents the MAC address of the peer for which TWT Statistics
* is required.
* In AP mode this is used to represent the respective
* client and is a required parameter for
* 1) TWT GET STATISTICS request and response
* 2) TWT CLEAR STATISTICS request and response
* In STA mode, this is an optional parameter.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_SESSION_WAKE_DURATION: Required (u32)
* This is the duration of the service period in microseconds.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVG_WAKE_DURATION: Required (u32)
* Average of the actual wake duration observed so far. Unit is microseconds.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS: Required (u32)
* The number of TWT service periods elapsed so far.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_MIN_WAKE_DURATION: Required (u32)
* This is the minimum value of the wake duration observed across
* QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS. Unit is
* microseconds.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_MAX_WAKE_DURATION: Required (u32)
* This is the maximum value of wake duration observed across
* QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS. Unit is
* microseconds.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_TX_MPDU: Required (u32)
* Average number of MPDUs transmitted successfully across
* QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_RX_MPDU: Required (u32)
* Average number of MPDUs received successfully across
* QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_TX_PACKET_SIZE: Required (u32)
* Average number of bytes transmitted successfully across
* QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_RX_PACKET_SIZE: Required (u32)
* Average number of bytes received successfully across
* QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS.
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_STATS_STATUS: Required (u32)
* Status of the TWT GET STATISTICS request.
* This contains status values in enum qca_wlan_vendor_twt_status
* Obtained in the QCA_WLAN_TWT_GET_STATS response from the firmware.
*/
enum qca_wlan_vendor_attr_twt_stats {
QCA_WLAN_VENDOR_ATTR_TWT_STATS_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_FLOW_ID = 1,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_MAC_ADDR = 2,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_SESSION_WAKE_DURATION = 3,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVG_WAKE_DURATION = 4,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_NUM_SP_ITERATIONS = 5,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_MIN_WAKE_DURATION = 6,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_MAX_WAKE_DURATION = 7,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_TX_MPDU = 8,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_RX_MPDU = 9,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_TX_PACKET_SIZE = 10,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AVERAGE_RX_PACKET_SIZE = 11,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_STATUS = 12,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_TWT_STATS_MAX =
QCA_WLAN_VENDOR_ATTR_TWT_STATS_AFTER_LAST - 1,
};
/**
* qca_wlan_twt_get_capa - Represents the bitmap of TWT capabilities
* supported by the device and the peer.
* Values for %QCA_WLAN_VENDOR_ATTR_CONFIG_TWT_GET_CAPABILITIES
*
* @QCA_WLAN_TWT_CAPA_REQUESTOR: TWT requestor support is advertised by
* TWT non-scheduling STA. This capability is advertised in the HE
* Capability/Extended Capabilities information element in the
* Association Request frame by the device.
*
* @QCA_WLAN_TWT_CAPA_RESPONDER: TWT responder support is advertised by
* the TWT scheduling AP. This capability is advertised in the Extended
* Capabilities/HE Capabilities information element.
*
* @QCA_WLAN_TWT_CAPA_BROADCAST: On the requestor side, this indicates support
* for the broadcast TWT functionality. On the responder side, this indicates
* support for the role of broadcast TWT scheduling functionality. This
* capability is advertised in the HE Capabilities information element.
*
* @QCA_WLAN_TWT_CAPA_TWT_FLEXIBLE: The device supports flexible TWT schedule.
* This capability is advertised in the HE Capabilities information element.
*
* @QCA_WLAN_TWT_CAPA_REQUIRED: The TWT Required is advertised by AP to indicate
* that it mandates the associated HE STAs to support TWT. This capability is
* advertised by AP in the HE Operation Parameters field of the HE Operation
* information element.
*/
enum qca_wlan_twt_capa {
QCA_WLAN_TWT_CAPA_REQUESTOR = BIT(0),
QCA_WLAN_TWT_CAPA_RESPONDER = BIT(1),
QCA_WLAN_TWT_CAPA_BROADCAST = BIT(2),
QCA_WLAN_TWT_CAPA_FLEXIBLE = BIT(3),
QCA_WLAN_TWT_CAPA_REQUIRED = BIT(4),
};
/**
* enum qca_wlan_vendor_attr_twt_capability - Represents attributes for TWT
* get capabilities request type. Used by QCA_WLAN_TWT_GET_CAPABILITIES TWT
* operation.
* @QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_MAC_ADDR: 6-byte MAC address
* Represents the MAC address of the peer for which the TWT capabilities
* are being queried. This is used in AP mode to represent the respective
* client. In STA mode, this is an optional parameter.
*
* @QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_SELF: (u16).
* Self TWT capabilities. Carries a bitmap of TWT capabilities specified in
* enum qca_wlan_twt_capa.
* @QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_PEER: (u16).
* Peer TWT capabilities. Carries a bitmap of TWT capabilities specified in
* enum qca_wlan_twt_capa.
*/
enum qca_wlan_vendor_attr_twt_capability {
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_MAC_ADDR = 1,
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_SELF = 2,
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_PEER = 3,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_MAX =
QCA_WLAN_VENDOR_ATTR_TWT_CAPABILITIES_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_twt_setup_resp_type - Represents the response type by
* the TWT responder