]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Extend maximum allowed bandwidth update type QCA vendor interface
authorVeerendranath Jakkam <quic_vjakkam@quicinc.com>
Wed, 6 Sep 2023 20:45:26 +0000 (02:15 +0530)
committerJouni Malinen <j@w1.fi>
Tue, 19 Sep 2023 20:32:49 +0000 (23:32 +0300)
Extend QCA_WLAN_VENDOR_ATTR_CONFIG_CHAN_WIDTH_UPDATE_TYPE attribute to
support handling interoperability issues with APs which don't handle
the maximum bandwidth change indication correctly.

Additionally define an enum for possible values of
QCA_WLAN_VENDOR_ATTR_CONFIG_CHAN_WIDTH_UPDATE_TYPE.

Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
src/common/qca-vendor.h

index 7506ad0a40fc0d0c7826fe6d5aecec82945dd6ca..1b5286f93834231671747debdb379ce2ad5e9aa7 100644 (file)
@@ -3168,21 +3168,7 @@ enum qca_wlan_vendor_attr_config {
         * %QCA_WLAN_VENDOR_ATTR_CONFIG_MLO_LINKS to specify the maximum
         * supported channel width update type per-MLO link.
         *
-        * valid values:
-        * 0 - The maximum allowed bandwidth change is applicable for both Tx
-        *      and Rx paths. The driver shall conduct OMI operation as defined
-        *      in 26.9 (Operating mode indication) or OMN operation as
-        *      defined in 11.40 (Notification of operating mode
-        *      changes) in IEEE P802.11-REVme/D2.0 with AP to indicate the
-        *      change in the maximum allowed operating bandwidth.
-        * 1 - Limit the change in maximum allowed bandwidth only to Tx path.
-        *      In this case the driver doesn't need to conduct OMI/OMN
-        *      operation since %QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH is
-        *      expected to be less than the current connection maximum
-        *      negotiated bandwidth.
-        *      For example: Negotiated maximum bandwidth is 160 MHz and the new
-        *      maximum bandwidth configured is 80 MHz, now the driver limits
-        *      the maximum bandwidth to 80 MHz only in the Tx path.
+        * Uses enum qca_chan_width_update_type values.
         */
        QCA_WLAN_VENDOR_ATTR_CONFIG_CHAN_WIDTH_UPDATE_TYPE = 96,
 
@@ -16528,4 +16514,40 @@ enum qca_wlan_vendor_attr_tx_latency {
        QCA_WLAN_VENDOR_ATTR_TX_LATENCY_AFTER_LAST - 1,
 };
 
+/**
+ * enum qca_chan_width_update_type - Represents the possible values for
+ * %QCA_WLAN_VENDOR_ATTR_CONFIG_CHAN_WIDTH_UPDATE_TYPE.
+ *
+ * @QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX: The maximum allowed bandwidth change is
+ * applicable for both Tx and Rx paths. The driver shall conduct OMI operation
+ * as defined in 26.9 (Operating mode indication) or OMN operation as defined in
+ * 11.40 (Notification of operating mode changes) in IEEE P802.11-REVme/D2.0
+ * with AP to indicate the change in the maximum allowed operating bandwidth.
+ *
+ * @QCA_CHAN_WIDTH_UPDATE_TYPE_TX_ONLY: Limit the change in maximum allowed
+ * bandwidth only to Tx path. In this case the driver doesn't need to conduct
+ * OMI/OMN operation since %QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH is
+ * expected to be less than the current connection maximum negotiated bandwidth.
+ * For example: Negotiated maximum bandwidth is 160 MHz and the new maximum
+ * bandwidth configured is 80 MHz, now the driver limits the maximum bandwidth
+ * to 80 MHz only in the Tx path.
+ *
+ * @QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX_EXT: This is similar to
+ * %QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX but the driver doesn't change current
+ * phymode bandwidth to avoid interoperability issues with APs which don't
+ * handle the maximum bandwidth change indication correctly.
+ * For example: Negotiated maximum bandwidth is 40 MHz and the new maximum
+ * bandwidth configured is 20 MHz, now the driver indicates the change in
+ * maximum allowed bandwidth to the AP and limits the bandwidth to 20 MHz in the
+ * Tx path but keeps the phymode bandwidth as 40 MHz. This will avoid
+ * interoperability issues with APs which still use 40 MHz for sending the
+ * frames though it received maximum allowed bandwidth indication as 20 MHz
+ * from the STA.
+ */
+enum qca_chan_width_update_type {
+       QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX = 0,
+       QCA_CHAN_WIDTH_UPDATE_TYPE_TX_ONLY = 1,
+       QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX_EXT = 2,
+};
+
 #endif /* QCA_VENDOR_H */