Search Linux Wireless

Re: [PATCH 4/7] mt76x02: minor beaconing init changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Disable BEACON timer during init and remove interrupt registers
> initialization form generic code since they are PCIe specific.
> 
> Signed-off-by: Stanislaw Gruszka <sgruszka@xxxxxxxxxx>
> ---
>  drivers/net/wireless/mediatek/mt76/mt76x0/pci.c      |  7 +++++++
>  drivers/net/wireless/mediatek/mt76/mt76x02_util.c    | 11 ++++-------
>  drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c |  8 ++++++++
>  3 files changed, 19 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
> index 1472c8699b29..cb68af5b7478 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
> @@ -128,6 +128,13 @@ static int mt76x0e_register_device(struct mt76x02_dev *dev)
>  	if (err < 0)
>  		return err;
>  
> +	/* Beaconing: fire a pre-TBTT interrupt 8 ms before TBTT */
> +	mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT,
> +		       8 << 4);
> +	mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
> +		       MT_DFS_GP_INTERVAL);
> +	mt76_wr(dev, MT_INT_TIMER_EN, 0);

What about having a dedicated routine for that configuration since we need it
for mt76x2 and mt76x0 drivers?

> +
>  	if (mt76_chip(&dev->mt76) == 0x7610) {
>  		u16 val;
>  
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> index 02139dce4800..741ecd723b8e 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> @@ -667,13 +667,10 @@ void mt76x02_init_beacon_config(struct mt76x02_dev *dev)
>  {
>  	int i;
>  
> -	/* Fire a pre-TBTT interrupt 8 ms before TBTT */
> -	mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT,
> -		       8 << 4);
> -	mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
> -		       MT_DFS_GP_INTERVAL);
> -	mt76_wr(dev, MT_INT_TIMER_EN, 0);
> -
> +	mt76_clear(dev, MT_BEACON_TIME_CFG, (MT_BEACON_TIME_CFG_TIMER_EN |
> +					     MT_BEACON_TIME_CFG_SYNC_MODE |
> +					     MT_BEACON_TIME_CFG_TBTT_EN |
> +					     MT_BEACON_TIME_CFG_BEACON_TX));
>  	mt76_wr(dev, MT_BCN_BYPASS_MASK, 0xffff);
>  
>  	for (i = 0; i < 8; i++)
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
> index 0ccaa64d97ec..f86ff035fa7f 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
> @@ -121,6 +121,14 @@ static int mt76x2_mac_reset(struct mt76x02_dev *dev, bool hard)
>  
>  	mt76x02_mac_setaddr(dev, macaddr);
>  	mt76x02_init_beacon_config(dev);
> +
> +	/* Fire a pre-TBTT interrupt 8 ms before TBTT */
> +	mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT,
> +		       8 << 4);
> +	mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
> +		       MT_DFS_GP_INTERVAL);
> +	mt76_wr(dev, MT_INT_TIMER_EN, 0);
> +
>  	if (!hard)
>  		return 0;
>  
> -- 
> 1.9.3
> 



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux