qcacld-3.0: Fix DP component Rx packet drop in MLO case
Currently in MLO use case DP component interface is not mapped to netdev registered to ip stack and also Rx packet over nl interface is broken. Fix these issues by attaching DP component interface to netdevice which is registered to ip stack for TX/RX. Fix Rx packet over nl interface by checking corresponding ops properly. Change-Id: Ibf9cb03565a9e2d5cd02091995259376e1069790 CRs-Fixed: 3200617
Este cometimento está contido em:

cometido por
Madan Koyyalamudi

ascendente
225716a360
cometimento
5b7f718dad
@@ -38,12 +38,6 @@
|
||||
#define IS_DP_ETHERTYPE_WAI(_nbuf) (false)
|
||||
#endif
|
||||
|
||||
#ifdef CFG80211_CTRL_FRAME_SRC_ADDR_TA_ADDR
|
||||
#define SEND_EAPOL_OVER_NL true
|
||||
#else
|
||||
#define SEND_EAPOL_OVER_NL false
|
||||
#endif
|
||||
|
||||
#define DP_CONNECTIVITY_CHECK_SET_ARP 1
|
||||
#define DP_CONNECTIVITY_CHECK_SET_DNS 2
|
||||
#define DP_CONNECTIVITY_CHECK_SET_TCP_HANDSHAKE 3
|
||||
|
@@ -1690,10 +1690,10 @@ static void __dp_bus_bw_work_handler(struct wlan_dp_psoc_context *dp_ctx)
|
||||
dp_ctx->bw_vote_time = curr_time_us;
|
||||
|
||||
dp_for_each_intf_held_safe(dp_ctx, dp_intf, dp_intf_next) {
|
||||
if (is_dp_intf_valid(dp_intf))
|
||||
vdev = dp_intf->vdev;
|
||||
if (!vdev)
|
||||
continue;
|
||||
|
||||
vdev = dp_intf->vdev;
|
||||
if (dp_comp_vdev_get_ref(vdev))
|
||||
continue;
|
||||
|
||||
|
@@ -136,7 +136,7 @@ dp_get_intf_by_macaddr(struct wlan_dp_psoc_context *dp_ctx,
|
||||
static int validate_interface_id(uint8_t intf_id)
|
||||
{
|
||||
if (intf_id == WLAN_UMAC_VDEV_ID_MAX) {
|
||||
dp_err("Interface is not up");
|
||||
dp_err("Interface is not up: %ps", QDF_RET_IP);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (intf_id >= WLAN_MAX_VDEVS) {
|
||||
@@ -159,8 +159,8 @@ int is_dp_intf_valid(struct wlan_dp_intf *dp_intf)
|
||||
}
|
||||
|
||||
if (!(dp_intf->dev->flags & IFF_UP)) {
|
||||
dp_info_rl("DP interface '%s' is not up",
|
||||
dp_intf->dev->name);
|
||||
dp_info_rl("DP interface '%s' is not up %ps",
|
||||
dp_intf->dev->name, QDF_RET_IP);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
@@ -893,7 +893,7 @@ dp_vdev_obj_create_notification(struct wlan_objmgr_vdev *vdev, void *arg)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
dp_intf = dp_get_intf_by_macaddr(dp_ctx, mac_addr);
|
||||
dp_intf = dp_get_intf_by_macaddr(dp_ctx, &intf_mac);
|
||||
if (!dp_intf) {
|
||||
dp_err("Failed to get dp intf mac:" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(mac_addr));
|
||||
|
@@ -801,7 +801,7 @@ QDF_STATUS dp_softap_rx_packet_cbk(void *intf_ctx, qdf_nbuf_t rx_buf)
|
||||
|
||||
dp_softap_tsf_timestamp_rx(dp_ctx, nbuf);
|
||||
|
||||
if (is_eapol && SEND_EAPOL_OVER_NL) {
|
||||
if (is_eapol && dp_ctx->dp_ops.dp_send_rx_pkt_over_nl) {
|
||||
if (dp_ctx->dp_ops.dp_send_rx_pkt_over_nl(dp_intf->dev,
|
||||
(u8 *)&dp_intf->conn_info.peer_macaddr,
|
||||
nbuf, false))
|
||||
|
@@ -1583,7 +1583,7 @@ static inline bool
|
||||
dp_is_gratuitous_arp_unsolicited_na(struct wlan_dp_psoc_context *dp_ctx,
|
||||
qdf_nbuf_t nbuf)
|
||||
{
|
||||
if (qdf_unlikely(dp_ctx->dp_ops.dp_is_gratuitous_arp_unsolicited_na(nbuf)))
|
||||
if (qdf_unlikely(dp_ctx->dp_ops.dp_is_gratuitous_arp_unsolicited_na))
|
||||
return dp_ctx->dp_ops.dp_is_gratuitous_arp_unsolicited_na(nbuf);
|
||||
|
||||
return false;
|
||||
@@ -1802,7 +1802,7 @@ QDF_STATUS dp_rx_packet_cbk(void *dp_intf_context,
|
||||
|
||||
dp_tsf_timestamp_rx(dp_ctx, nbuf);
|
||||
|
||||
if (send_over_nl && SEND_EAPOL_OVER_NL) {
|
||||
if (send_over_nl && dp_ctx->dp_ops.dp_send_rx_pkt_over_nl) {
|
||||
if (dp_ctx->dp_ops.dp_send_rx_pkt_over_nl(dp_intf->dev,
|
||||
(u8 *)&dp_intf->conn_info.peer_macaddr,
|
||||
nbuf, false))
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador