On 2019-03-14 15:57, Lorenzo Bianconi wrote: > Move mac_work delayed work in mt76_dev data structure since > it is used by all drivers and it will be reused adding mac work to > mt7615 > > Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > --- > drivers/net/wireless/mediatek/mt76/mt76.h | 2 ++ > drivers/net/wireless/mediatek/mt76/mt7603/init.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt7603/mac.c | 8 +++++--- > drivers/net/wireless/mediatek/mt76/mt7603/main.c | 10 +++++----- > drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h | 1 - > drivers/net/wireless/mediatek/mt76/mt76x0/pci.c | 4 ++-- > drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 4 ++-- > drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 - > drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 8 +++++--- > drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt76x2/usb_main.c | 2 +- > 14 files changed, 27 insertions(+), 23 deletions(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h > index edff44f32c8e..46bde2f55fce 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76.h > +++ b/drivers/net/wireless/mediatek/mt76/mt76.h > @@ -455,6 +455,8 @@ struct mt76_dev { > const struct mt76_queue_ops *queue_ops; > int tx_dma_idx[4]; > > + struct delayed_work mac_work; > + > wait_queue_head_t tx_wait; > struct sk_buff_head status_list; > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/init.c b/drivers/net/wireless/mediatek/mt76/mt7603/init.c > index d54dda67d036..ce1685d44888 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7603/init.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7603/init.c > @@ -510,7 +510,7 @@ int mt7603_register_device(struct mt7603_dev *dev) > bus_ops->rmw = mt7603_rmw; > dev->mt76.bus = bus_ops; > > - INIT_DELAYED_WORK(&dev->mac_work, mt7603_mac_work); > + INIT_DELAYED_WORK(&dev->mt76.mac_work, mt7603_mac_work); > tasklet_init(&dev->pre_tbtt_tasklet, mt7603_pre_tbtt_tasklet, > (unsigned long)dev); > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/mac.c b/drivers/net/wireless/mediatek/mt76/mt7603/mac.c > index 5f800467c628..d15d8316a108 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7603/mac.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7603/mac.c > @@ -1691,10 +1691,12 @@ mt7603_false_cca_check(struct mt7603_dev *dev) > > void mt7603_mac_work(struct work_struct *work) > { > - struct mt7603_dev *dev = container_of(work, struct mt7603_dev, > - mac_work.work); > + struct mt7603_dev *dev; > bool reset = false; > > + dev = (struct mt7603_dev *)container_of(work, struct mt76_dev, > + mac_work.work); Please drop the typecast and use this instead: container_of(work, struct mt7603_dev, mt76.mac_work.work) - Felix