qcacmn: Handle link active_inactive command

Add code to handle new set link state command -
MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE.

Change-Id: I4fad93e9e09309f7e8ac07f2e3c43a0aa6472a3a
CRs-Fixed: 3352970
Cette révision appartient à :
Liangwei Dong
2022-11-24 18:42:49 +08:00
révisé par Madan Koyyalamudi
Parent 060f2a7ebc
révision 91f844bfce
2 fichiers modifiés avec 53 ajouts et 4 suppressions

Voir le fichier

@@ -745,6 +745,8 @@ struct mlo_mlme_ext_ops {
* 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,
@@ -752,6 +754,7 @@ enum mlo_link_force_mode {
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,
};
/**
@@ -760,10 +763,13 @@ enum mlo_link_force_mode {
* 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
*/
enum mlo_link_force_reason {
MLO_LINK_FORCE_REASON_CONNECT = 1,
MLO_LINK_FORCE_REASON_DISCONNECT = 2,
MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3,
};
/**
@@ -802,21 +808,31 @@ struct mlo_link_num_param {
* @reason: reason for the operation (enum mlo_link_force_reason)
* @num_link_entry: number of the valid entries for link_num
* @num_vdev_bitmap: number of the valid entries for vdev_bitmap
* @num_inactive_vdev_bitmap: number of the valid entries for
* inactive_vdev_bitmap
* @link_num: link number param array
* It's present only when force_mode is MLO_LINK_FORCE_MODE_ACTIVE_NUM or
* MLO_LINK_FORCE_MODE_INACTIVE_NUM
* @vdev_bitmap: active/inactive vdev bitmap array
* It will be present when force_mode is MLO_LINK_FORCE_MODE_ACTIVE,
* MLO_LINK_FORCE_MODE_INACTIVE, MLO_LINK_FORCE_MODE_NO_FORCE,
* MLO_LINK_FORCE_MODE_ACTIVE_NUM or MLO_LINK_FORCE_MODE_INACTIVE_NUM
* MLO_LINK_FORCE_MODE_ACTIVE_NUM or MLO_LINK_FORCE_MODE_INACTIVE_NUM,
* and MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE.
* For MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE, it includes the active vdev
* bitmaps
* @inactive_vdev_bitmap: inactive vdev bitmap array
* It will be present when force_mode is MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE,
* it includes the inactive vdev bitmaps
*/
struct mlo_link_set_active_param {
uint32_t force_mode;
uint32_t reason;
uint32_t num_link_entry;
uint32_t num_vdev_bitmap;
uint32_t num_inactive_vdev_bitmap;
struct mlo_link_num_param link_num[MLO_LINK_NUM_SZ];
uint32_t vdev_bitmap[MLO_VDEV_BITMAP_SZ];
uint32_t inactive_vdev_bitmap[MLO_VDEV_BITMAP_SZ];
};
/**