staging: rtl8192e: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Derek Robson <robsonde@gmail.com> Cc: Suniel Mahesh <suniel.spartan@gmail.com> Cc: Malcolm Priestley <tvboxspy@gmail.com> Cc: Gargi Sharma <gs051095@gmail.com> Cc: Julia Lawall <Julia.Lawall@lip6.fr> Cc: "David S. Miller" <davem@davemloft.net> Cc: Johannes Berg <johannes.berg@intel.com> Cc: Yamanappagouda Patil <goudapatilk@gmail.com> Cc: Georgiana Rodica Chelu <georgiana.chelu93@gmail.com> Cc: Colin Ian King <colin.king@canonical.com> Cc: Baoyou Xie <baoyou.xie@linaro.org> Cc: devel@driverdev.osuosl.org Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Derek Robson <robsonde@gmail.com> Cc: Suniel Mahesh <suniel.spartan@gmail.com> Cc: Malcolm Priestley <tvboxspy@gmail.com> Cc: Gargi Sharma <gs051095@gmail.com> Cc: Julia Lawall <Julia.Lawall@lip6.fr> Cc: Yamanappagouda Patil <goudapatilk@gmail.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Johannes Berg <johannes.berg@intel.com> Cc: Georgiana Rodica Chelu <georgiana.chelu93@gmail.com> Cc: Colin Ian King <colin.king@canonical.com> Cc: Baoyou Xie <baoyou.xie@linaro.org> Cc: devel@driverdev.osuosl.org Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d2e5af14fc
commit
96bc1f2ae0
@ -85,7 +85,7 @@ static struct pci_driver rtl8192_pci_driver = {
|
|||||||
|
|
||||||
static short _rtl92e_is_tx_queue_empty(struct net_device *dev);
|
static short _rtl92e_is_tx_queue_empty(struct net_device *dev);
|
||||||
static void _rtl92e_watchdog_wq_cb(void *data);
|
static void _rtl92e_watchdog_wq_cb(void *data);
|
||||||
static void _rtl92e_watchdog_timer_cb(unsigned long data);
|
static void _rtl92e_watchdog_timer_cb(struct timer_list *t);
|
||||||
static void _rtl92e_hard_data_xmit(struct sk_buff *skb, struct net_device *dev,
|
static void _rtl92e_hard_data_xmit(struct sk_buff *skb, struct net_device *dev,
|
||||||
int rate);
|
int rate);
|
||||||
static int _rtl92e_hard_start_xmit(struct sk_buff *skb, struct net_device *dev);
|
static int _rtl92e_hard_start_xmit(struct sk_buff *skb, struct net_device *dev);
|
||||||
@ -766,12 +766,12 @@ static int _rtl92e_sta_up(struct net_device *dev, bool is_silent_reset)
|
|||||||
priv->bfirst_init = false;
|
priv->bfirst_init = false;
|
||||||
|
|
||||||
if (priv->polling_timer_on == 0)
|
if (priv->polling_timer_on == 0)
|
||||||
rtl92e_check_rfctrl_gpio_timer((unsigned long)dev);
|
rtl92e_check_rfctrl_gpio_timer(&priv->gpio_polling_timer);
|
||||||
|
|
||||||
if (priv->rtllib->state != RTLLIB_LINKED)
|
if (priv->rtllib->state != RTLLIB_LINKED)
|
||||||
rtllib_softmac_start_protocol(priv->rtllib, 0);
|
rtllib_softmac_start_protocol(priv->rtllib, 0);
|
||||||
rtllib_reset_queue(priv->rtllib);
|
rtllib_reset_queue(priv->rtllib);
|
||||||
_rtl92e_watchdog_timer_cb((unsigned long)dev);
|
_rtl92e_watchdog_timer_cb(&priv->watch_dog_timer);
|
||||||
|
|
||||||
if (!netif_queue_stopped(dev))
|
if (!netif_queue_stopped(dev))
|
||||||
netif_start_queue(dev);
|
netif_start_queue(dev);
|
||||||
@ -1075,13 +1075,10 @@ static short _rtl92e_init(struct net_device *dev)
|
|||||||
|
|
||||||
rtl92e_dm_init(dev);
|
rtl92e_dm_init(dev);
|
||||||
|
|
||||||
setup_timer(&priv->watch_dog_timer,
|
timer_setup(&priv->watch_dog_timer, _rtl92e_watchdog_timer_cb, 0);
|
||||||
_rtl92e_watchdog_timer_cb,
|
|
||||||
(unsigned long)dev);
|
|
||||||
|
|
||||||
setup_timer(&priv->gpio_polling_timer,
|
timer_setup(&priv->gpio_polling_timer, rtl92e_check_rfctrl_gpio_timer,
|
||||||
rtl92e_check_rfctrl_gpio_timer,
|
0);
|
||||||
(unsigned long)dev);
|
|
||||||
|
|
||||||
rtl92e_irq_disable(dev);
|
rtl92e_irq_disable(dev);
|
||||||
if (request_irq(dev->irq, _rtl92e_irq, IRQF_SHARED, dev->name, dev)) {
|
if (request_irq(dev->irq, _rtl92e_irq, IRQF_SHARED, dev->name, dev)) {
|
||||||
@ -1531,9 +1528,9 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
|||||||
RT_TRACE(COMP_TRACE, " <==RtUsbCheckForHangWorkItemCallback()\n");
|
RT_TRACE(COMP_TRACE, " <==RtUsbCheckForHangWorkItemCallback()\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _rtl92e_watchdog_timer_cb(unsigned long data)
|
static void _rtl92e_watchdog_timer_cb(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct r8192_priv *priv = rtllib_priv((struct net_device *)data);
|
struct r8192_priv *priv = from_timer(priv, t, watch_dog_timer);
|
||||||
|
|
||||||
schedule_delayed_work(&priv->watch_dog_wq, 0);
|
schedule_delayed_work(&priv->watch_dog_wq, 0);
|
||||||
mod_timer(&priv->watch_dog_timer, jiffies +
|
mod_timer(&priv->watch_dog_timer, jiffies +
|
||||||
@ -2535,7 +2532,7 @@ static int _rtl92e_pci_probe(struct pci_dev *pdev,
|
|||||||
RT_TRACE(COMP_INIT, "dev name: %s\n", dev->name);
|
RT_TRACE(COMP_INIT, "dev name: %s\n", dev->name);
|
||||||
|
|
||||||
if (priv->polling_timer_on == 0)
|
if (priv->polling_timer_on == 0)
|
||||||
rtl92e_check_rfctrl_gpio_timer((unsigned long)dev);
|
rtl92e_check_rfctrl_gpio_timer(&priv->gpio_polling_timer);
|
||||||
|
|
||||||
RT_TRACE(COMP_INIT, "Driver probe completed\n");
|
RT_TRACE(COMP_INIT, "Driver probe completed\n");
|
||||||
return 0;
|
return 0;
|
||||||
@ -2648,9 +2645,9 @@ bool rtl92e_disable_nic(struct net_device *dev)
|
|||||||
|
|
||||||
module_pci_driver(rtl8192_pci_driver);
|
module_pci_driver(rtl8192_pci_driver);
|
||||||
|
|
||||||
void rtl92e_check_rfctrl_gpio_timer(unsigned long data)
|
void rtl92e_check_rfctrl_gpio_timer(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct r8192_priv *priv = rtllib_priv((struct net_device *)data);
|
struct r8192_priv *priv = from_timer(priv, t, gpio_polling_timer);
|
||||||
|
|
||||||
priv->polling_timer_on = 1;
|
priv->polling_timer_on = 1;
|
||||||
|
|
||||||
|
@ -587,7 +587,7 @@ void rtl92e_tx_enable(struct net_device *);
|
|||||||
void rtl92e_hw_sleep_wq(void *data);
|
void rtl92e_hw_sleep_wq(void *data);
|
||||||
void rtl92e_commit(struct net_device *dev);
|
void rtl92e_commit(struct net_device *dev);
|
||||||
|
|
||||||
void rtl92e_check_rfctrl_gpio_timer(unsigned long data);
|
void rtl92e_check_rfctrl_gpio_timer(struct timer_list *t);
|
||||||
|
|
||||||
void rtl92e_hw_wakeup_wq(void *data);
|
void rtl92e_hw_wakeup_wq(void *data);
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ static void _rtl92e_dm_check_txrateandretrycount(struct net_device *dev);
|
|||||||
static void _rtl92e_dm_check_ac_dc_power(struct net_device *dev);
|
static void _rtl92e_dm_check_ac_dc_power(struct net_device *dev);
|
||||||
static void _rtl92e_dm_check_fsync(struct net_device *dev);
|
static void _rtl92e_dm_check_fsync(struct net_device *dev);
|
||||||
static void _rtl92e_dm_check_rf_ctrl_gpio(void *data);
|
static void _rtl92e_dm_check_rf_ctrl_gpio(void *data);
|
||||||
static void _rtl92e_dm_fsync_timer_callback(unsigned long data);
|
static void _rtl92e_dm_fsync_timer_callback(struct timer_list *t);
|
||||||
|
|
||||||
/*---------------------Define local function prototype-----------------------*/
|
/*---------------------Define local function prototype-----------------------*/
|
||||||
|
|
||||||
@ -2125,8 +2125,7 @@ static void _rtl92e_dm_init_fsync(struct net_device *dev)
|
|||||||
priv->rtllib->fsync_state = Default_Fsync;
|
priv->rtllib->fsync_state = Default_Fsync;
|
||||||
priv->framesyncMonitor = 1;
|
priv->framesyncMonitor = 1;
|
||||||
|
|
||||||
setup_timer(&priv->fsync_timer, _rtl92e_dm_fsync_timer_callback,
|
timer_setup(&priv->fsync_timer, _rtl92e_dm_fsync_timer_callback, 0);
|
||||||
(unsigned long)dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2137,10 +2136,10 @@ static void _rtl92e_dm_deinit_fsync(struct net_device *dev)
|
|||||||
del_timer_sync(&priv->fsync_timer);
|
del_timer_sync(&priv->fsync_timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _rtl92e_dm_fsync_timer_callback(unsigned long data)
|
static void _rtl92e_dm_fsync_timer_callback(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct net_device *dev = (struct net_device *)data;
|
struct r8192_priv *priv = from_timer(priv, t, fsync_timer);
|
||||||
struct r8192_priv *priv = rtllib_priv((struct net_device *)data);
|
struct net_device *dev = priv->rtllib->dev;
|
||||||
u32 rate_index, rate_count = 0, rate_count_diff = 0;
|
u32 rate_index, rate_count = 0, rate_count_diff = 0;
|
||||||
bool bSwitchFromCountDiff = false;
|
bool bSwitchFromCountDiff = false;
|
||||||
bool bDoubleTimeInterval = false;
|
bool bDoubleTimeInterval = false;
|
||||||
|
@ -91,7 +91,7 @@ int rtl92e_resume(struct pci_dev *pdev)
|
|||||||
pci_enable_wake(pdev, PCI_D0, 0);
|
pci_enable_wake(pdev, PCI_D0, 0);
|
||||||
|
|
||||||
if (priv->polling_timer_on == 0)
|
if (priv->polling_timer_on == 0)
|
||||||
rtl92e_check_rfctrl_gpio_timer((unsigned long)dev);
|
rtl92e_check_rfctrl_gpio_timer(&priv->gpio_polling_timer);
|
||||||
|
|
||||||
if (!netif_running(dev)) {
|
if (!netif_running(dev)) {
|
||||||
netdev_info(dev,
|
netdev_info(dev,
|
||||||
|
@ -528,18 +528,20 @@ void TsInitDelBA(struct rtllib_device *ieee,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaSetupTimeOut(unsigned long data)
|
void BaSetupTimeOut(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct tx_ts_record *pTxTs = (struct tx_ts_record *)data;
|
struct tx_ts_record *pTxTs = from_timer(pTxTs, t,
|
||||||
|
TxPendingBARecord.Timer);
|
||||||
|
|
||||||
pTxTs->bAddBaReqInProgress = false;
|
pTxTs->bAddBaReqInProgress = false;
|
||||||
pTxTs->bAddBaReqDelayed = true;
|
pTxTs->bAddBaReqDelayed = true;
|
||||||
pTxTs->TxPendingBARecord.bValid = false;
|
pTxTs->TxPendingBARecord.bValid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TxBaInactTimeout(unsigned long data)
|
void TxBaInactTimeout(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct tx_ts_record *pTxTs = (struct tx_ts_record *)data;
|
struct tx_ts_record *pTxTs = from_timer(pTxTs, t,
|
||||||
|
TxAdmittedBARecord.Timer);
|
||||||
struct rtllib_device *ieee = container_of(pTxTs, struct rtllib_device,
|
struct rtllib_device *ieee = container_of(pTxTs, struct rtllib_device,
|
||||||
TxTsRecord[pTxTs->num]);
|
TxTsRecord[pTxTs->num]);
|
||||||
TxTsDeleteBA(ieee, pTxTs);
|
TxTsDeleteBA(ieee, pTxTs);
|
||||||
@ -548,9 +550,10 @@ void TxBaInactTimeout(unsigned long data)
|
|||||||
DELBA_REASON_TIMEOUT);
|
DELBA_REASON_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RxBaInactTimeout(unsigned long data)
|
void RxBaInactTimeout(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct rx_ts_record *pRxTs = (struct rx_ts_record *)data;
|
struct rx_ts_record *pRxTs = from_timer(pRxTs, t,
|
||||||
|
RxAdmittedBARecord.Timer);
|
||||||
struct rtllib_device *ieee = container_of(pRxTs, struct rtllib_device,
|
struct rtllib_device *ieee = container_of(pRxTs, struct rtllib_device,
|
||||||
RxTsRecord[pRxTs->num]);
|
RxTsRecord[pRxTs->num]);
|
||||||
|
|
||||||
|
@ -16,17 +16,18 @@
|
|||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include "rtl819x_TS.h"
|
#include "rtl819x_TS.h"
|
||||||
|
|
||||||
static void TsSetupTimeOut(unsigned long data)
|
static void TsSetupTimeOut(struct timer_list *unused)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TsInactTimeout(unsigned long data)
|
static void TsInactTimeout(struct timer_list *unused)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RxPktPendingTimeout(unsigned long data)
|
static void RxPktPendingTimeout(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct rx_ts_record *pRxTs = (struct rx_ts_record *)data;
|
struct rx_ts_record *pRxTs = from_timer(pRxTs, t,
|
||||||
|
RxPktPendingTimer);
|
||||||
struct rtllib_device *ieee = container_of(pRxTs, struct rtllib_device,
|
struct rtllib_device *ieee = container_of(pRxTs, struct rtllib_device,
|
||||||
RxTsRecord[pRxTs->num]);
|
RxTsRecord[pRxTs->num]);
|
||||||
|
|
||||||
@ -96,9 +97,9 @@ static void RxPktPendingTimeout(unsigned long data)
|
|||||||
spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags);
|
spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TsAddBaProcess(unsigned long data)
|
static void TsAddBaProcess(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct tx_ts_record *pTxTs = (struct tx_ts_record *)data;
|
struct tx_ts_record *pTxTs = from_timer(pTxTs, t, TsAddBaTimer);
|
||||||
u8 num = pTxTs->num;
|
u8 num = pTxTs->num;
|
||||||
struct rtllib_device *ieee = container_of(pTxTs, struct rtllib_device,
|
struct rtllib_device *ieee = container_of(pTxTs, struct rtllib_device,
|
||||||
TxTsRecord[num]);
|
TxTsRecord[num]);
|
||||||
@ -150,24 +151,18 @@ void TSInitialize(struct rtllib_device *ieee)
|
|||||||
|
|
||||||
for (count = 0; count < TOTAL_TS_NUM; count++) {
|
for (count = 0; count < TOTAL_TS_NUM; count++) {
|
||||||
pTxTS->num = count;
|
pTxTS->num = count;
|
||||||
setup_timer(&pTxTS->TsCommonInfo.SetupTimer,
|
timer_setup(&pTxTS->TsCommonInfo.SetupTimer, TsSetupTimeOut,
|
||||||
TsSetupTimeOut,
|
0);
|
||||||
(unsigned long) pTxTS);
|
|
||||||
|
|
||||||
setup_timer(&pTxTS->TsCommonInfo.InactTimer,
|
timer_setup(&pTxTS->TsCommonInfo.InactTimer, TsInactTimeout,
|
||||||
TsInactTimeout,
|
0);
|
||||||
(unsigned long) pTxTS);
|
|
||||||
|
|
||||||
setup_timer(&pTxTS->TsAddBaTimer,
|
timer_setup(&pTxTS->TsAddBaTimer, TsAddBaProcess, 0);
|
||||||
TsAddBaProcess,
|
|
||||||
(unsigned long) pTxTS);
|
|
||||||
|
|
||||||
setup_timer(&pTxTS->TxPendingBARecord.Timer,
|
timer_setup(&pTxTS->TxPendingBARecord.Timer, BaSetupTimeOut,
|
||||||
BaSetupTimeOut,
|
0);
|
||||||
(unsigned long) pTxTS);
|
timer_setup(&pTxTS->TxAdmittedBARecord.Timer,
|
||||||
setup_timer(&pTxTS->TxAdmittedBARecord.Timer,
|
TxBaInactTimeout, 0);
|
||||||
TxBaInactTimeout,
|
|
||||||
(unsigned long) pTxTS);
|
|
||||||
|
|
||||||
ResetTxTsEntry(pTxTS);
|
ResetTxTsEntry(pTxTS);
|
||||||
list_add_tail(&pTxTS->TsCommonInfo.List,
|
list_add_tail(&pTxTS->TsCommonInfo.List,
|
||||||
@ -182,21 +177,16 @@ void TSInitialize(struct rtllib_device *ieee)
|
|||||||
pRxTS->num = count;
|
pRxTS->num = count;
|
||||||
INIT_LIST_HEAD(&pRxTS->RxPendingPktList);
|
INIT_LIST_HEAD(&pRxTS->RxPendingPktList);
|
||||||
|
|
||||||
setup_timer(&pRxTS->TsCommonInfo.SetupTimer,
|
timer_setup(&pRxTS->TsCommonInfo.SetupTimer, TsSetupTimeOut,
|
||||||
TsSetupTimeOut,
|
0);
|
||||||
(unsigned long) pRxTS);
|
|
||||||
|
|
||||||
setup_timer(&pRxTS->TsCommonInfo.InactTimer,
|
timer_setup(&pRxTS->TsCommonInfo.InactTimer, TsInactTimeout,
|
||||||
TsInactTimeout,
|
0);
|
||||||
(unsigned long) pRxTS);
|
|
||||||
|
|
||||||
setup_timer(&pRxTS->RxAdmittedBARecord.Timer,
|
timer_setup(&pRxTS->RxAdmittedBARecord.Timer,
|
||||||
RxBaInactTimeout,
|
RxBaInactTimeout, 0);
|
||||||
(unsigned long) pRxTS);
|
|
||||||
|
|
||||||
setup_timer(&pRxTS->RxPktPendingTimer,
|
timer_setup(&pRxTS->RxPktPendingTimer, RxPktPendingTimeout, 0);
|
||||||
RxPktPendingTimeout,
|
|
||||||
(unsigned long) pRxTS);
|
|
||||||
|
|
||||||
ResetRxTsEntry(pRxTS);
|
ResetRxTsEntry(pRxTS);
|
||||||
list_add_tail(&pRxTS->TsCommonInfo.List,
|
list_add_tail(&pRxTS->TsCommonInfo.List,
|
||||||
|
@ -2113,9 +2113,9 @@ void TsInitAddBA(struct rtllib_device *ieee, struct tx_ts_record *pTS,
|
|||||||
void TsInitDelBA(struct rtllib_device *ieee,
|
void TsInitDelBA(struct rtllib_device *ieee,
|
||||||
struct ts_common_info *pTsCommonInfo,
|
struct ts_common_info *pTsCommonInfo,
|
||||||
enum tr_select TxRxSelect);
|
enum tr_select TxRxSelect);
|
||||||
void BaSetupTimeOut(unsigned long data);
|
void BaSetupTimeOut(struct timer_list *t);
|
||||||
void TxBaInactTimeout(unsigned long data);
|
void TxBaInactTimeout(struct timer_list *t);
|
||||||
void RxBaInactTimeout(unsigned long data);
|
void RxBaInactTimeout(struct timer_list *t);
|
||||||
void ResetBaEntry(struct ba_record *pBA);
|
void ResetBaEntry(struct ba_record *pBA);
|
||||||
bool GetTs(struct rtllib_device *ieee, struct ts_common_info **ppTS, u8 *Addr,
|
bool GetTs(struct rtllib_device *ieee, struct ts_common_info **ppTS, u8 *Addr,
|
||||||
u8 TID, enum tr_select TxRxSelect, bool bAddNewTs);
|
u8 TID, enum tr_select TxRxSelect, bool bAddNewTs);
|
||||||
|
@ -393,10 +393,10 @@ static void rtllib_send_beacon(struct rtllib_device *ieee)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void rtllib_send_beacon_cb(unsigned long _ieee)
|
static void rtllib_send_beacon_cb(struct timer_list *t)
|
||||||
{
|
{
|
||||||
struct rtllib_device *ieee =
|
struct rtllib_device *ieee =
|
||||||
(struct rtllib_device *) _ieee;
|
from_timer(ieee, t, beacon_timer);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&ieee->beacon_lock, flags);
|
spin_lock_irqsave(&ieee->beacon_lock, flags);
|
||||||
@ -1427,9 +1427,11 @@ static void rtllib_associate_abort(struct rtllib_device *ieee)
|
|||||||
spin_unlock_irqrestore(&ieee->lock, flags);
|
spin_unlock_irqrestore(&ieee->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rtllib_associate_abort_cb(unsigned long dev)
|
static void rtllib_associate_abort_cb(struct timer_list *t)
|
||||||
{
|
{
|
||||||
rtllib_associate_abort((struct rtllib_device *) dev);
|
struct rtllib_device *dev = from_timer(dev, t, associate_timer);
|
||||||
|
|
||||||
|
rtllib_associate_abort(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rtllib_associate_step1(struct rtllib_device *ieee, u8 *daddr)
|
static void rtllib_associate_step1(struct rtllib_device *ieee, u8 *daddr)
|
||||||
@ -3012,13 +3014,9 @@ void rtllib_softmac_init(struct rtllib_device *ieee)
|
|||||||
|
|
||||||
ieee->tx_pending.txb = NULL;
|
ieee->tx_pending.txb = NULL;
|
||||||
|
|
||||||
setup_timer(&ieee->associate_timer,
|
timer_setup(&ieee->associate_timer, rtllib_associate_abort_cb, 0);
|
||||||
rtllib_associate_abort_cb,
|
|
||||||
(unsigned long) ieee);
|
|
||||||
|
|
||||||
setup_timer(&ieee->beacon_timer,
|
timer_setup(&ieee->beacon_timer, rtllib_send_beacon_cb, 0);
|
||||||
rtllib_send_beacon_cb,
|
|
||||||
(unsigned long) ieee);
|
|
||||||
|
|
||||||
INIT_DELAYED_WORK_RSL(&ieee->link_change_wq,
|
INIT_DELAYED_WORK_RSL(&ieee->link_change_wq,
|
||||||
(void *)rtllib_link_change_wq, ieee);
|
(void *)rtllib_link_change_wq, ieee);
|
||||||
|
Loading…
Reference in New Issue
Block a user