*     ieee80211_remain_on_channel_expired(). This callback may sleep.
  * @cancel_remain_on_channel: Requests that an ongoing off-channel period is
  *     aborted before it expires. This callback may sleep.
- * @offchannel_tx: Transmit frame on another channel, wait for a response
- *     and return. Reliable TX status must be reported for the frame. If the
- *     return value is 1, then the @remain_on_channel will be used with a
- *     regular transmission (if supported.)
- * @offchannel_tx_cancel_wait: cancel wait associated with offchannel TX
  *
  * @set_ringparam: Set tx and rx ring sizes.
  *
                                 enum nl80211_channel_type channel_type,
                                 int duration);
        int (*cancel_remain_on_channel)(struct ieee80211_hw *hw);
-       int (*offchannel_tx)(struct ieee80211_hw *hw, struct sk_buff *skb,
-                            struct ieee80211_channel *chan,
-                            enum nl80211_channel_type channel_type,
-                            unsigned int wait);
-       int (*offchannel_tx_cancel_wait)(struct ieee80211_hw *hw);
        int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx);
        void (*get_ringparam)(struct ieee80211_hw *hw,
                              u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
 
 
        *cookie = (unsigned long) skb;
 
-       if (is_offchan && local->ops->offchannel_tx) {
-               int ret;
-
-               IEEE80211_SKB_CB(skb)->band = chan->band;
-
-               mutex_lock(&local->mtx);
-
-               if (local->hw_offchan_tx_cookie) {
-                       mutex_unlock(&local->mtx);
-                       return -EBUSY;
-               }
-
-               /* TODO: bitrate control, TX processing? */
-               ret = drv_offchannel_tx(local, skb, chan, channel_type, wait);
-
-               if (ret == 0)
-                       local->hw_offchan_tx_cookie = *cookie;
-               mutex_unlock(&local->mtx);
-
-               /*
-                * Allow driver to return 1 to indicate it wants to have the
-                * frame transmitted with a remain_on_channel + regular TX.
-                */
-               if (ret != 1)
-                       return ret;
-       }
-
        if (is_offchan && local->ops->remain_on_channel) {
                unsigned int duration;
                int ret;
 
        mutex_lock(&local->mtx);
 
-       if (local->ops->offchannel_tx_cancel_wait &&
-           local->hw_offchan_tx_cookie == cookie) {
-               ret = drv_offchannel_tx_cancel_wait(local);
-
-               if (!ret)
-                       local->hw_offchan_tx_cookie = 0;
-
-               mutex_unlock(&local->mtx);
-
-               return ret;
-       }
-
        if (local->ops->cancel_remain_on_channel) {
                cookie ^= 2;
                ret = ieee80211_cancel_remain_on_channel_hw(local, cookie);
 
        return ret;
 }
 
-static inline int drv_offchannel_tx(struct ieee80211_local *local,
-                                   struct sk_buff *skb,
-                                   struct ieee80211_channel *chan,
-                                   enum nl80211_channel_type channel_type,
-                                   unsigned int wait)
-{
-       int ret;
-
-       might_sleep();
-
-       trace_drv_offchannel_tx(local, skb, chan, channel_type, wait);
-       ret = local->ops->offchannel_tx(&local->hw, skb, chan,
-                                       channel_type, wait);
-       trace_drv_return_int(local, ret);
-
-       return ret;
-}
-
-static inline int drv_offchannel_tx_cancel_wait(struct ieee80211_local *local)
-{
-       int ret;
-
-       might_sleep();
-
-       trace_drv_offchannel_tx_cancel_wait(local);
-       ret = local->ops->offchannel_tx_cancel_wait(&local->hw);
-       trace_drv_return_int(local, ret);
-
-       return ret;
-}
-
 static inline int drv_set_ringparam(struct ieee80211_local *local,
                                    u32 tx, u32 rx)
 {
 
        unsigned int hw_roc_duration;
        u32 hw_roc_cookie;
        bool hw_roc_for_tx;
-       unsigned long hw_offchan_tx_cookie;
 
        /* dummy netdev for use w/ NAPI */
        struct net_device napi_dev;
 
                        local->hw_roc_skb_for_status = NULL;
                }
 
-               if (cookie == local->hw_offchan_tx_cookie)
-                       local->hw_offchan_tx_cookie = 0;
-
                cfg80211_mgmt_tx_status(
                        skb->dev, cookie, skb->data, skb->len,
                        !!(info->flags & IEEE80211_TX_STAT_ACK), GFP_ATOMIC);