ath10k.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211
       [not found] <201611090629.9JO64IrN%fengguang.wu@intel.com>
@ 2016-11-09 20:50 ` Julia Lawall
  2016-11-10  6:27   ` Tamizh chelvam
  0 siblings, 1 reply; 6+ messages in thread
From: Julia Lawall @ 2016-11-09 20:50 UTC (permalink / raw)
  To: c_traja; +Cc: tamizhchelvam, linux-wireless, kbuild-all, ath10k

It seems possible that one might like to release the mutex lock before the
return on line 7556.

julia



On Wed, 9 Nov 2016, kbuild test robot wrote:

> Hi Tamizh,
>
> [auto build test WARNING on ath6kl/ath-next]
> [cannot apply to v4.9-rc4 next-20161108]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/c_traja-qti-qualcomm-com/ath10k-Add-support-for-BTCOEX-feature/20161109-043718
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
> :::::: branch date: 2 hours ago
> :::::: commit date: 2 hours ago
>
> >> drivers/net/wireless/ath/ath10k/mac.c:7556:2-8: preceding lock on line 7545
>
> git remote add linux-review https://github.com/0day-ci/linux
> git remote update linux-review
> git checkout 2fc922b27f111b9e8089a3e94a17ee827e769c55
> vim +7556 drivers/net/wireless/ath/ath10k/mac.c
>
> 2fc922b2 Tamizh chelvam 2016-11-08  7539
> 2fc922b2 Tamizh chelvam 2016-11-08  7540  	if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags))) {
> 2fc922b2 Tamizh chelvam 2016-11-08  7541  		ret = -EINVAL;
> 2fc922b2 Tamizh chelvam 2016-11-08  7542  		goto exit;
> 2fc922b2 Tamizh chelvam 2016-11-08  7543  	}
> 2fc922b2 Tamizh chelvam 2016-11-08  7544
> 2fc922b2 Tamizh chelvam 2016-11-08 @7545  	mutex_lock(&ar->conf_mutex);
> 2fc922b2 Tamizh chelvam 2016-11-08  7546
> 2fc922b2 Tamizh chelvam 2016-11-08  7547  	if (ar->state != ATH10K_STATE_ON &&
> 2fc922b2 Tamizh chelvam 2016-11-08  7548  	    ar->state != ATH10K_STATE_RESTARTED) {
> 2fc922b2 Tamizh chelvam 2016-11-08  7549  		ret = -ENETDOWN;
> 2fc922b2 Tamizh chelvam 2016-11-08  7550  		goto exit;
> 2fc922b2 Tamizh chelvam 2016-11-08  7551  	}
> 2fc922b2 Tamizh chelvam 2016-11-08  7552
> 2fc922b2 Tamizh chelvam 2016-11-08  7553  	btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
> 2fc922b2 Tamizh chelvam 2016-11-08  7554
> 2fc922b2 Tamizh chelvam 2016-11-08  7555  	if (btcoex_prio > 0x3f)
> 2fc922b2 Tamizh chelvam 2016-11-08 @7556  		return -E2BIG;
> 2fc922b2 Tamizh chelvam 2016-11-08  7557
> 2fc922b2 Tamizh chelvam 2016-11-08  7558  	ret = ath10k_wmi_set_coex_param(ar, btcoex_prio);
> 2fc922b2 Tamizh chelvam 2016-11-08  7559
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211
  2016-11-09 20:50 ` [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211 Julia Lawall
@ 2016-11-10  6:27   ` Tamizh chelvam
  0 siblings, 0 replies; 6+ messages in thread
From: Tamizh chelvam @ 2016-11-10  6:27 UTC (permalink / raw)
  To: Julia Lawall; +Cc: c_traja, linux-wireless, kbuild-all, ath10k

On 2016-11-10 02:20, Julia Lawall wrote:
> It seems possible that one might like to release the mutex lock before 
> the
> return on line 7556.
> 
yes mutex lock needs to release. I will send a v2 patch with the change.

> julia
> 
> 
> 
> On Wed, 9 Nov 2016, kbuild test robot wrote:
> 
>> Hi Tamizh,
>> 
>> [auto build test WARNING on ath6kl/ath-next]
>> [cannot apply to v4.9-rc4 next-20161108]
>> [if your patch is applied to the wrong git tree, please drop us a note 
>> to help improve the system]
>> 
>> url:    
>> https://github.com/0day-ci/linux/commits/c_traja-qti-qualcomm-com/ath10k-Add-support-for-BTCOEX-feature/20161109-043718
>> base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
>> ath-next
>> :::::: branch date: 2 hours ago
>> :::::: commit date: 2 hours ago
>> 
>> >> drivers/net/wireless/ath/ath10k/mac.c:7556:2-8: preceding lock on line 7545
>> 
>> git remote add linux-review https://github.com/0day-ci/linux
>> git remote update linux-review
>> git checkout 2fc922b27f111b9e8089a3e94a17ee827e769c55
>> vim +7556 drivers/net/wireless/ath/ath10k/mac.c
>> 
>> 2fc922b2 Tamizh chelvam 2016-11-08  7539
>> 2fc922b2 Tamizh chelvam 2016-11-08  7540  	if 
>> (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags))) {
>> 2fc922b2 Tamizh chelvam 2016-11-08  7541  		ret = -EINVAL;
>> 2fc922b2 Tamizh chelvam 2016-11-08  7542  		goto exit;
>> 2fc922b2 Tamizh chelvam 2016-11-08  7543  	}
>> 2fc922b2 Tamizh chelvam 2016-11-08  7544
>> 2fc922b2 Tamizh chelvam 2016-11-08 @7545  
>> 	mutex_lock(&ar->conf_mutex);
>> 2fc922b2 Tamizh chelvam 2016-11-08  7546
>> 2fc922b2 Tamizh chelvam 2016-11-08  7547  	if (ar->state != 
>> ATH10K_STATE_ON &&
>> 2fc922b2 Tamizh chelvam 2016-11-08  7548  	    ar->state != 
>> ATH10K_STATE_RESTARTED) {
>> 2fc922b2 Tamizh chelvam 2016-11-08  7549  		ret = -ENETDOWN;
>> 2fc922b2 Tamizh chelvam 2016-11-08  7550  		goto exit;
>> 2fc922b2 Tamizh chelvam 2016-11-08  7551  	}
>> 2fc922b2 Tamizh chelvam 2016-11-08  7552
>> 2fc922b2 Tamizh chelvam 2016-11-08  7553  	btcoex_prio = 
>> ath10k_mac_get_btcoex_prio(btcoex_priority);
>> 2fc922b2 Tamizh chelvam 2016-11-08  7554
>> 2fc922b2 Tamizh chelvam 2016-11-08  7555  	if (btcoex_prio > 0x3f)
>> 2fc922b2 Tamizh chelvam 2016-11-08 @7556  		return -E2BIG;
>> 2fc922b2 Tamizh chelvam 2016-11-08  7557
>> 2fc922b2 Tamizh chelvam 2016-11-08  7558  	ret = 
>> ath10k_wmi_set_coex_param(ar, btcoex_prio);
>> 2fc922b2 Tamizh chelvam 2016-11-08  7559
>> 
>> ---
>> 0-DAY kernel test infrastructure                Open Source Technology 
>> Center
>> https://lists.01.org/pipermail/kbuild-all                   Intel 
>> Corporation
>> 

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211
  2016-11-08 23:49   ` kbuild test robot
@ 2016-11-09 10:46     ` Tamizh chelvam
  0 siblings, 0 replies; 6+ messages in thread
