* [PATCH 0/3] ath11k: Add Mesh mode support @ 2019-04-17 9:29 Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 1/3] ath11k: enable mesh mode Rajkumar Manoharan ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Rajkumar Manoharan @ 2019-04-17 9:29 UTC (permalink / raw) To: ath11k; +Cc: Rajkumar Manoharan Hi, Posting initial patches to bring Mesh support to ath11k. There are known issues which is also captured in first patch. Known issues: - Depends on firmware fix to allow other BSS frames - Failed to complete path negotiation in secured mode - Target assert while shutting down interface in secured mode -Rajkumar Rajkumar Manoharan (3): ath11k: enable mesh mode ath11k: allow 4 address transmission for mesh packet ath11k: remove addition check for PMF drivers/net/wireless/ath/ath11k/dp_tx.c | 3 +++ drivers/net/wireless/ath/ath11k/mac.c | 19 ++++++++++++++++++- drivers/net/wireless/ath/ath11k/wmi.c | 21 ++++++++++----------- drivers/net/wireless/ath/ath11k/wmi.h | 11 +++++++---- 4 files changed, 38 insertions(+), 16 deletions(-) -- 1.9.1 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/3] ath11k: enable mesh mode 2019-04-17 9:29 [PATCH 0/3] ath11k: Add Mesh mode support Rajkumar Manoharan @ 2019-04-17 9:29 ` Rajkumar Manoharan 2019-04-17 9:56 ` John Crispin 2019-04-17 9:29 ` [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 3/3] ath11k: remove unnecessary check for PMF Rajkumar Manoharan 2 siblings, 1 reply; 8+ messages in thread From: Rajkumar Manoharan @ 2019-04-17 9:29 UTC (permalink / raw) To: ath11k; +Cc: Rajkumar Manoharan Allow Meshpoint configuration from ath11k and advertise MP support to mac80211. Firmware supports mesh type from WLAN.HK.2.1.0.1-00113-QCAHKSWPL_SILICONZ-1 onwards. As of now, only open auth mesh networking is working. Known issues: - Depends on firmware fix to allow other BSS frames - Failed to complete path negotiation in secured mode - Target assert while shutting down interface in secured mode Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org> --- drivers/net/wireless/ath/ath11k/mac.c | 10 +++++++++- drivers/net/wireless/ath/ath11k/wmi.h | 11 +++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 12a2c4421264..b384395bb08c 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -2579,6 +2579,7 @@ static int ath11k_sta_state(struct ieee80211_hw *hw, } else if (old_state == IEEE80211_STA_AUTH && new_state == IEEE80211_STA_ASSOC && (vif->type == NL80211_IFTYPE_AP || + vif->type == NL80211_IFTYPE_MESH_POINT || vif->type == NL80211_IFTYPE_ADHOC)) { ret = ath11k_station_assoc(ar, vif, sta, false); if (ret) @@ -2591,6 +2592,7 @@ static int ath11k_sta_state(struct ieee80211_hw *hw, } else if (old_state == IEEE80211_STA_ASSOC && new_state == IEEE80211_STA_AUTH && (vif->type == NL80211_IFTYPE_AP || + vif->type == NL80211_IFTYPE_MESH_POINT || vif->type == NL80211_IFTYPE_ADHOC)) { ret = ath11k_station_disassoc(ar, vif, sta); if (ret) @@ -3436,6 +3438,8 @@ static int ath11k_add_interface(struct ieee80211_hw *hw, case NL80211_IFTYPE_STATION: arvif->vdev_type = WMI_VDEV_TYPE_STA; break; + case NL80211_IFTYPE_MESH_POINT: + arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S; case NL80211_IFTYPE_AP: arvif->vdev_type = WMI_VDEV_TYPE_AP; break; @@ -4702,6 +4706,9 @@ static int ath11k_get_survey(struct ieee80211_hw *hw, int idx, { .max = 16, .types = BIT(NL80211_IFTYPE_AP) +#ifdef CONFIG_MAC80211_MESH + | BIT(NL80211_IFTYPE_MESH_POINT) +#endif }, }; @@ -4820,7 +4827,8 @@ static int ath11k_mac_register(struct ath11k *ar) ar->hw->wiphy->available_antennas_tx = cap->tx_chain_mask; ar->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | - BIT(NL80211_IFTYPE_AP); + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_MESH_POINT); ieee80211_hw_set(ar->hw, SIGNAL_DBM); ieee80211_hw_set(ar->hw, SUPPORTS_PS); diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h index 8102e80506fa..5d20f57fbacc 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.h +++ b/drivers/net/wireless/ath/ath11k/wmi.h @@ -4720,10 +4720,13 @@ enum wmi_vdev_type { }; enum wmi_vdev_subtype { - WMI_VDEV_SUBTYPE_NONE = 0, - WMI_VDEV_SUBTYPE_P2P_DEVICE = 1, - WMI_VDEV_SUBTYPE_P2P_CLIENT = 2, - WMI_VDEV_SUBTYPE_P2P_GO = 3, + WMI_VDEV_SUBTYPE_NONE, + WMI_VDEV_SUBTYPE_P2P_DEVICE, + WMI_VDEV_SUBTYPE_P2P_CLIENT, + WMI_VDEV_SUBTYPE_P2P_GO, + WMI_VDEV_SUBTYPE_PROXY_STA, + WMI_VDEV_SUBTYPE_MESH_NON_11S, + WMI_VDEV_SUBTYPE_MESH_11S, }; enum wmi_sta_powersave_param { -- 1.9.1 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] ath11k: enable mesh mode 2019-04-17 9:29 ` [PATCH 1/3] ath11k: enable mesh mode Rajkumar Manoharan @ 2019-04-17 9:56 ` John Crispin 2019-04-17 21:01 ` Rajkumar Manoharan 0 siblings, 1 reply; 8+ messages in thread From: John Crispin @ 2019-04-17 9:56 UTC (permalink / raw) To: Rajkumar Manoharan, ath11k On 17/04/2019 11:29, Rajkumar Manoharan wrote: > Allow Meshpoint configuration from ath11k and advertise MP > support to mac80211. Firmware supports mesh type from > WLAN.HK.2.1.0.1-00113-QCAHKSWPL_SILICONZ-1 onwards. As of now, > only open auth mesh networking is working. > > Known issues: > - Depends on firmware fix to allow other BSS frames > - Failed to complete path negotiation in secured mode > - Target assert while shutting down interface in secured mode > > Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org> > --- > drivers/net/wireless/ath/ath11k/mac.c | 10 +++++++++- > drivers/net/wireless/ath/ath11k/wmi.h | 11 +++++++---- > 2 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c > index 12a2c4421264..b384395bb08c 100644 > --- a/drivers/net/wireless/ath/ath11k/mac.c > +++ b/drivers/net/wireless/ath/ath11k/mac.c > @@ -2579,6 +2579,7 @@ static int ath11k_sta_state(struct ieee80211_hw *hw, > } else if (old_state == IEEE80211_STA_AUTH && > new_state == IEEE80211_STA_ASSOC && > (vif->type == NL80211_IFTYPE_AP || > + vif->type == NL80211_IFTYPE_MESH_POINT || > vif->type == NL80211_IFTYPE_ADHOC)) { > ret = ath11k_station_assoc(ar, vif, sta, false); > if (ret) > @@ -2591,6 +2592,7 @@ static int ath11k_sta_state(struct ieee80211_hw *hw, > } else if (old_state == IEEE80211_STA_ASSOC && > new_state == IEEE80211_STA_AUTH && > (vif->type == NL80211_IFTYPE_AP || > + vif->type == NL80211_IFTYPE_MESH_POINT || > vif->type == NL80211_IFTYPE_ADHOC)) { > ret = ath11k_station_disassoc(ar, vif, sta); > if (ret) > @@ -3436,6 +3438,8 @@ static int ath11k_add_interface(struct ieee80211_hw *hw, > case NL80211_IFTYPE_STATION: > arvif->vdev_type = WMI_VDEV_TYPE_STA; > break; > + case NL80211_IFTYPE_MESH_POINT: > + arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S; there should be a comment here that the drop is intentional John > case NL80211_IFTYPE_AP: > arvif->vdev_type = WMI_VDEV_TYPE_AP; > break; > @@ -4702,6 +4706,9 @@ static int ath11k_get_survey(struct ieee80211_hw *hw, int idx, > { > .max = 16, > .types = BIT(NL80211_IFTYPE_AP) > +#ifdef CONFIG_MAC80211_MESH > + | BIT(NL80211_IFTYPE_MESH_POINT) > +#endif > }, > }; > > @@ -4820,7 +4827,8 @@ static int ath11k_mac_register(struct ath11k *ar) > ar->hw->wiphy->available_antennas_tx = cap->tx_chain_mask; > > ar->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | > - BIT(NL80211_IFTYPE_AP); > + BIT(NL80211_IFTYPE_AP) | > + BIT(NL80211_IFTYPE_MESH_POINT); > > ieee80211_hw_set(ar->hw, SIGNAL_DBM); > ieee80211_hw_set(ar->hw, SUPPORTS_PS); > diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h > index 8102e80506fa..5d20f57fbacc 100644 > --- a/drivers/net/wireless/ath/ath11k/wmi.h > +++ b/drivers/net/wireless/ath/ath11k/wmi.h > @@ -4720,10 +4720,13 @@ enum wmi_vdev_type { > }; > > enum wmi_vdev_subtype { > - WMI_VDEV_SUBTYPE_NONE = 0, > - WMI_VDEV_SUBTYPE_P2P_DEVICE = 1, > - WMI_VDEV_SUBTYPE_P2P_CLIENT = 2, > - WMI_VDEV_SUBTYPE_P2P_GO = 3, > + WMI_VDEV_SUBTYPE_NONE, > + WMI_VDEV_SUBTYPE_P2P_DEVICE, > + WMI_VDEV_SUBTYPE_P2P_CLIENT, > + WMI_VDEV_SUBTYPE_P2P_GO, > + WMI_VDEV_SUBTYPE_PROXY_STA, > + WMI_VDEV_SUBTYPE_MESH_NON_11S, > + WMI_VDEV_SUBTYPE_MESH_11S, > }; > > enum wmi_sta_powersave_param { _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] ath11k: enable mesh mode 2019-04-17 9:56 ` John Crispin @ 2019-04-17 21:01 ` Rajkumar Manoharan 0 siblings, 0 replies; 8+ messages in thread From: Rajkumar Manoharan @ 2019-04-17 21:01 UTC (permalink / raw) To: John Crispin; +Cc: ath11k On 2019-04-17 02:56, John Crispin wrote: > On 17/04/2019 11:29, Rajkumar Manoharan wrote: > >> @@ -3436,6 +3438,8 @@ static int ath11k_add_interface(struct >> ieee80211_hw *hw, >> case NL80211_IFTYPE_STATION: >> arvif->vdev_type = WMI_VDEV_TYPE_STA; >> break; >> + case NL80211_IFTYPE_MESH_POINT: >> + arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S; > > there should be a comment here that the drop is intentional > Hmm.. Agree to have fall through comment. -Rajkumar _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet 2019-04-17 9:29 [PATCH 0/3] ath11k: Add Mesh mode support Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 1/3] ath11k: enable mesh mode Rajkumar Manoharan @ 2019-04-17 9:29 ` Rajkumar Manoharan 2019-04-17 9:57 ` John Crispin 2019-04-17 9:29 ` [PATCH 3/3] ath11k: remove unnecessary check for PMF Rajkumar Manoharan 2 siblings, 1 reply; 8+ messages in thread From: Rajkumar Manoharan @ 2019-04-17 9:29 UTC (permalink / raw) To: ath11k; +Cc: Pradeep Kumar Chitrapu, Rajkumar Manoharan Inform the target to use 4 adressses in 802.11 header for mesh data by marking the peer is capable of operating in 4 address format. Also ensure to inform TCL ring that mesh header is pesent in payload. This will be useful for enabling HW checksumming form mesh packets. Co-developed-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org> Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org> Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org> --- drivers/net/wireless/ath/ath11k/dp_tx.c | 3 +++ drivers/net/wireless/ath/ath11k/mac.c | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/dp_tx.c b/drivers/net/wireless/ath/ath11k/dp_tx.c index 5324c5f514f8..b2807a88df9c 100644 --- a/drivers/net/wireless/ath/ath11k/dp_tx.c +++ b/drivers/net/wireless/ath/ath11k/dp_tx.c @@ -131,7 +131,10 @@ int ath11k_dp_tx(struct ath11k *ar, struct ath11k_vif *arvif, FIELD_PREP(HAL_TCL_DATA_CMD_INFO1_TCP6_CKSUM_EN, 1); } + if (ieee80211_vif_is_mesh(arvif->vif)) + ti.flags1 |= FIELD_PREP(HAL_TCL_DATA_CMD_INFO2_MESH_ENABLE, 1); ti.flags1 |= FIELD_PREP(HAL_TCL_DATA_CMD_INFO2_TID_OVERWRITE, 1); + ti.tid = ath11k_dp_get_tid(skb); switch (ti.encap_type) { diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index b384395bb08c..aea99d9d8d1f 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -2550,6 +2550,17 @@ static int ath11k_sta_state(struct ieee80211_hw *hw, goto exit; } + if (ieee80211_vif_is_mesh(vif)) { + ret = ath11k_wmi_set_peer_param(ar, sta->addr, + arvif->vdev_id, + WMI_PEER_USE_4ADDR, 1); + if (ret) { + ath11k_warn(ar->ab, "failed to STA %pM 4addr capability: %d\n", + sta->addr, ret); + goto exit; + } + } + ret = ath11k_dp_peer_setup(ar, arvif->vdev_id, sta->addr); if (ret) { ath11k_warn(ar->ab, "failed to setup dp for peer %pM on vdev %i (%d)\n", -- 1.9.1 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet 2019-04-17 9:29 ` [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet Rajkumar Manoharan @ 2019-04-17 9:57 ` John Crispin 2019-04-17 21:08 ` Rajkumar Manoharan 0 siblings, 1 reply; 8+ messages in thread From: John Crispin @ 2019-04-17 9:57 UTC (permalink / raw) To: Rajkumar Manoharan, ath11k; +Cc: Pradeep Kumar Chitrapu On 17/04/2019 11:29, Rajkumar Manoharan wrote: > diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c > index b384395bb08c..aea99d9d8d1f 100644 > --- a/drivers/net/wireless/ath/ath11k/mac.c > +++ b/drivers/net/wireless/ath/ath11k/mac.c > @@ -2550,6 +2550,17 @@ static int ath11k_sta_state(struct ieee80211_hw *hw, > goto exit; > } > > + if (ieee80211_vif_is_mesh(vif)) { > + ret = ath11k_wmi_set_peer_param(ar, sta->addr, > + arvif->vdev_id, > + WMI_PEER_USE_4ADDR, 1); > + if (ret) { > + ath11k_warn(ar->ab, "failed to STA %pM 4addr capability: %d\n", > + sta->addr, ret); Hi, looks like the indentation is bad here John _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet 2019-04-17 9:57 ` John Crispin @ 2019-04-17 21:08 ` Rajkumar Manoharan 0 siblings, 0 replies; 8+ messages in thread From: Rajkumar Manoharan @ 2019-04-17 21:08 UTC (permalink / raw) To: John Crispin; +Cc: Pradeep Kumar Chitrapu, ath11k On 2019-04-17 02:57, John Crispin wrote: > On 17/04/2019 11:29, Rajkumar Manoharan wrote: >> diff --git a/drivers/net/wireless/ath/ath11k/mac.c >> b/drivers/net/wireless/ath/ath11k/mac.c >> index b384395bb08c..aea99d9d8d1f 100644 >> --- a/drivers/net/wireless/ath/ath11k/mac.c >> +++ b/drivers/net/wireless/ath/ath11k/mac.c >> @@ -2550,6 +2550,17 @@ static int ath11k_sta_state(struct ieee80211_hw >> *hw, >> goto exit; >> } >> + if (ieee80211_vif_is_mesh(vif)) { >> + ret = ath11k_wmi_set_peer_param(ar, sta->addr, >> + arvif->vdev_id, >> + WMI_PEER_USE_4ADDR, 1); >> + if (ret) { >> + ath11k_warn(ar->ab, "failed to STA %pM 4addr capability: %d\n", >> + sta->addr, ret); > > Hi, > > looks like the indentation is bad here > John, I don't see the indentation issue from patch and no warning in checkpatch. -Rajkumar _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/3] ath11k: remove unnecessary check for PMF 2019-04-17 9:29 [PATCH 0/3] ath11k: Add Mesh mode support Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 1/3] ath11k: enable mesh mode Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet Rajkumar Manoharan @ 2019-04-17 9:29 ` Rajkumar Manoharan 2 siblings, 0 replies; 8+ messages in thread From: Rajkumar Manoharan @ 2019-04-17 9:29 UTC (permalink / raw) To: ath11k; +Cc: Rajkumar Manoharan Firmware delivers mesh group action frame as encrypted payload. To allow software decryption for these group action frames, rx status should not be marked as RX_FLAG_DECRYPTED and protected bit in frame control should not be cleared. Existing robust management check is enough to handle RX_FLAG_DECRYPTED. Hence removing unnecessary protected frame validation. Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org> --- drivers/net/wireless/ath/ath11k/wmi.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index cdacbaea188c..5712ac030419 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -5196,18 +5196,17 @@ void ath11k_mgmt_rx_event(struct ath11k_base *ab, struct sk_buff *skb) */ status->flag |= RX_FLAG_SKIP_MONITOR; - if (ieee80211_has_protected(hdr->frame_control)) { - /* In case of PMF, FW delivers decrypted frames - * with Protected Bit set. Don't clear that. - */ - if (!ieee80211_is_robust_mgmt_frame(skb)) { - status->flag |= RX_FLAG_DECRYPTED; + /* In case of PMF, FW delivers decrypted frames with Protected Bit set. + * Don't clear that. FW also delivers broadcast management frames + * (ex: group privacy action frames in mesh) as encrypted payload. + */ + if (!ieee80211_is_robust_mgmt_frame(skb)) { + status->flag |= RX_FLAG_DECRYPTED; - status->flag |= RX_FLAG_IV_STRIPPED | - RX_FLAG_MMIC_STRIPPED; - hdr->frame_control = __cpu_to_le16(fc & - ~IEEE80211_FCTL_PROTECTED); - } + status->flag |= RX_FLAG_IV_STRIPPED | + RX_FLAG_MMIC_STRIPPED; + hdr->frame_control = __cpu_to_le16(fc & + ~IEEE80211_FCTL_PROTECTED); } /* TODO: Pending handle beacon implementation -- 1.9.1 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-04-17 21:08 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-17 9:29 [PATCH 0/3] ath11k: Add Mesh mode support Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 1/3] ath11k: enable mesh mode Rajkumar Manoharan 2019-04-17 9:56 ` John Crispin 2019-04-17 21:01 ` Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 2/3] ath11k: allow 4 address transmission for mesh packet Rajkumar Manoharan 2019-04-17 9:57 ` John Crispin 2019-04-17 21:08 ` Rajkumar Manoharan 2019-04-17 9:29 ` [PATCH 3/3] ath11k: remove unnecessary check for PMF Rajkumar Manoharan
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.