@@ -2078,147 +2078,213 @@ enum ieee80211_hw_flags {
/**
* struct ieee80211_hw - hardware information and state
*
- * This structure contains the configuration and hardware
- * information for an 802.11 PHY.
- *
- * @wiphy: This points to the &struct wiphy allocated for this
- * 802.11 PHY. You must fill in the @perm_addr and @dev
- * members of this structure using SET_IEEE80211_DEV()
- * and SET_IEEE80211_PERM_ADDR(). Additionally, all supported
- * bands (with channels, bitrates) are registered here.
- *
- * @conf: &struct ieee80211_conf, device configuration, don't use.
- *
- * @priv: pointer to private area that was allocated for driver use
- * along with this structure.
- *
- * @flags: hardware flags, see &enum ieee80211_hw_flags.
- *
- * @extra_tx_headroom: headroom to reserve in each transmit skb
- * for use by the driver (e.g. for transmit headers.)
- *
- * @extra_beacon_tailroom: tailroom to reserve in each beacon tx skb.
- * Can be used by drivers to add extra IEs.
- *
- * @max_signal: Maximum value for signal (rssi) in RX information, used
- * only when @IEEE80211_HW_SIGNAL_UNSPEC or @IEEE80211_HW_SIGNAL_DB
- *
- * @max_listen_interval: max listen interval in units of beacon interval
- * that HW supports
- *
- * @queues: number of available hardware transmit queues for
- * data packets. WMM/QoS requires at least four, these
- * queues need to have configurable access parameters.
- *
- * @rate_control_algorithm: rate control algorithm for this hardware.
- * If unset (NULL), the default algorithm will be used. Must be
- * set before calling ieee80211_register_hw().
- *
- * @vif_data_size: size (in bytes) of the drv_priv data area
- * within &struct ieee80211_vif.
- * @sta_data_size: size (in bytes) of the drv_priv data area
- * within &struct ieee80211_sta.
- * @chanctx_data_size: size (in bytes) of the drv_priv data area
- * within &struct ieee80211_chanctx_conf.
- * @txq_data_size: size (in bytes) of the drv_priv data area
- * within @struct ieee80211_txq.
- *
- * @max_rates: maximum number of alternate rate retry stages the hw
- * can handle.
- * @max_report_rates: maximum number of alternate rate retry stages
- * the hw can report back.
- * @max_rate_tries: maximum number of tries for each stage
- *
- * @max_rx_aggregation_subframes: maximum buffer size (number of
- * sub-frames) to be used for A-MPDU block ack receiver
- * aggregation.
- * This is only relevant if the device has restrictions on the
- * number of subframes, if it relies on mac80211 to do reordering
- * it shouldn't be set.
- *
- * @max_tx_aggregation_subframes: maximum number of subframes in an
- * aggregate an HT driver will transmit. Though ADDBA will advertise
- * a constant value of 64 as some older APs can crash if the window
- * size is smaller (an example is LinkSys WRT120N with FW v1.0.07
- * build 002 Jun 18 2012).
- *
- * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum
- * of 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list.
- *
- * @offchannel_tx_hw_queue: HW queue ID to use for offchannel TX
- * (if %IEEE80211_HW_QUEUE_CONTROL is set)
- *
- * @radiotap_mcs_details: lists which MCS information can the HW
- * reports, by default it is set to _MCS, _GI and _BW but doesn't
- * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_\* values, only
- * adding _BW is supported today.
- *
- * @radiotap_vht_details: lists which VHT MCS information the HW reports,
- * the default is _GI | _BANDWIDTH.
- * Use the %IEEE80211_RADIOTAP_VHT_KNOWN_\* values.
- *
- * @radiotap_timestamp: Information for the radiotap timestamp field; if the
- * 'units_pos' member is set to a non-negative value it must be set to
- * a combination of a IEEE80211_RADIOTAP_TIMESTAMP_UNIT_* and a
- * IEEE80211_RADIOTAP_TIMESTAMP_SPOS_* value, and then the timestamp
- * field will be added and populated from the &struct ieee80211_rx_status
- * device_timestamp. If the 'accuracy' member is non-negative, it's put
- * into the accuracy radiotap field and the accuracy known flag is set.
- *
- * @netdev_features: netdev features to be set in each netdev created
- * from this HW. Note that not all features are usable with mac80211,
- * other features will be rejected during HW registration.
- *
- * @uapsd_queues: This bitmap is included in (re)association frame to indicate
- * for each access category if it is uAPSD trigger-enabled and delivery-
- * enabled. Use IEEE80211_WMM_IE_STA_QOSINFO_AC_* to set this bitmap.
- * Each bit corresponds to different AC. Value '1' in specific bit means
- * that corresponding AC is both trigger- and delivery-enabled. '0' means
- * neither enabled.
- *
- * @uapsd_max_sp_len: maximum number of total buffered frames the WMM AP may
- * deliver to a WMM STA during any Service Period triggered by the WMM STA.
- * Use IEEE80211_WMM_IE_STA_QOSINFO_SP_* for correct values.
- *
- * @n_cipher_schemes: a size of an array of cipher schemes definitions.
- * @cipher_schemes: a pointer to an array of cipher scheme definitions
- * supported by HW.
- * @max_nan_de_entries: maximum number of NAN DE functions supported by the
- * device.
+ * This structure contains the configuration and hardware information for an
+ * 802.11 PHY.
*/
struct ieee80211_hw {
+ /**
+ * @conf: &struct ieee80211_conf, device configuration, don't use.
+ */
struct ieee80211_conf conf;
+
+ /**
+ * @wiphy: This points to the &struct wiphy allocated for this 802.11
+ * PHY. You must fill in the @perm_addr and @dev members of this
+ * structure using SET_IEEE80211_DEV() and
+ * SET_IEEE80211_PERM_ADDR(). Additionally, all supported bands (with
+ * channels, bitrates) are registered here.
+ */
struct wiphy *wiphy;
+
+ /**
+ * @rate_control_algorithm: rate control algorithm for this hardware.
+ * If unset (NULL), the default algorithm will be used. Must be set
+ * before calling ieee80211_register_hw().
+ */
const char *rate_control_algorithm;
+
+ /**
+ * @priv: pointer to private area that was allocated for driver use
+ * along with this structure.
+ */
void *priv;
+
+ /**
+ * @flags: hardware flags, see &enum ieee80211_hw_flags.
+ */
unsigned long flags[BITS_TO_LONGS(NUM_IEEE80211_HW_FLAGS)];
+
+ /**
+ * @extra_tx_headroom: headroom to reserve in each transmit skb for use
+ * by the driver (e.g. for transmit headers.)
+ */
unsigned int extra_tx_headroom;
+
+ /**
+ * @extra_beacon_tailroom: tailroom to reserve in each beacon tx skb.
+ * Can be used by drivers to add extra IEs.
+ */
unsigned int extra_beacon_tailroom;
+
+ /**
+ * @vif_data_size: size (in bytes) of the drv_priv data area
+ * within &struct ieee80211_vif.
+ */
int vif_data_size;
+
+ /**
+ * @sta_data_size: size (in bytes) of the drv_priv data area within
+ * &struct ieee80211_sta.
+ */
int sta_data_size;
+
+ /**
+ * @chanctx_data_size: size (in bytes) of the drv_priv data area within
+ * &struct ieee80211_chanctx_conf.
+ */
int chanctx_data_size;
+
+ /**
+ * @txq_data_size: size (in bytes) of the drv_priv data area
+ * within @struct ieee80211_txq.
+ */
int txq_data_size;
+
+ /**
+ * @queues: number of available hardware transmit queues for data
+ * packets. WMM/QoS requires at least four, these queues need to have
+ * configurable access parameters.
+ */
u16 queues;
+
+ /**
+ * @max_listen_interval: max listen interval in units of beacon interval
+ * that HW supports
+ */
u16 max_listen_interval;
+
+ /**
+ * @max_signal: Maximum value for signal (rssi) in RX information, used
+ * only when @IEEE80211_HW_SIGNAL_UNSPEC or @IEEE80211_HW_SIGNAL_DB
+ */
s8 max_signal;
+
+ /**
+ * @max_rates: maximum number of alternate rate retry stages the hw can
+ * handle.
+ */
u8 max_rates;
+
+ /**
+ * @max_report_rates: maximum number of alternate rate retry stages
+ * the hw can report back.
+ */
u8 max_report_rates;
+
+ /**
+ * @max_rate_tries: maximum number of tries for each stage
+ */
u8 max_rate_tries;
+
+ /**
+ * @max_rx_aggregation_subframes: maximum buffer size (number of
+ * sub-frames) to be used for A-MPDU block ack receiver aggregation.
+ * This is only relevant if the device has restrictions on the number of
+ * subframes, if it relies on mac80211 to do reordering it shouldn't be
+ * set.
+ */
u8 max_rx_aggregation_subframes;
+
+ /**
+ * @max_tx_aggregation_subframes: maximum number of subframes in an
+ * aggregate an HT driver will transmit. Though ADDBA will advertise a
+ * constant value of 64 as some older APs can crash if the window size
+ * is smaller (an example is LinkSys WRT120N with FW v1.0.07 build 002
+ * Jun 18 2012).
+ */
u8 max_tx_aggregation_subframes;
+
+ /**
+ * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum of
+ * 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list.
+ */
u8 max_tx_fragments;
+
+ /**
+ * @offchannel_tx_hw_queue: HW queue ID to use for offchannel TX (if
+ * %IEEE80211_HW_QUEUE_CONTROL is set)
+ */
u8 offchannel_tx_hw_queue;
+
+ /**
+ * @radiotap_mcs_details: lists which MCS information can the HW
+ * reports, by default it is set to _MCS, _GI and _BW but doesn't
+ * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_\* values, only adding
+ * _BW is supported today.
+ */
u8 radiotap_mcs_details;
+
+ /**
+ * @radiotap_vht_details: lists which VHT MCS information the HW
+ * reports, the default is _GI | _BANDWIDTH. Use the
+ * %IEEE80211_RADIOTAP_VHT_KNOWN_\* values.
+ */
u16 radiotap_vht_details;
+
+ /**
+ * @radiotap_timestamp: Information for the radiotap timestamp field; if
+ * the 'units_pos' member is set to a non-negative value it must be set
+ * to a combination of a IEEE80211_RADIOTAP_TIMESTAMP_UNIT_* and a
+ * IEEE80211_RADIOTAP_TIMESTAMP_SPOS_* value, and then the timestamp
+ * field will be added and populated from the &struct
+ * ieee80211_rx_status device_timestamp. If the 'accuracy' member is
+ * non-negative, it's put into the accuracy radiotap field and the
+ * accuracy known flag is set.
+ */
struct {
int units_pos;
s16 accuracy;
} radiotap_timestamp;
+
+ /**
+ * @netdev_features: netdev features to be set in each netdev created
+ * from this HW. Note that not all features are usable with mac80211,
+ * other features will be rejected during HW registration.
+ */
netdev_features_t netdev_features;
+
+ /**
+ * @uapsd_queues: This bitmap is included in (re)association frame to
+ * indicate for each access category if it is uAPSD trigger-enabled and
+ * delivery- enabled. Use IEEE80211_WMM_IE_STA_QOSINFO_AC_* to set this
+ * bitmap. Each bit corresponds to different AC. Value '1' in specific
+ * bit means that corresponding AC is both trigger- and
+ * delivery-enabled. '0' means neither enabled.
+ */
u8 uapsd_queues;
+
+ /**
+ * @uapsd_max_sp_len: maximum number of total buffered frames the WMM AP
+ * may deliver to a WMM STA during any Service Period triggered by the
+ * WMM STA. Use IEEE80211_WMM_IE_STA_QOSINFO_SP_* for correct values.
+ */
u8 uapsd_max_sp_len;
+
+ /**
+ * @n_cipher_schemes: a size of an array of cipher schemes definitions.
+ */
u8 n_cipher_schemes;
+
+ /**
+ * @cipher_schemes: a pointer to an array of cipher scheme definitions
+ * supported by HW.
+ */
const struct ieee80211_cipher_scheme *cipher_schemes;
+
+ /**
+ * @max_nan_de_entries: maximum number of NAN DE functions supported by
+ * the device.
+ */
u8 max_nan_de_entries;
};
It's easier to manage the kernel-doc for the fields when they documentation is next to the field. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- The same treatment is sorely needed for struct ieee80211_ops also, but I don't have the time... this would get rid of the rest of the warnings in mac80211.h. --- include/net/mac80211.h | 280 ++++++++++++++++++++++++++++++------------------- 1 file changed, 173 insertions(+), 107 deletions(-)