From: Tamizh chelvam @ 2016-11-09 10:46 UTC (permalink / raw)
  To: kbuild test robot; +Cc: c_traja, linux-wireless, kbuild-all, ath10k

On 2016-11-09 05:19, kbuild test robot wrote:
> Hi Tamizh,
> 
> [auto build test ERROR on ath6kl/ath-next]
> [cannot apply to v4.9-rc4 next-20161108]
> [if your patch is applied to the wrong git tree, please drop us a note
> to help improve the system]
> 
> url:
> https://github.com/0day-ci/linux/commits/c_traja-qti-qualcomm-com/ath10k-Add-support-for-BTCOEX-feature/20161109-043718
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
> ath-next
> config: xtensa-allmodconfig (attached as .config)
> compiler: xtensa-linux-gcc (GCC) 4.9.0
> reproduce:
>         wget
> https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
> -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         make.cross ARCH=xtensa
> 
> All error/warnings (new ones prefixed by >>):
> 
>>> drivers/net/wireless/ath/ath10k/mac.c:7508:35: warning: 'struct 
>>> cfg80211_btcoex_priority' declared inside parameter list
>     ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority 
> *btcoex_priority)
>                                       ^
>>> drivers/net/wireless/ath/ath10k/mac.c:7508:35: warning: its scope is 
>>> only this definition or declaration, which is probably not what you 
>>> want
>    drivers/net/wireless/ath/ath10k/mac.c: In function
> 'ath10k_mac_get_btcoex_prio':
>>> drivers/net/wireless/ath/ath10k/mac.c:7512:21: error: dereferencing 
>>> pointer to incomplete type
>      if (btcoex_priority->wlan_be_preferred)
>                         ^
>    drivers/net/wireless/ath/ath10k/mac.c:7513:18: error:
> 'WIPHY_WLAN_BE_PREFERRED' undeclared (first use in this function)
>       btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
>                      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7513:18: note: each
> undeclared identifier is reported only once for each function it
> appears in
>    drivers/net/wireless/ath/ath10k/mac.c:7515:21: error: dereferencing
> pointer to incomplete type
>      if (btcoex_priority->wlan_bk_preferred)
>                         ^
>    drivers/net/wireless/ath/ath10k/mac.c:7516:18: error:
> 'WIPHY_WLAN_BK_PREFERRED' undeclared (first use in this function)
>       btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
>                      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7518:21: error: dereferencing
> pointer to incomplete type
>      if (btcoex_priority->wlan_vi_preferred)
>                         ^
>    drivers/net/wireless/ath/ath10k/mac.c:7519:18: error:
> 'WIPHY_WLAN_VI_PREFERRED' undeclared (first use in this function)
>       btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
>                      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7521:21: error: dereferencing
> pointer to incomplete type
>      if (btcoex_priority->wlan_vo_preferred)
>                         ^
>    drivers/net/wireless/ath/ath10k/mac.c:7522:18: error:
> 'WIPHY_WLAN_VO_PREFERRED' undeclared (first use in this function)
>       btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
>                      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7524:21: error: dereferencing
> pointer to incomplete type
>      if (btcoex_priority->wlan_beacon_preferred)
>                         ^
>    drivers/net/wireless/ath/ath10k/mac.c:7525:18: error:
> 'WIPHY_WLAN_BEACON_PREFERRED' undeclared (first use in this function)
>       btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
>                      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7527:21: error: dereferencing
> pointer to incomplete type
>      if (btcoex_priority->wlan_mgmt_preferred)
>                         ^
>    drivers/net/wireless/ath/ath10k/mac.c:7528:18: error:
> 'WIPHY_WLAN_MGMT_PREFERRED' undeclared (first use in this function)
>       btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
>                      ^
>    drivers/net/wireless/ath/ath10k/mac.c: At top level:
>    drivers/net/wireless/ath/ath10k/mac.c:7534:11: warning: 'struct
> cfg80211_btcoex_priority' declared inside parameter list
>        struct cfg80211_btcoex_priority *btcoex_priority)
>               ^
>    drivers/net/wireless/ath/ath10k/mac.c: In function
> 'ath10k_mac_op_set_btcoex_priority':
>>> drivers/net/wireless/ath/ath10k/mac.c:7553:16: warning: passing 
>>> argument 1 of 'ath10k_mac_get_btcoex_prio' from incompatible pointer 
>>> type
>      btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
>                    ^
>    drivers/net/wireless/ath/ath10k/mac.c:7508:1: note: expected
> 'struct cfg80211_btcoex_priority *' but argument is of type 'struct
> cfg80211_btcoex_priority *'
>     ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority 
> *btcoex_priority)
>     ^
>    drivers/net/wireless/ath/ath10k/mac.c: At top level:
>    drivers/net/wireless/ath/ath10k/mac.c:7611:2: error: unknown field
> 'set_btcoex' specified in initializer
>      .set_btcoex                     = ath10k_mac_op_set_btcoex,
>      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7611:2: warning:
> initialization from incompatible pointer type
>    drivers/net/wireless/ath/ath10k/mac.c:7611:2: warning: (near
> initialization for 'ath10k_ops.reconfig_complete')
>    drivers/net/wireless/ath/ath10k/mac.c:7612:2: error: unknown field
> 'set_btcoex_priority' specified in initializer
>      .set_btcoex_priority  = ath10k_mac_op_set_btcoex_priority,
>      ^
>    drivers/net/wireless/ath/ath10k/mac.c:7612:2: warning:
> initialization from incompatible pointer type
>    drivers/net/wireless/ath/ath10k/mac.c:7612:2: warning: (near
> initialization for 'ath10k_ops.ipv6_addr_change')
>    drivers/net/wireless/ath/ath10k/mac.c: In function 
> 'ath10k_mac_register':
>    drivers/net/wireless/ath/ath10k/mac.c:8203:16: error: 'struct
> wiphy' has no member named 'btcoex_support_flags'
>       ar->hw->wiphy->btcoex_support_flags =
>                    ^
>    drivers/net/wireless/ath/ath10k/mac.c:8204:4: error:
> 'WIPHY_WLAN_BE_PREFERRED' undeclared (first use in this function)
>        WIPHY_WLAN_BE_PREFERRED |
>        ^
>    drivers/net/wireless/ath/ath10k/mac.c:8205:4: error:
> 'WIPHY_WLAN_BK_PREFERRED' undeclared (first use in this function)
>        WIPHY_WLAN_BK_PREFERRED |
>        ^
>    drivers/net/wireless/ath/ath10k/mac.c:8206:4: error:
> 'WIPHY_WLAN_VI_PREFERRED' undeclared (first use in this function)
>        WIPHY_WLAN_VI_PREFERRED |
>        ^
>    drivers/net/wireless/ath/ath10k/mac.c:8207:4: error:
> 'WIPHY_WLAN_VO_PREFERRED' undeclared (first use in this function)
>        WIPHY_WLAN_VO_PREFERRED |
>        ^
>    drivers/net/wireless/ath/ath10k/mac.c:8208:4: error:
> 'WIPHY_WLAN_BEACON_PREFERRED' undeclared (first use in this function)
>        WIPHY_WLAN_BEACON_PREFERRED |
>        ^
>    drivers/net/wireless/ath/ath10k/mac.c:8209:4: error:
> 'WIPHY_WLAN_MGMT_PREFERRED' undeclared (first use in this function)
>        WIPHY_WLAN_MGMT_PREFERRED;
>        ^
>    drivers/net/wireless/ath/ath10k/mac.c:8211:20: error: 'struct
> wiphy' has no member named 'btcoex_support_flags'
>           ar->hw->wiphy->btcoex_support_flags);
>                        ^
> 
This patch has dependency of "cfg80211: mac80211: BTCOEX feature 
support" patchset.

> vim +7512 drivers/net/wireless/ath/ath10k/mac.c
> 
>   7502		mutex_unlock(&ar->conf_mutex);
>   7503
>   7504		return ret;
>   7505	}
>   7506
>   7507	u32
>> 7508	ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority 
>> *btcoex_priority)
>   7509	{
>   7510		u32 btcoex_prio = 0;
>   7511
>> 7512		if (btcoex_priority->wlan_be_preferred)
>   7513			btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
>   7514
>   7515		if (btcoex_priority->wlan_bk_preferred)
>   7516			btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
>   7517
>   7518		if (btcoex_priority->wlan_vi_preferred)
>   7519			btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
>   7520
>   7521		if (btcoex_priority->wlan_vo_preferred)
>   7522			btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
>   7523
>   7524		if (btcoex_priority->wlan_beacon_preferred)
>   7525			btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
>   7526
>   7527		if (btcoex_priority->wlan_mgmt_preferred)
>> 7528			btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
>   7529
>   7530		return btcoex_prio;
>   7531	}
>   7532
>   7533	static int ath10k_mac_op_set_btcoex_priority(struct ieee80211_hw 
> *hw,
>   7534				struct cfg80211_btcoex_priority *btcoex_priority)
>   7535	{
>   7536		u32 btcoex_prio;
>   7537		struct ath10k *ar = hw->priv;
>   7538		int ret;
>   7539
>   7540		if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags))) {
>   7541			ret = -EINVAL;
>   7542			goto exit;
>   7543		}
>   7544
>   7545		mutex_lock(&ar->conf_mutex);
>   7546
>   7547		if (ar->state != ATH10K_STATE_ON &&
>   7548		    ar->state != ATH10K_STATE_RESTARTED) {
>   7549			ret = -ENETDOWN;
>   7550			goto exit;
>   7551		}
>   7552
>> 7553		btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
>   7554
>   7555		if (btcoex_prio > 0x3f)
>   7556			return -E2BIG;
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology 
> Center
> https://lists.01.org/pipermail/kbuild-all                   Intel 
> Corporation

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211
  2016-11-08 15:02 ` [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211 c_traja
  2016-11-08 22:54   ` kbuild test robot
@ 2016-11-08 23:49   ` kbuild test robot
  2016-11-09 10:46     ` Tamizh chelvam
  1 sibling, 1 reply; 6+ messages in thread
From: kbuild test robot @ 2016-11-08 23:49 UTC (permalink / raw)
  To: c_traja; +Cc: tamizhchelvam, linux-wireless, kbuild-all, ath10k

[-- Attachment #1: Type: text/plain, Size: 8521 bytes --]

Hi Tamizh,

[auto build test ERROR on ath6kl/ath-next]
[cannot apply to v4.9-rc4 next-20161108]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/c_traja-qti-qualcomm-com/ath10k-Add-support-for-BTCOEX-feature/20161109-043718
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
config: xtensa-allmodconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 4.9.0
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All error/warnings (new ones prefixed by >>):

>> drivers/net/wireless/ath/ath10k/mac.c:7508:35: warning: 'struct cfg80211_btcoex_priority' declared inside parameter list
    ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
                                      ^
>> drivers/net/wireless/ath/ath10k/mac.c:7508:35: warning: its scope is only this definition or declaration, which is probably not what you want
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_get_btcoex_prio':
>> drivers/net/wireless/ath/ath10k/mac.c:7512:21: error: dereferencing pointer to incomplete type
     if (btcoex_priority->wlan_be_preferred)
                        ^
   drivers/net/wireless/ath/ath10k/mac.c:7513:18: error: 'WIPHY_WLAN_BE_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
                     ^
   drivers/net/wireless/ath/ath10k/mac.c:7513:18: note: each undeclared identifier is reported only once for each function it appears in
   drivers/net/wireless/ath/ath10k/mac.c:7515:21: error: dereferencing pointer to incomplete type
     if (btcoex_priority->wlan_bk_preferred)
                        ^
   drivers/net/wireless/ath/ath10k/mac.c:7516:18: error: 'WIPHY_WLAN_BK_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
                     ^
   drivers/net/wireless/ath/ath10k/mac.c:7518:21: error: dereferencing pointer to incomplete type
     if (btcoex_priority->wlan_vi_preferred)
                        ^
   drivers/net/wireless/ath/ath10k/mac.c:7519:18: error: 'WIPHY_WLAN_VI_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
                     ^
   drivers/net/wireless/ath/ath10k/mac.c:7521:21: error: dereferencing pointer to incomplete type
     if (btcoex_priority->wlan_vo_preferred)
                        ^
   drivers/net/wireless/ath/ath10k/mac.c:7522:18: error: 'WIPHY_WLAN_VO_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
                     ^
   drivers/net/wireless/ath/ath10k/mac.c:7524:21: error: dereferencing pointer to incomplete type
     if (btcoex_priority->wlan_beacon_preferred)
                        ^
   drivers/net/wireless/ath/ath10k/mac.c:7525:18: error: 'WIPHY_WLAN_BEACON_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
                     ^
   drivers/net/wireless/ath/ath10k/mac.c:7527:21: error: dereferencing pointer to incomplete type
     if (btcoex_priority->wlan_mgmt_preferred)
                        ^
   drivers/net/wireless/ath/ath10k/mac.c:7528:18: error: 'WIPHY_WLAN_MGMT_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
                     ^
   drivers/net/wireless/ath/ath10k/mac.c: At top level:
   drivers/net/wireless/ath/ath10k/mac.c:7534:11: warning: 'struct cfg80211_btcoex_priority' declared inside parameter list
       struct cfg80211_btcoex_priority *btcoex_priority)
              ^
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_op_set_btcoex_priority':
>> drivers/net/wireless/ath/ath10k/mac.c:7553:16: warning: passing argument 1 of 'ath10k_mac_get_btcoex_prio' from incompatible pointer type
     btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
                   ^
   drivers/net/wireless/ath/ath10k/mac.c:7508:1: note: expected 'struct cfg80211_btcoex_priority *' but argument is of type 'struct cfg80211_btcoex_priority *'
    ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
    ^
   drivers/net/wireless/ath/ath10k/mac.c: At top level:
   drivers/net/wireless/ath/ath10k/mac.c:7611:2: error: unknown field 'set_btcoex' specified in initializer
     .set_btcoex                     = ath10k_mac_op_set_btcoex,
     ^
   drivers/net/wireless/ath/ath10k/mac.c:7611:2: warning: initialization from incompatible pointer type
   drivers/net/wireless/ath/ath10k/mac.c:7611:2: warning: (near initialization for 'ath10k_ops.reconfig_complete')
   drivers/net/wireless/ath/ath10k/mac.c:7612:2: error: unknown field 'set_btcoex_priority' specified in initializer
     .set_btcoex_priority  = ath10k_mac_op_set_btcoex_priority,
     ^
   drivers/net/wireless/ath/ath10k/mac.c:7612:2: warning: initialization from incompatible pointer type
   drivers/net/wireless/ath/ath10k/mac.c:7612:2: warning: (near initialization for 'ath10k_ops.ipv6_addr_change')
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_register':
   drivers/net/wireless/ath/ath10k/mac.c:8203:16: error: 'struct wiphy' has no member named 'btcoex_support_flags'
      ar->hw->wiphy->btcoex_support_flags =
                   ^
   drivers/net/wireless/ath/ath10k/mac.c:8204:4: error: 'WIPHY_WLAN_BE_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_BE_PREFERRED |
       ^
   drivers/net/wireless/ath/ath10k/mac.c:8205:4: error: 'WIPHY_WLAN_BK_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_BK_PREFERRED |
       ^
   drivers/net/wireless/ath/ath10k/mac.c:8206:4: error: 'WIPHY_WLAN_VI_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_VI_PREFERRED |
       ^
   drivers/net/wireless/ath/ath10k/mac.c:8207:4: error: 'WIPHY_WLAN_VO_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_VO_PREFERRED |
       ^
   drivers/net/wireless/ath/ath10k/mac.c:8208:4: error: 'WIPHY_WLAN_BEACON_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_BEACON_PREFERRED |
       ^
   drivers/net/wireless/ath/ath10k/mac.c:8209:4: error: 'WIPHY_WLAN_MGMT_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_MGMT_PREFERRED;
       ^
   drivers/net/wireless/ath/ath10k/mac.c:8211:20: error: 'struct wiphy' has no member named 'btcoex_support_flags'
          ar->hw->wiphy->btcoex_support_flags);
                       ^

vim +7512 drivers/net/wireless/ath/ath10k/mac.c

  7502		mutex_unlock(&ar->conf_mutex);
  7503	
  7504		return ret;
  7505	}
  7506	
  7507	u32
