|
@@ -548,6 +548,84 @@ struct mlo_sta_quiet_status {
|
|
bool valid_status;
|
|
bool valid_status;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * enum mlo_link_force_mode: MLO link force modes
|
|
|
|
+ * @MLO_LINK_FORCE_MODE_ACTIVE:
|
|
|
|
+ * Force specific links active
|
|
|
|
+ * @MLO_LINK_FORCE_MODE_INACTIVE:
|
|
|
|
+ * Force specific links inactive
|
|
|
|
+ * @MLO_LINK_FORCE_MODE_ACTIVE_NUM:
|
|
|
|
+ * Force active a number of links, firmware to decide which links to inactive
|
|
|
|
+ * @MLO_LINK_FORCE_MODE_INACTIVE_NUM:
|
|
|
|
+ * Force inactive a number of links, firmware to decide which links to inactive
|
|
|
|
+ * @MLO_LINK_FORCE_MODE_NO_FORCE:
|
|
|
|
+ * Cancel the force operation of specific links, allow firmware to decide
|
|
|
|
+ * @MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE: Force specific links active and
|
|
|
|
+ * force specific links inactive
|
|
|
|
+ */
|
|
|
|
+enum mlo_link_force_mode {
|
|
|
|
+ MLO_LINK_FORCE_MODE_ACTIVE = 1,
|
|
|
|
+ MLO_LINK_FORCE_MODE_INACTIVE = 2,
|
|
|
|
+ MLO_LINK_FORCE_MODE_ACTIVE_NUM = 3,
|
|
|
|
+ MLO_LINK_FORCE_MODE_INACTIVE_NUM = 4,
|
|
|
|
+ MLO_LINK_FORCE_MODE_NO_FORCE = 5,
|
|
|
|
+ MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE = 6,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * enum mlo_link_force_reason: MLO link force reasons
|
|
|
|
+ * @MLO_LINK_FORCE_REASON_CONNECT:
|
|
|
|
+ * Set force specific links because of new connection
|
|
|
|
+ * @MLO_LINK_FORCE_REASON_DISCONNECT:
|
|
|
|
+ * Set force specific links because of new dis-connection
|
|
|
|
+ * @MLO_LINK_FORCE_REASON_LINK_REMOVAL:
|
|
|
|
+ * Set force specific links because of AP side link removal
|
|
|
|
+ * @MLO_LINK_FORCE_REASON_TDLS:
|
|
|
|
+ * Set force specific links because of TDLS operation
|
|
|
|
+ */
|
|
|
|
+enum mlo_link_force_reason {
|
|
|
|
+ MLO_LINK_FORCE_REASON_CONNECT = 1,
|
|
|
|
+ MLO_LINK_FORCE_REASON_DISCONNECT = 2,
|
|
|
|
+ MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3,
|
|
|
|
+ MLO_LINK_FORCE_REASON_TDLS = 4,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * enum set_link_source - set link source
|
|
|
|
+ * @SET_LINK_FROM_CONCURRENCY: concurrent connection request
|
|
|
|
+ * @SET_LINK_FROM_VENDOR_CMD: vendor command request
|
|
|
|
+ * @SET_LINK_FROM_TDLS: tdls command request
|
|
|
|
+ * @SET_LINK_SOURCE_MAX: max num of source
|
|
|
|
+ */
|
|
|
|
+enum set_link_source {
|
|
|
|
+ SET_LINK_FROM_CONCURRENCY = 0,
|
|
|
|
+ SET_LINK_FROM_VENDOR_CMD = 1,
|
|
|
|
+ SET_LINK_FROM_TDLS = 2,
|
|
|
|
+ SET_LINK_SOURCE_MAX,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * struct set_link_req - set link request
|
|
|
|
+ * @mode: set link mode
|
|
|
|
+ * @reason: reason of set link
|
|
|
|
+ * @force_active_bitmap: force active link bitmap
|
|
|
|
+ * @force_inactive_bitmap: force inactive link bitmap
|
|
|
|
+ * @force_active_num: force active link num
|
|
|
|
+ * @force_active_num_bitmap: force active num link bitmap
|
|
|
|
+ * @force_inactive_num: force inactive link num
|
|
|
|
+ * @force_inactive_num_bitmap: force inactive num link bitmap
|
|
|
|
+ */
|
|
|
|
+struct set_link_req {
|
|
|
|
+ enum mlo_link_force_mode mode;
|
|
|
|
+ enum mlo_link_force_reason reason;
|
|
|
|
+ uint16_t force_active_bitmap;
|
|
|
|
+ uint16_t force_inactive_bitmap;
|
|
|
|
+ uint8_t force_active_num;
|
|
|
|
+ uint16_t force_active_num_bitmap;
|
|
|
|
+ uint8_t force_inactive_num;
|
|
|
|
+ uint16_t force_inactive_num_bitmap;
|
|
|
|
+};
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct ml_link_force_state - link force state.
|
|
* struct ml_link_force_state - link force state.
|
|
* @force_active_bitmap: force active link bitmap
|
|
* @force_active_bitmap: force active link bitmap
|
|
@@ -576,9 +654,11 @@ struct ml_link_force_state {
|
|
* struct wlan_link_force_context - link force ctx.
|
|
* struct wlan_link_force_context - link force ctx.
|
|
* @force_state: current force active/inactive states which
|
|
* @force_state: current force active/inactive states which
|
|
* have been sent to target
|
|
* have been sent to target
|
|
|
|
+ * @reqs: request of set link
|
|
*/
|
|
*/
|
|
struct wlan_link_force_context {
|
|
struct wlan_link_force_context {
|
|
struct ml_link_force_state force_state;
|
|
struct ml_link_force_state force_state;
|
|
|
|
+ struct set_link_req reqs[SET_LINK_SOURCE_MAX];
|
|
};
|
|
};
|
|
|
|
|
|
#if defined(UMAC_SUPPORT_MLNAWDS) || defined(MESH_MODE_SUPPORT)
|
|
#if defined(UMAC_SUPPORT_MLNAWDS) || defined(MESH_MODE_SUPPORT)
|
|
@@ -1248,48 +1328,6 @@ struct mlo_osif_ext_ops {
|
|
/* maximum size of link number param array for MLO link set active command */
|
|
/* maximum size of link number param array for MLO link set active command */
|
|
#define MLO_LINK_NUM_SZ 2
|
|
#define MLO_LINK_NUM_SZ 2
|
|
|
|
|
|
-/**
|
|
|
|
- * enum mlo_link_force_mode: MLO link force modes
|
|
|
|
- * @MLO_LINK_FORCE_MODE_ACTIVE:
|
|
|
|
- * Force specific links active
|
|
|
|
- * @MLO_LINK_FORCE_MODE_INACTIVE:
|
|
|
|
- * Force specific links inactive
|
|
|
|
- * @MLO_LINK_FORCE_MODE_ACTIVE_NUM:
|
|
|
|
- * Force active a number of links, firmware to decide which links to inactive
|
|
|
|
- * @MLO_LINK_FORCE_MODE_INACTIVE_NUM:
|
|
|
|
- * Force inactive a number of links, firmware to decide which links to inactive
|
|
|
|
- * @MLO_LINK_FORCE_MODE_NO_FORCE:
|
|
|
|
- * Cancel the force operation of specific links, allow firmware to decide
|
|
|
|
- * @MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE: Force specific links active and
|
|
|
|
- * force specific links inactive
|
|
|
|
- */
|
|
|
|
-enum mlo_link_force_mode {
|
|
|
|
- MLO_LINK_FORCE_MODE_ACTIVE = 1,
|
|
|
|
- MLO_LINK_FORCE_MODE_INACTIVE = 2,
|
|
|
|
- MLO_LINK_FORCE_MODE_ACTIVE_NUM = 3,
|
|
|
|
- MLO_LINK_FORCE_MODE_INACTIVE_NUM = 4,
|
|
|
|
- MLO_LINK_FORCE_MODE_NO_FORCE = 5,
|
|
|
|
- MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE = 6,
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * enum mlo_link_force_reason: MLO link force reasons
|
|
|
|
- * @MLO_LINK_FORCE_REASON_CONNECT:
|
|
|
|
- * Set force specific links because of new connection
|
|
|
|
- * @MLO_LINK_FORCE_REASON_DISCONNECT:
|
|
|
|
- * Set force specific links because of new dis-connection
|
|
|
|
- * @MLO_LINK_FORCE_REASON_LINK_REMOVAL:
|
|
|
|
- * Set force specific links because of AP side link removal
|
|
|
|
- * @MLO_LINK_FORCE_REASON_TDLS:
|
|
|
|
- * Set force specific links because of TDLS operation
|
|
|
|
- */
|
|
|
|
-enum mlo_link_force_reason {
|
|
|
|
- MLO_LINK_FORCE_REASON_CONNECT = 1,
|
|
|
|
- MLO_LINK_FORCE_REASON_DISCONNECT = 2,
|
|
|
|
- MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3,
|
|
|
|
- MLO_LINK_FORCE_REASON_TDLS = 4,
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* struct mlo_link_set_active_resp: MLO link set active response structure
|
|
* struct mlo_link_set_active_resp: MLO link set active response structure
|
|
* @status: Return status, 0 for success, non-zero otherwise
|
|
* @status: Return status, 0 for success, non-zero otherwise
|