diff mbox

mesh: don't process mesh channel switch unless csa ie provided

Message ID 1524857196-29399-1-git-send-email-peter.oh@bowerswilkins.com (mailing list archive)
State Rejected
Delegated to: Johannes Berg
Headers show

Commit Message

Peter Oh April 27, 2018, 7:26 p.m. UTC
From: Peter Oh <peter.oh@bowerswilkins.com>

There is no meaning to call ieee80211_mesh_process_chnswitch
without CSA IE provided, since the function will always return error.

Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
---
 net/mac80211/mesh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Johannes Berg May 7, 2018, 7:44 p.m. UTC | #1
On Fri, 2018-04-27 at 12:26 -0700, peter.oh@bowerswilkins.com wrote:
> From: Peter Oh <peter.oh@bowerswilkins.com>
> 
> There is no meaning to call ieee80211_mesh_process_chnswitch
> without CSA IE provided, since the function will always return error.

I'm not convinced, an extended channel switch element might be present
instead?

johannes
Peter Oh May 7, 2018, 8:04 p.m. UTC | #2
On 05/07/2018 12:44 PM, Johannes Berg wrote:
> On Fri, 2018-04-27 at 12:26 -0700, peter.oh@bowerswilkins.com wrote:
>> From: Peter Oh <peter.oh@bowerswilkins.com>
>>
>> There is no meaning to call ieee80211_mesh_process_chnswitch
>> without CSA IE provided, since the function will always return error.
> I'm not convinced, an extended channel switch element might be present
> instead?
I expected the comment. Yes, extended channel switch element could be 
present instead of channel switch element which I missed to take care 
of. So you can ignore the patch for now and I'll get back with right 
patch for it.

Thanks,
Peter
Johannes Berg May 7, 2018, 8:06 p.m. UTC | #3
On Mon, 2018-05-07 at 13:04 -0700, Peter Oh wrote:
> 
> On 05/07/2018 12:44 PM, Johannes Berg wrote:
> > On Fri, 2018-04-27 at 12:26 -0700, peter.oh@bowerswilkins.com wrote:
> > > From: Peter Oh <peter.oh@bowerswilkins.com>
> > > 
> > > There is no meaning to call ieee80211_mesh_process_chnswitch
> > > without CSA IE provided, since the function will always return error.
> > 
> > I'm not convinced, an extended channel switch element might be present
> > instead?
> 
> I expected the comment. Yes, extended channel switch element could be 
> present instead of channel switch element which I missed to take care 
> of. So you can ignore the patch for now and I'll get back with right 
> patch for it.

Heh. Well, but then why bother at all? I mean, the inner function will
do the check and fail, and nothing will happen, so why bother?

johannes
Peter Oh May 7, 2018, 8:28 p.m. UTC | #4
On 05/07/2018 01:06 PM, Johannes Berg wrote:
> On Mon, 2018-05-07 at 13:04 -0700, Peter Oh wrote:
>> On 05/07/2018 12:44 PM, Johannes Berg wrote:
>>> On Fri, 2018-04-27 at 12:26 -0700, peter.oh@bowerswilkins.com wrote:
>>>> From: Peter Oh <peter.oh@bowerswilkins.com>
>>>>
>>>> There is no meaning to call ieee80211_mesh_process_chnswitch
>>>> without CSA IE provided, since the function will always return error.
>>> I'm not convinced, an extended channel switch element might be present
>>> instead?
>> I expected the comment. Yes, extended channel switch element could be
>> present instead of channel switch element which I missed to take care
>> of. So you can ignore the patch for now and I'll get back with right
>> patch for it.
> Heh. Well, but then why bother at all? I mean, the inner function will
> do the check and fail, and nothing will happen, so why bother?
>
My real concern is that ieee80211_mesh_process_chnswitch function could 
process at certain level of channel switch procedure although mesh 
channel switch parameter element is not given which is mandatory of CSA 
for mesh.
However the reason I didn't use mesh_chansw_params_ie to check is 
because even though it is correct for standard, I'm not sure if it's 
practically right. IMPO, sending CSA means devices (ap or mesh) detected 
radar, so the ultimate goal to achieve is to evacuate the channel 
although there is something missed in frames.

Peter
diff mbox

Patch

diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index d51da26e9c18..8ced757dff8d 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -1196,7 +1196,7 @@  static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
 			stype, mgmt, &elems, rx_status);
 
 	if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT &&
-	    !sdata->vif.csa_active)
+	    !sdata->vif.csa_active && elems.ch_switch_ie)
 		ieee80211_mesh_process_chnswitch(sdata, &elems, true);
 }