> 7508	ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
  7509	{
  7510		u32 btcoex_prio = 0;
  7511	
> 7512		if (btcoex_priority->wlan_be_preferred)
  7513			btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
  7514	
  7515		if (btcoex_priority->wlan_bk_preferred)
  7516			btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
  7517	
  7518		if (btcoex_priority->wlan_vi_preferred)
  7519			btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
  7520	
  7521		if (btcoex_priority->wlan_vo_preferred)
  7522			btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
  7523	
  7524		if (btcoex_priority->wlan_beacon_preferred)
  7525			btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
  7526	
  7527		if (btcoex_priority->wlan_mgmt_preferred)
> 7528			btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
  7529	
  7530		return btcoex_prio;
  7531	}
  7532	
  7533	static int ath10k_mac_op_set_btcoex_priority(struct ieee80211_hw *hw,
  7534				struct cfg80211_btcoex_priority *btcoex_priority)
  7535	{
  7536		u32 btcoex_prio;
  7537		struct ath10k *ar = hw->priv;
  7538		int ret;
  7539	
  7540		if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags))) {
  7541			ret = -EINVAL;
  7542			goto exit;
  7543		}
  7544	
  7545		mutex_lock(&ar->conf_mutex);
  7546	
  7547		if (ar->state != ATH10K_STATE_ON &&
  7548		    ar->state != ATH10K_STATE_RESTARTED) {
  7549			ret = -ENETDOWN;
  7550			goto exit;
  7551		}
  7552	
> 7553		btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
  7554	
  7555		if (btcoex_prio > 0x3f)
  7556			return -E2BIG;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 46112 bytes --]

[-- Attachment #3: Type: text/plain, Size: 146 bytes --]

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211
  2016-11-08 15:02 ` [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211 c_traja
@ 2016-11-08 22:54   ` kbuild test robot
  2016-11-08 23:49   ` kbuild test robot
  1 sibling, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2016-11-08 22:54 UTC (permalink / raw)
  To: c_traja; +Cc: tamizhchelvam, linux-wireless, kbuild-all, ath10k

[-- Attachment #1: Type: text/plain, Size: 10908 bytes --]

Hi Tamizh,

[auto build test ERROR on ath6kl/ath-next]
[cannot apply to v4.9-rc4 next-20161108]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/c_traja-qti-qualcomm-com/ath10k-Add-support-for-BTCOEX-feature/20161109-043718
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

>> drivers/net/wireless/ath/ath10k/mac.c:7508:35: warning: 'struct cfg80211_btcoex_priority' declared inside parameter list will not be visible outside of this definition or declaration
    ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_get_btcoex_prio':
>> drivers/net/wireless/ath/ath10k/mac.c:7512:21: error: dereferencing pointer to incomplete type 'struct cfg80211_btcoex_priority'
     if (btcoex_priority->wlan_be_preferred)
                        ^~
>> drivers/net/wireless/ath/ath10k/mac.c:7513:18: error: 'WIPHY_WLAN_BE_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
                     ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:7513:18: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/net/wireless/ath/ath10k/mac.c:7516:18: error: 'WIPHY_WLAN_BK_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
                     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/ath/ath10k/mac.c:7519:18: error: 'WIPHY_WLAN_VI_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
                     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/ath/ath10k/mac.c:7522:18: error: 'WIPHY_WLAN_VO_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
                     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/ath/ath10k/mac.c:7525:18: error: 'WIPHY_WLAN_BEACON_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/ath/ath10k/mac.c:7528:18: error: 'WIPHY_WLAN_MGMT_PREFERRED' undeclared (first use in this function)
      btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
                     ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c: At top level:
   drivers/net/wireless/ath/ath10k/mac.c:7534:11: warning: 'struct cfg80211_btcoex_priority' declared inside parameter list will not be visible outside of this definition or declaration
       struct cfg80211_btcoex_priority *btcoex_priority)
              ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_op_set_btcoex_priority':
>> drivers/net/wireless/ath/ath10k/mac.c:7553:43: error: passing argument 1 of 'ath10k_mac_get_btcoex_prio' from incompatible pointer type [-Werror=incompatible-pointer-types]
     btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
                                              ^~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:7508:1: note: expected 'struct cfg80211_btcoex_priority *' but argument is of type 'struct cfg80211_btcoex_priority *'
    ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c: At top level:
   drivers/net/wireless/ath/ath10k/mac.c:7611:2: error: unknown field 'set_btcoex' specified in initializer
     .set_btcoex                     = ath10k_mac_op_set_btcoex,
     ^
   drivers/net/wireless/ath/ath10k/mac.c:7611:36: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
     .set_btcoex                     = ath10k_mac_op_set_btcoex,
                                       ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:7611:36: note: (near initialization for 'ath10k_ops.reconfig_complete')
>> drivers/net/wireless/ath/ath10k/mac.c:7612:2: error: unknown field 'set_btcoex_priority' specified in initializer
     .set_btcoex_priority  = ath10k_mac_op_set_btcoex_priority,
     ^
   drivers/net/wireless/ath/ath10k/mac.c:7612:26: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
     .set_btcoex_priority  = ath10k_mac_op_set_btcoex_priority,
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:7612:26: note: (near initialization for 'ath10k_ops.ipv6_addr_change')
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_register':
>> drivers/net/wireless/ath/ath10k/mac.c:8203:16: error: 'struct wiphy' has no member named 'btcoex_support_flags'
      ar->hw->wiphy->btcoex_support_flags =
                   ^~
   drivers/net/wireless/ath/ath10k/mac.c:8204:4: error: 'WIPHY_WLAN_BE_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_BE_PREFERRED |
       ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:8205:4: error: 'WIPHY_WLAN_BK_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_BK_PREFERRED |
       ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:8206:4: error: 'WIPHY_WLAN_VI_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_VI_PREFERRED |
       ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:8207:4: error: 'WIPHY_WLAN_VO_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_VO_PREFERRED |
       ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:8208:4: error: 'WIPHY_WLAN_BEACON_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_BEACON_PREFERRED |
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:8209:4: error: 'WIPHY_WLAN_MGMT_PREFERRED' undeclared (first use in this function)
       WIPHY_WLAN_MGMT_PREFERRED;
       ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/ath/ath10k/mac.c:8211:20: error: 'struct wiphy' has no member named 'btcoex_support_flags'
          ar->hw->wiphy->btcoex_support_flags);
                       ^~
   cc1: some warnings being treated as errors

vim +7512 drivers/net/wireless/ath/ath10k/mac.c

  7502		mutex_unlock(&ar->conf_mutex);
  7503	
  7504		return ret;
  7505	}
  7506	
  7507	u32
> 7508	ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
  7509	{
  7510		u32 btcoex_prio = 0;
  7511	
> 7512		if (btcoex_priority->wlan_be_preferred)
> 7513			btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
  7514	
  7515		if (btcoex_priority->wlan_bk_preferred)
> 7516			btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
  7517	
  7518		if (btcoex_priority->wlan_vi_preferred)
> 7519			btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
  7520	
  7521		if (btcoex_priority->wlan_vo_preferred)
> 7522			btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
  7523	
  7524		if (btcoex_priority->wlan_beacon_preferred)
> 7525			btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
  7526	
  7527		if (btcoex_priority->wlan_mgmt_preferred)
> 7528			btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
  7529	
  7530		return btcoex_prio;
  7531	}
  7532	
  7533	static int ath10k_mac_op_set_btcoex_priority(struct ieee80211_hw *hw,
  7534				struct cfg80211_btcoex_priority *btcoex_priority)
  7535	{
  7536		u32 btcoex_prio;
  7537		struct ath10k *ar = hw->priv;
  7538		int ret;
  7539	
  7540		if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags))) {
  7541			ret = -EINVAL;
  7542			goto exit;
  7543		}
  7544	
  7545		mutex_lock(&ar->conf_mutex);
  7546	
  7547		if (ar->state != ATH10K_STATE_ON &&
  7548		    ar->state != ATH10K_STATE_RESTARTED) {
  7549			ret = -ENETDOWN;
  7550			goto exit;
  7551		}
  7552	
> 7553		btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
  7554	
  7555		if (btcoex_prio > 0x3f)
  7556			return -E2BIG;
  7557	
  7558		ret = ath10k_wmi_set_coex_param(ar, btcoex_prio);
  7559	
  7560		if (ret) {
  7561			ath10k_warn(ar, "failed to set btcoex priority: %d\n", ret);
  7562			goto exit;
  7563		}
  7564	
  7565	exit:
  7566		mutex_unlock(&ar->conf_mutex);
  7567		return ret;
  7568	}
  7569	
  7570	static const struct ieee80211_ops ath10k_ops = {
  7571		.tx				= ath10k_mac_op_tx,
  7572		.wake_tx_queue			= ath10k_mac_op_wake_tx_queue,
  7573		.start				= ath10k_start,
  7574		.stop				= ath10k_stop,
  7575		.config				= ath10k_config,
  7576		.add_interface			= ath10k_add_interface,
  7577		.remove_interface		= ath10k_remove_interface,
  7578		.configure_filter		= ath10k_configure_filter,
  7579		.bss_info_changed		= ath10k_bss_info_changed,
  7580		.set_coverage_class		= ath10k_mac_op_set_coverage_class,
  7581		.hw_scan			= ath10k_hw_scan,
  7582		.cancel_hw_scan			= ath10k_cancel_hw_scan,
  7583		.set_key			= ath10k_set_key,
  7584		.set_default_unicast_key        = ath10k_set_default_unicast_key,
  7585		.sta_state			= ath10k_sta_state,
  7586		.conf_tx			= ath10k_conf_tx,
  7587		.remain_on_channel		= ath10k_remain_on_channel,
  7588		.cancel_remain_on_channel	= ath10k_cancel_remain_on_channel,
  7589		.set_rts_threshold		= ath10k_set_rts_threshold,
  7590		.set_frag_threshold		= ath10k_mac_op_set_frag_threshold,
  7591		.flush				= ath10k_flush,
  7592		.tx_last_beacon			= ath10k_tx_last_beacon,
  7593		.set_antenna			= ath10k_set_antenna,
  7594		.get_antenna			= ath10k_get_antenna,
  7595		.reconfig_complete		= ath10k_reconfig_complete,
  7596		.get_survey			= ath10k_get_survey,
  7597		.set_bitrate_mask		= ath10k_mac_op_set_bitrate_mask,
  7598		.sta_rc_update			= ath10k_sta_rc_update,
  7599		.get_tsf			= ath10k_get_tsf,
  7600		.set_tsf			= ath10k_set_tsf,
  7601		.ampdu_action			= ath10k_ampdu_action,
  7602		.get_et_sset_count		= ath10k_debug_get_et_sset_count,
  7603		.get_et_stats			= ath10k_debug_get_et_stats,
  7604		.get_et_strings			= ath10k_debug_get_et_strings,
  7605		.add_chanctx			= ath10k_mac_op_add_chanctx,
  7606		.remove_chanctx			= ath10k_mac_op_remove_chanctx,
  7607		.change_chanctx			= ath10k_mac_op_change_chanctx,
  7608		.assign_vif_chanctx		= ath10k_mac_op_assign_vif_chanctx,
  7609		.unassign_vif_chanctx		= ath10k_mac_op_unassign_vif_chanctx,
  7610		.switch_vif_chanctx		= ath10k_mac_op_switch_vif_chanctx,
> 7611		.set_btcoex                     = ath10k_mac_op_set_btcoex,
> 7612		.set_btcoex_priority		= ath10k_mac_op_set_btcoex_priority,
  7613	
  7614		CFG80211_TESTMODE_CMD(ath10k_tm_cmd)
  7615	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 55638 bytes --]

[-- Attachment #3: Type: text/plain, Size: 146 bytes --]

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211
  2016-11-08 15:02 [PATCH 0/4] ath10k: Add support for BTCOEX feature c_traja
@ 2016-11-08 15:02 ` c_traja
  2016-11-08 22:54   ` kbuild test robot
  2016-11-08 23:49   ` kbuild test robot
  0 siblings, 2 replies; 6+ messages in thread
From: c_traja @ 2016-11-08 15:02 UTC (permalink / raw)
  To: ath10k; +Cc: Tamizh chelvam, tamizhchelvam, linux-wireless

From: Tamizh chelvam <c_traja@qti.qualcomm.com>

This patch adds support to update btcoex priority value via nl80211.
Here driver will be exposing the supported frame format for this
feature via btcoex_support_flags which is a member of
wiphy structure. 10.4 based firmware support this feature.
WMI service WMI_SERVICE_BTCOEX is used to identify the firmware support
of this feature. BTCOEX needs to enable to modify this value.

This patch has dependency of
"cfg80211: Add new NL80211_CMD_SET_BTCOEX_PRIORITY to support BTCOEX"
patch.

Signed-off-by: Tamizh chelvam <c_traja@qti.qualcomm.com>
---
 drivers/net/wireless/ath/ath10k/mac.c     |   76 +++++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi-ops.h |   19 ++++++++
 drivers/net/wireless/ath/ath10k/wmi.c     |   19 ++++++++
 drivers/net/wireless/ath/ath10k/wmi.h     |   18 +++++++
 4 files changed, 132 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f276391..6b0f1ea 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -7504,6 +7504,69 @@ static int ath10k_mac_op_set_btcoex(struct ieee80211_hw *hw, bool enabled)
 	return ret;
 }
 
+u32
+ath10k_mac_get_btcoex_prio(struct cfg80211_btcoex_priority *btcoex_priority)
+{
+	u32 btcoex_prio = 0;
+
+	if (btcoex_priority->wlan_be_preferred)
+		btcoex_prio |= WIPHY_WLAN_BE_PREFERRED;
+
+	if (btcoex_priority->wlan_bk_preferred)
+		btcoex_prio |= WIPHY_WLAN_BK_PREFERRED;
+
+	if (btcoex_priority->wlan_vi_preferred)
+		btcoex_prio |= WIPHY_WLAN_VI_PREFERRED;
+
+	if (btcoex_priority->wlan_vo_preferred)
+		btcoex_prio |= WIPHY_WLAN_VO_PREFERRED;
+
+	if (btcoex_priority->wlan_beacon_preferred)
+		btcoex_prio |= WIPHY_WLAN_BEACON_PREFERRED;
+
+	if (btcoex_priority->wlan_mgmt_preferred)
+		btcoex_prio |= WIPHY_WLAN_MGMT_PREFERRED;
+
+	return btcoex_prio;
+}
+
+static int ath10k_mac_op_set_btcoex_priority(struct ieee80211_hw *hw,
+			struct cfg80211_btcoex_priority *btcoex_priority)
+{
+	u32 btcoex_prio;
+	struct ath10k *ar = hw->priv;
+	int ret;
+
+	if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags))) {
+		ret = -EINVAL;
+		goto exit;
+	}
+
+	mutex_lock(&ar->conf_mutex);
+
+	if (ar->state != ATH10K_STATE_ON &&
+	    ar->state != ATH10K_STATE_RESTARTED) {
+		ret = -ENETDOWN;
+		goto exit;
+	}
+
+	btcoex_prio = ath10k_mac_get_btcoex_prio(btcoex_priority);
+
+	if (btcoex_prio > 0x3f)
+		return -E2BIG;
+
+	ret = ath10k_wmi_set_coex_param(ar, btcoex_prio);
+
+	if (ret) {
+		ath10k_warn(ar, "failed to set btcoex priority: %d\n", ret);
+		goto exit;
+	}
+
+exit:
+	mutex_unlock(&ar->conf_mutex);
+	return ret;
+}
+
 static const struct ieee80211_ops ath10k_ops = {
 	.tx				= ath10k_mac_op_tx,
 	.wake_tx_queue			= ath10k_mac_op_wake_tx_queue,
@@ -7546,6 +7609,7 @@ static int ath10k_mac_op_set_btcoex(struct ieee80211_hw *hw, bool enabled)
 	.unassign_vif_chanctx		= ath10k_mac_op_unassign_vif_chanctx,
 	.switch_vif_chanctx		= ath10k_mac_op_switch_vif_chanctx,
 	.set_btcoex                     = ath10k_mac_op_set_btcoex,
+	.set_btcoex_priority		= ath10k_mac_op_set_btcoex_priority,
 
 	CFG80211_TESTMODE_CMD(ath10k_tm_cmd)
 
@@ -8136,6 +8200,18 @@ int ath10k_mac_register(struct ath10k *ar)
 	 */
 	ar->hw->offchannel_tx_hw_queue = IEEE80211_MAX_QUEUES - 1;
 
+	if (test_bit(WMI_SERVICE_BTCOEX, ar->wmi.svc_map)) {
+		ar->hw->wiphy->btcoex_support_flags =
+			WIPHY_WLAN_BE_PREFERRED |
+			WIPHY_WLAN_BK_PREFERRED |
+			WIPHY_WLAN_VI_PREFERRED |
+			WIPHY_WLAN_VO_PREFERRED |
+			WIPHY_WLAN_BEACON_PREFERRED |
+			WIPHY_WLAN_MGMT_PREFERRED;
+		ath10k_dbg(ar, ATH10K_DBG_BOOT, "btcoex supported mask :%u\n",
+			   ar->hw->wiphy->btcoex_support_flags);
+	}
+
 	switch (ar->running_fw->fw_file.wmi_op_version) {
 	case ATH10K_FW_WMI_OP_VERSION_MAIN:
 		ar->hw->wiphy->iface_combinations = ath10k_if_comb;
diff --git a/drivers/net/wireless/ath/ath10k/wmi-ops.h b/drivers/net/wireless/ath/ath10k/wmi-ops.h
index c9a8bb1..90c8390 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
@@ -197,6 +197,8 @@ struct wmi_ops {
 					(struct ath10k *ar,
 					 enum wmi_bss_survey_req_type type);
 	struct sk_buff *(*gen_echo)(struct ath10k *ar, u32 value);
+	struct sk_buff *(*gen_set_coex_param)(struct ath10k *ar,
+					      u32 btcoex_prio);
 };
 
 int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id);
@@ -1411,4 +1413,21 @@ struct wmi_ops {
 	return ath10k_wmi_cmd_send(ar, skb, wmi->cmd->echo_cmdid);
 }
 
+static inline int
+ath10k_wmi_set_coex_param(struct ath10k *ar, u32 btcoex_prio)
+{
+	struct sk_buff *skb;
+
+	if (!ar->wmi.ops->gen_set_coex_param)
+		return -EOPNOTSUPP;
+
+	skb = ar->wmi.ops->gen_set_coex_param(ar, btcoex_prio);
+
+	if (IS_ERR(skb))
+		return PTR_ERR(skb);
+
+	return ath10k_wmi_cmd_send(ar, skb,
+				   ar->wmi.cmd->set_coex_param_cmdid);
+}
+
 #endif
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 387c4ee..de35c17 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -710,6 +710,7 @@
 	.pdev_bss_chan_info_request_cmdid =
 			WMI_10_4_PDEV_BSS_CHAN_INFO_REQUEST_CMDID,
 	.ext_resource_cfg_cmdid = WMI_10_4_EXT_RESOURCE_CFG_CMDID,
+	.set_coex_param_cmdid = WMI_10_4_BTCOEX_CFG_CMDID,
 };
 
 /* MAIN WMI VDEV param map */
