Search Linux Wireless

Re: [RFC PATCH 01/10] mac80211: A-MPDU Tx add session's and low level driver's API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ron,

Thanks for the explaining comments in your 0/10 mail, that really helps.

A few small comments.

> +/**
> + * ieee80211_start_tx_ba_session - Start a tx Block Ack session.
> + * @hw: pointer as obtained from ieee80211_alloc_hw().
> + * @ra: destination address of the BA session recipient
> + * @tid: the TID to BA on.
> + * @return: success if addBA request was sent, failure otherwise
> + *
> + * Although mac80211/low level driver/user space application can estimate
> + * the need to start aggregation on a certain RA/TID, the session level
> + * will be managed by the mac80211.
> + */
> +int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid);

It seems to me that this should be per-virtual interface instead of
per-hardware? I guess ultimately it won't make a difference because the
RA will be unique but I think we should still keep it per-vif where it
makes sense.

> +/**
> + * ieee80211_start_tx_ba_cb/_irqsafe - low level driver is ready to aggregate.
> + * @hw: pointer as obtained from ieee80211_alloc_hw().
> + * @ra: destination address of the BA session recipient.
> + * @tid: the TID to BA on.
> + *
> + * This function must be called by low level driver once it has
> + * finished with preparations for the BA session.
> + * Two versions of the function are provided for low-deriver's convinience,
> + * a regular and irqsafe version.
> + */
> +void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid);
> +void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, u8 *ra,
> +				      u16 tid);

You actually need to write kerneldoc in two different comments so it can
be embedded into output properly. I know, I should be writing the
mac80211 book... I'll get around to it again, I promise :) Could you
help with an 11n part of the book that explains how all this session
stuff works? Just some text, possibly within the header file as

/**
 * DOC: Aggregation
 *
 *...
 */

Also, should we just call it _irq instead of _irqsafe? I personally
dislike the rx_irqsafe naming too.

> +/**
> + * ieee80211_stop_tx_ba_session - Stop a Block Ack session.
> + * @hw: pointer as obtained from ieee80211_alloc_hw().
> + * @ra: destination address of the BA session recipient
> + * @tid: the TID to stop BA.
> + * @initiator: if indicates initiator DELBA frame will be sent.
> + * @return: error if no sta with matching da found, success otherwise

DA? The variable is called RA though.

> + * Although mac80211/low level driver/user space application can estimate
> + * the need to stop aggregation on a certain RA/TID, the session level
> + * will be managed by the mac80211.
> + */
> +int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw, u8 *ra,
> +				 u16 tid, u8 initiator);

Shouldn't the "initiator" argument get a proper enum type?

> +/**
> + * ieee80211_stop_BA_cb - low level driver is ready to stop aggregation.
> + * @hw: pointer as obtained from ieee80211_alloc_hw().
> + * @ra: destination address of the BA session recipient.
> + * @tid: the desired TID to BA on.
> + *
> + * This function must be called by low level driver once it has
> + * finished with preparations for the BA session tear down.
> + * Two versions of the function are provided for low-deriver's convinience,

Typo, should be "convenience". Same as with the other one though, you
need to copy the kerneldoc and explain them separately.

>  	ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_STOP,
> -					ra, tid, EINVAL);
> +					ra, tid, NULL);

I think the kerneldoc should mention that ssn can be NULL for the
RX_STOP notification.

johannes

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux