diff --git a/components/dp/core/src/wlan_dp_main.c b/components/dp/core/src/wlan_dp_main.c index 2902703c2c..bc7729b76d 100644 --- a/components/dp/core/src/wlan_dp_main.c +++ b/components/dp/core/src/wlan_dp_main.c @@ -136,8 +136,7 @@ dp_get_intf_by_netdev(struct wlan_dp_psoc_context *dp_ctx, qdf_netdev_t dev) qdf_spin_lock_bh(&dp_ctx->intf_list_lock); for (dp_get_front_intf_no_lock(dp_ctx, &dp_intf); dp_intf; dp_get_next_intf_no_lock(dp_ctx, dp_intf, &dp_intf)) { - if (!qdf_str_cmp(qdf_netdev_get_devname(dp_intf->dev), - qdf_netdev_get_devname(dev))) { + if (dp_intf->dev == dev) { qdf_spin_unlock_bh(&dp_ctx->intf_list_lock); return dp_intf; } @@ -887,7 +886,7 @@ dp_vdev_obj_create_notification(struct wlan_objmgr_vdev *vdev, void *arg) struct wlan_dp_intf *dp_intf; QDF_STATUS status = QDF_STATUS_SUCCESS; struct qdf_mac_addr *mac_addr; - struct qdf_mac_addr intf_mac; + qdf_netdev_t dev; dp_info("DP VDEV OBJ create notification"); @@ -900,18 +899,18 @@ dp_vdev_obj_create_notification(struct wlan_objmgr_vdev *vdev, void *arg) dp_ctx = dp_psoc_get_priv(psoc); mac_addr = (struct qdf_mac_addr *)wlan_vdev_mlme_get_macaddr(vdev); - status = dp_ctx->dp_ops.dp_get_nw_intf_mac_by_vdev_mac(mac_addr, - &intf_mac); - if (QDF_IS_STATUS_ERROR(status)) { + dev = dp_ctx->dp_ops.dp_get_netdev_by_vdev_mac(mac_addr); + if (!dev) { dp_err("Failed to get intf mac:" QDF_MAC_ADDR_FMT, QDF_MAC_ADDR_REF(mac_addr)); return QDF_STATUS_E_INVAL; } - dp_intf = dp_get_intf_by_macaddr(dp_ctx, &intf_mac); + dp_intf = dp_get_intf_by_netdev(dp_ctx, dev); if (!dp_intf) { - dp_err("Failed to get dp intf mac:" QDF_MAC_ADDR_FMT, - QDF_MAC_ADDR_REF(mac_addr)); + dp_err("Failed to get dp intf dev: %s", + qdf_netdev_get_devname(dev)); + return QDF_STATUS_E_INVAL; } diff --git a/components/dp/dispatcher/inc/wlan_dp_public_struct.h b/components/dp/dispatcher/inc/wlan_dp_public_struct.h index e84b58aa35..7624cf9669 100644 --- a/components/dp/dispatcher/inc/wlan_dp_public_struct.h +++ b/components/dp/dispatcher/inc/wlan_dp_public_struct.h @@ -562,8 +562,8 @@ union wlan_tp_data { /** * struct wlan_dp_psoc_callbacks - struct containing callback * to non-converged driver - * @os_if_dp_gro_rx: OS IF Callback to handle GRO packet to n/w stack * @callback_ctx : Opaque callback context + * @dp_get_netdev_by_vdev_mac: Callback to get netdev from vdev mac address * @wlan_dp_sta_get_dot11mode: Callback to get dot11 mode * @wlan_dp_get_ap_client_count: Callback to get client count connected to AP * @wlan_dp_sta_ndi_connected: Callback to get NDI connected status @@ -591,8 +591,7 @@ union wlan_tp_data { struct wlan_dp_psoc_callbacks { hdd_cb_handle callback_ctx; - QDF_STATUS (*dp_get_nw_intf_mac_by_vdev_mac)(struct qdf_mac_addr *mac_addr, - struct qdf_mac_addr *intf_mac); + qdf_netdev_t (*dp_get_netdev_by_vdev_mac)(struct qdf_mac_addr *mac_addr); unsigned int (*dp_get_tx_flow_low_watermark)(hdd_cb_handle cb_ctx, uint8_t intf_id); void (*dp_get_tx_resource)(uint8_t intf_id, struct qdf_mac_addr *mac_addr); diff --git a/components/dp/dispatcher/src/wlan_dp_ucfg_api.c b/components/dp/dispatcher/src/wlan_dp_ucfg_api.c index beb786ff5e..db7162a410 100644 --- a/components/dp/dispatcher/src/wlan_dp_ucfg_api.c +++ b/components/dp/dispatcher/src/wlan_dp_ucfg_api.c @@ -1895,8 +1895,8 @@ void ucfg_dp_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc, dp_ctx->dp_ops.dp_tsf_timestamp_rx = cb_obj->dp_tsf_timestamp_rx; dp_ctx->dp_ops.dp_gro_rx_legacy_get_napi = cb_obj->dp_gro_rx_legacy_get_napi; - dp_ctx->dp_ops.dp_get_nw_intf_mac_by_vdev_mac = - cb_obj->dp_get_nw_intf_mac_by_vdev_mac; + dp_ctx->dp_ops.dp_get_netdev_by_vdev_mac = + cb_obj->dp_get_netdev_by_vdev_mac; dp_ctx->dp_ops.dp_nbuf_push_pkt = cb_obj->dp_nbuf_push_pkt; dp_ctx->dp_ops.dp_rx_napi_gro_flush = cb_obj->dp_rx_napi_gro_flush; diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index df95cb9be9..67cc86f6dc 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4835,9 +4835,16 @@ hdd_set_mld_address(struct hdd_adapter *adapter, struct hdd_context *hdd_ctx, } } -static QDF_STATUS -hdd_get_nw_adapter_mac_by_vdev_mac(struct qdf_mac_addr *mac_addr, - struct qdf_mac_addr *adapter_mac) +/** + * hdd_get_netdev_by_vdev_mac() - Get Netdev based on MAC + * @mac_addr: Vdev MAC address + * + * Get netdev from adapter based upon Vdev MAC address. + * + * Return: netdev pointer. + */ +static qdf_netdev_t +hdd_get_netdev_by_vdev_mac(struct qdf_mac_addr *mac_addr) { struct hdd_context *hdd_ctx; struct hdd_adapter *adapter; @@ -4846,24 +4853,23 @@ hdd_get_nw_adapter_mac_by_vdev_mac(struct qdf_mac_addr *mac_addr, hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); if (!hdd_ctx) { hdd_err("Invalid HDD context"); - return QDF_STATUS_E_INVAL; + return NULL; } adapter = hdd_get_adapter_by_macaddr(hdd_ctx, mac_addr->bytes); if (!adapter) { - hdd_err("Invalid Adapter context"); - return QDF_STATUS_E_INVAL; + hdd_err("Adapter not foud for MAC " QDF_MAC_ADDR_FMT "", + QDF_MAC_ADDR_REF(mac_addr)); + return NULL; } if (adapter->mlo_adapter_info.is_link_adapter && adapter->mlo_adapter_info.associate_with_ml_adapter) { ml_adapter = adapter->mlo_adapter_info.ml_adapter; - qdf_copy_macaddr(adapter_mac, &ml_adapter->mac_addr); - } else { - qdf_copy_macaddr(adapter_mac, &adapter->mac_addr); + adapter = ml_adapter; } - return QDF_STATUS_SUCCESS; + return adapter->dev; } #else static void @@ -4872,12 +4878,26 @@ hdd_set_mld_address(struct hdd_adapter *adapter, struct hdd_context *hdd_ctx, { } -static QDF_STATUS -hdd_get_nw_adapter_mac_by_vdev_mac(struct qdf_mac_addr *mac_addr, - struct qdf_mac_addr *adapter_mac) +static qdf_netdev_t +hdd_get_netdev_by_vdev_mac(struct qdf_mac_addr *mac_addr) { - qdf_copy_macaddr(adapter_mac, mac_addr); - return QDF_STATUS_SUCCESS; + struct hdd_context *hdd_ctx; + struct hdd_adapter *adapter; + + hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); + if (!hdd_ctx) { + hdd_err("Invalid HDD context"); + return NULL; + } + + adapter = hdd_get_adapter_by_macaddr(hdd_ctx, mac_addr->bytes); + if (!adapter) { + hdd_err("Adapter not foud for MAC " QDF_MAC_ADDR_FMT "", + QDF_MAC_ADDR_REF(mac_addr)); + return NULL; + } + + return adapter->dev; } #endif @@ -10472,8 +10492,8 @@ static void hdd_dp_register_callbacks(struct hdd_context *hdd_ctx) cb_obj.dp_nud_failure_work = hdd_nud_failure_work; cb_obj.dp_get_pause_map = hdd_get_pause_map; - cb_obj.dp_get_nw_intf_mac_by_vdev_mac = - hdd_get_nw_adapter_mac_by_vdev_mac; + cb_obj.dp_get_netdev_by_vdev_mac = + hdd_get_netdev_by_vdev_mac; cb_obj.dp_get_tx_resource = hdd_get_tx_resource; cb_obj.dp_get_tx_flow_low_watermark = hdd_get_tx_flow_low_watermark; cb_obj.dp_get_tsf_time = hdd_get_tsf_time_cb;