[rt2x00-users] [RFC 2/6] rt2x00: Introduce sta_add/remove callbacks

Ivo Van Doorn ivdoorn at gmail.com
Mon Jun 6 22:24:29 EST 2011


Hi,

> --- a/drivers/net/wireless/rt2x00/rt2x00mac.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
> @@ -564,6 +564,36 @@ int rt2x00mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>  EXPORT_SYMBOL_GPL(rt2x00mac_set_key);
>  #endif /* CONFIG_RT2X00_LIB_CRYPTO */
>
> +int rt2x00mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> +                     struct ieee80211_sta *sta)
> +{
> +       struct rt2x00_dev *rt2x00dev = hw->priv;
> +       struct rt2x00_sta *sta_priv = (struct rt2x00_sta *)sta->drv_priv;
> +
> +       sta_priv->wcid = rt2x00dev->ops->lib->sta_add(rt2x00dev, vif, sta);

Why can't the driver put the WCID inside the sta_priv pointer?
That way you allow the driver to return a status back to rt2x00lib
when sta_add failed.

> +int rt2x00mac_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> +                        struct ieee80211_sta *sta)
> +{
> +       struct rt2x00_dev *rt2x00dev = hw->priv;
> +       struct rt2x00_sta *sta_priv = (struct rt2x00_sta *)sta->drv_priv;
> +
> +       /*
> +        * If we never sent the STA to the device no need to clean it up.
> +        */
> +       if (sta_priv->wcid < 0)
> +               return 0;
> +
> +       rt2x00dev->ops->lib->sta_remove(rt2x00dev, sta_priv->wcid);
> +
> +       return 0;

The sta_remove function from the driver has an int as return value,
so perhaps we should send that value back to mac80211?

Ivo



More information about the users mailing list