• James Prestwood's avatar
    nl80211: send event when CMD_FRAME duration expires · 1c38c7f2
    James Prestwood authored
    cfg80211_remain_on_channel_expired is used to notify userspace when
    the remain on channel duration expired by sending an event. There is
    no such equivalent to CMD_FRAME, where if offchannel and a duration
    is provided, the card will go offchannel for that duration. Currently
    there is no way for userspace to tell when that duration expired
    apart from setting an independent timeout. This timeout is quite
    erroneous as the kernel may not immediately send out the frame
    because of scheduling or work queue delays. In testing, it was found
    this timeout had to be quite large to accomidate any potential delays.
    
    A better solution is to have the kernel send an event when this
    duration has expired. There is already NL80211_CMD_FRAME_WAIT_CANCEL
    which can be used to cancel a NL80211_CMD_FRAME offchannel. Using this
    command matches perfectly to how NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL
    works, where its both used to cancel and notify if the duration has
    expired.
    Signed-off-by: default avatarJames Prestwood <james.prestwood@linux.intel.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    1c38c7f2
nl80211.c 451 KB