@@ -7859,6 +7860,23 @@ static int ath10k_wmi_10_4_op_get_vdev_subtype(struct ath10k *ar,
 	return 0;
 }
 
+static struct sk_buff *
+ath10k_wmi_10_4_op_gen_set_coex_param(struct ath10k *ar,
+				      u32 btcoex_prio)
+{
+	struct wmi_set_coex_param_10_4_cmd *cmd;
+	struct sk_buff *skb;
+
+	skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd));
+	if (!skb)
+		return ERR_PTR(-ENOMEM);
+
+	cmd = (struct wmi_set_coex_param_10_4_cmd *)skb->data;
+	cmd->btcoex_prio = __cpu_to_le32(btcoex_prio);
+
+	ath10k_dbg(ar, ATH10K_DBG_WMI, "BTCOEX priority :%u\n", btcoex_prio);
+	return skb;
+}
 static const struct wmi_ops wmi_ops = {
 	.rx = ath10k_wmi_op_rx,
 	.map_svc = wmi_main_svc_map,
@@ -8205,6 +8223,7 @@ static int ath10k_wmi_10_4_op_get_vdev_subtype(struct ath10k *ar,
 	.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
 	.gen_echo = ath10k_wmi_op_gen_echo,
 	.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
+	.gen_set_coex_param = ath10k_wmi_10_4_op_gen_set_coex_param,
 };
 
 int ath10k_wmi_attach(struct ath10k *ar)
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 1b243c8..3a739e3 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -184,6 +184,8 @@ enum wmi_service {
 	WMI_SERVICE_TX_MODE_PUSH_ONLY,
 	WMI_SERVICE_TX_MODE_PUSH_PULL,
 	WMI_SERVICE_TX_MODE_DYNAMIC,
+	WMI_SERVICE_VDEV_RX_FILTER,
+	WMI_SERVICE_BTCOEX,
 
 	/* keep last */
 	WMI_SERVICE_MAX,
@@ -310,6 +312,8 @@ enum wmi_10_4_service {
 	WMI_10_4_SERVICE_TX_MODE_PUSH_ONLY,
 	WMI_10_4_SERVICE_TX_MODE_PUSH_PULL,
 	WMI_10_4_SERVICE_TX_MODE_DYNAMIC,
+	WMI_10_4_SERVICE_VDEV_RX_FILTER,
+	WMI_10_4_SERVICE_BTCOEX,
 };
 
 static inline char *wmi_service_name(int service_id)
@@ -408,6 +412,7 @@ static inline char *wmi_service_name(int service_id)
 	SVCSTR(WMI_SERVICE_TX_MODE_PUSH_ONLY);
 	SVCSTR(WMI_SERVICE_TX_MODE_PUSH_PULL);
 	SVCSTR(WMI_SERVICE_TX_MODE_DYNAMIC);
+	SVCSTR(WMI_SERVICE_BTCOEX);
 	default:
 		return NULL;
 	}
@@ -663,6 +668,8 @@ static inline void wmi_10_4_svc_map(const __le32 *in, unsigned long *out,
 	       WMI_SERVICE_TX_MODE_PUSH_PULL, len);
 	SVCMAP(WMI_10_4_SERVICE_TX_MODE_DYNAMIC,
 	       WMI_SERVICE_TX_MODE_DYNAMIC, len);
+	SVCMAP(WMI_10_4_SERVICE_BTCOEX,
+	       WMI_SERVICE_BTCOEX, len);
 }
 
 #undef SVCMAP
@@ -837,6 +844,7 @@ struct wmi_cmd_map {
 	u32 pdev_bss_chan_info_request_cmdid;
 	u32 pdev_enable_adaptive_cca_cmdid;
 	u32 ext_resource_cfg_cmdid;
+	u32 set_coex_param_cmdid;
 };
 
 /*
@@ -1646,6 +1654,11 @@ enum wmi_10_4_cmd_id {
 	WMI_10_4_EXT_RESOURCE_CFG_CMDID,
 	WMI_10_4_VDEV_SET_IE_CMDID,
 	WMI_10_4_SET_LTEU_CONFIG_CMDID,
+	WMI_10_4_ATF_SSID_GROUPING_REQUEST_CMDID,
+	WMI_10_4_PEER_ATF_EXT_REQUEST_CMDID,
+	WMI_10_4_SET_PERIODIC_CHANNEL_STATS_CONFIG,
+	WMI_10_4_PEER_BWF_REQUEST_CMDID,
+	WMI_10_4_BTCOEX_CFG_CMDID,
 	WMI_10_4_PDEV_UTF_CMDID = WMI_10_4_END_CMDID - 1,
 };
 
@@ -2723,6 +2736,11 @@ struct wmi_ext_resource_config_10_4_cmd {
 	__le32 fw_feature_bitmap;
 };
 
+struct wmi_set_coex_param_10_4_cmd {
+	/* contains wlan priority frame type value preferred over bt */
+	__le32 btcoex_prio;
+};
+
 /* strucutre describing host memory chunk. */
 struct host_memory_chunk {
 	/* id of the request that is passed up in service ready */
-- 
1.7.9.5


_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-11-10  6:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <201611090629.9JO64IrN%fengguang.wu@intel.com>
2016-11-09 20:50 ` [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211 Julia Lawall
2016-11-10  6:27   ` Tamizh chelvam
2016-11-08 15:02 [PATCH 0/4] ath10k: Add support for BTCOEX feature c_traja
2016-11-08 15:02 ` [PATCH 2/4] ath10k: Add support to update btcoex priority value via nl80211 c_traja
2016-11-08 22:54   ` kbuild test robot
2016-11-08 23:49   ` kbuild test robot
2016-11-09 10:46     ` Tamizh chelvam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).