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@xxxxxxxxx> --- 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(-) diff --git a/include/net/mac80211.h b/include/net/mac80211.h index e2dba93e374f..7f659c21ffba 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -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; }; -- 2.1.4