Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 303bcd67 authored by spuligil's avatar spuligil Committed by Ravindra Konda
Browse files

fw-api: CL 25746138 - update fw common interface files

WMI: change variable-length arrays to not use [0] or [1]
Modify defs of WMI TLV structs that have variable-length arrays of the form type name[0]; or type name[1]; to instead have type name[];, while ensuring the size of the TLV struct remains unchanged.

Change-Id: I43e03ec0e426be4732cc1bded837fb5aaad36756
CRs-Fixed: 2262693
parent e0061fdc
Loading
Loading
Loading
Loading
+42 −8
Original line number Diff line number Diff line
@@ -77,6 +77,40 @@ extern "C" {
 */
#include <wmi_unified_vendor.h>
/* WMI_VAR_LEN_ARRAY1:
 * This macro is for converting the definition of existing variable-length
 * arrays within TLV structs of the form "type name[1];" to use the form
 * "type name[];" while ensuring that the length of the TLV struct is
 * unmodified by the conversion.
 * In general, any new variable-length structs should simply use
 * "type name[];" directly, rather than using WMI_VAR_LEN_ARRAY1.
 * However, if there's a legitimate reason to make the new variable-length
 * struct appear to not have a variable length, WMI_VAR_LEN_ARRAY1 can be
 * used for this purpose.
 */
#if !defined(__KERNEL__)
    #define WMI_DUMMY_ZERO_LEN_FIELD A_UINT32 dummy_zero_len_field[0]
#else
    /*
     * Certain build settings of the Linux kernel don't allow zero-element
     * arrays, and C++ doesn't allow zero-length empty structs.
     * Confirm that there's no build that combines kernel with C++.
     */
    #ifdef __cplusplus
    #error unsupported combination of kernel and C plus plus
    #endif
    #define WMI_DUMMY_ZERO_LEN_FIELD struct {} dummy_zero_len_field
#endif
#define WMI_VAR_LEN_ARRAY1(type, name) \
    union { \
        type name ## __first_elem; \
        struct { \
            WMI_DUMMY_ZERO_LEN_FIELD; \
            type name[]; \
        }; \
    }
#define ATH_MAC_LEN             6               /**< length of MAC in bytes */
#define WMI_EVENT_STATUS_SUCCESS 0 /* Success return status to host */
#define WMI_EVENT_STATUS_FAILURE 1 /* Failure return status to host */
@@ -3701,7 +3735,7 @@ typedef struct {
    /* bad channel range count, multi range is allowed, 0 means all channel clear */
    A_UINT32 num_freq_ranges;
    /* multi range with num_freq_ranges, LTE advance multi carrier, CDMA,etc */
    avoid_freq_range_desc avd_freq_range[0];
    avoid_freq_range_desc avd_freq_range[];
} wmi_wlan_avoid_freq_ranges_event;
#endif
@@ -5541,7 +5575,7 @@ typedef struct {
    /** # of channels to scan */
    A_UINT32 num_chan;
    /** channels in Mhz */
    A_UINT32 channel_list[1];
    WMI_VAR_LEN_ARRAY1(A_UINT32, channel_list);
} wmi_chan_list;
/**
@@ -5553,7 +5587,7 @@ typedef struct {
    /** number of bssids   */
    A_UINT32 num_bssid;
    /** bssid list         */
    wmi_mac_addr bssid_list[1];
    WMI_VAR_LEN_ARRAY1(wmi_mac_addr, bssid_list);
} wmi_bssid_list;
/**
@@ -5565,7 +5599,7 @@ typedef struct {
    /** number of bytes in ie data   */
    A_UINT32 ie_len;
    /** ie data array  (ie_len adjusted to  number of words  (ie_len + 4)/4)  */
    A_UINT32 ie_data[1];
    WMI_VAR_LEN_ARRAY1(A_UINT32, ie_data);
} wmi_ie_data;
/**
@@ -5629,7 +5663,7 @@ typedef struct {
    /** WMI_SSID_LIST_TAG */
    A_UINT32 tag;
    A_UINT32 num_ssids;
    wmi_ssid ssids[1];
    WMI_VAR_LEN_ARRAY1(wmi_ssid, ssids);
} wmi_ssid_list;
typedef struct {
@@ -5638,7 +5672,7 @@ typedef struct {
    /** Number of start TSF offsets */
    A_UINT32     num_offset;
    /** Array of start TSF offsets provided in milliseconds */
    A_UINT32     start_tsf_offset[1];
    WMI_VAR_LEN_ARRAY1(A_UINT32, start_tsf_offset);
} wmi_scan_start_offset;
/**
@@ -7046,7 +7080,7 @@ typedef struct {
    /** Phy error event header */
    wmi_single_phyerr_rx_hdr hdr;
    /** frame buffer */
    A_UINT8 bufp[1];
    WMI_VAR_LEN_ARRAY1(A_UINT8, bufp);
} wmi_single_phyerr_rx_event;
/* PHY ERROR MASK 0 */
@@ -22329,7 +22363,7 @@ typedef struct wmi_bcn_send_from_host {
/* cmd to support bcn snd for all vaps at once */
typedef struct wmi_pdev_send_bcn {
    A_UINT32 num_vdevs;
    wmi_bcn_send_from_host_cmd_fixed_param bcn_cmd[1];
    WMI_VAR_LEN_ARRAY1(wmi_bcn_send_from_host_cmd_fixed_param, bcn_cmd);
} wmi_pdev_send_bcn_cmd_t;
typedef struct wmi_fd_send_from_host {
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@
#define __WMI_VER_MINOR_    0
/** WMI revision number has to be incremented when there is a
 *  change that may or may not break compatibility. */
#define __WMI_REVISION_ 1439
#define __WMI_REVISION_ 1440

/** The Version Namespace should not be normally changed. Only
 *  host and firmware of the same WMI namespace will work