Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9836f95 authored by Etan Cohen's avatar Etan Cohen
Browse files

[AWARE] Pass through full structure for end NDP command

The end NDP command is the only NAN HAL command which uses
a dynamically sized command structure. The original code
stripped out the non-static portions of the command - losing
the information. Modify the dynamically allocate at a lower
level of the shim.

Bug: 62569797
Test: integration tests now proceeding past failure point
Change-Id: I1732923aed64d7ec11649f0bad1731ab5bca13a0
parent fc5f3558
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -1197,11 +1197,19 @@ wifi_error WifiLegacyHal::nanDataIndicationResponse(
      id, wlan_interface_handle_, &msg_internal);
}

typedef struct {
    u8 num_ndp_instances;
    NanDataPathId ndp_instance_id;
} NanDataPathEndSingleNdpIdRequest;

wifi_error WifiLegacyHal::nanDataEnd(transaction_id id,
                                     const NanDataPathEndRequest& msg) {
  NanDataPathEndRequest msg_internal(msg);
  return global_func_table_.wifi_nan_data_end(
      id, wlan_interface_handle_, &msg_internal);
                                     uint32_t ndpInstanceId) {
  NanDataPathEndSingleNdpIdRequest msg;
  msg.num_ndp_instances = 1;
  msg.ndp_instance_id = ndpInstanceId;
  wifi_error status = global_func_table_.wifi_nan_data_end(
      id, wlan_interface_handle_, (NanDataPathEndRequest*)&msg);
  return status;
}

wifi_error WifiLegacyHal::setCountryCode(std::array<int8_t, 2> code) {
+1 −1
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ class WifiLegacyHal {
                                     const NanDataPathInitiatorRequest& msg);
  wifi_error nanDataIndicationResponse(
      transaction_id id, const NanDataPathIndicationResponse& msg);
  wifi_error nanDataEnd(transaction_id id, const NanDataPathEndRequest& msg);
  wifi_error nanDataEnd(transaction_id id, uint32_t ndpInstanceId);
  // AP functions.
  wifi_error setCountryCode(std::array<int8_t, 2> code);

+1 −7
Original line number Diff line number Diff line
@@ -757,14 +757,8 @@ WifiStatus WifiNanIface::respondToDataPathIndicationRequestInternal(
}
WifiStatus WifiNanIface::terminateDataPathRequestInternal(
    uint16_t cmd_id, uint32_t ndpInstanceId) {
  legacy_hal::NanDataPathEndRequest* legacy_msg = (legacy_hal::NanDataPathEndRequest*)malloc(
      sizeof(legacy_hal::NanDataPathEndRequest) + sizeof(uint32_t));
  legacy_msg->num_ndp_instances = 1;
  legacy_msg->ndp_instance_id[0] = ndpInstanceId;

  legacy_hal::wifi_error legacy_status =
      legacy_hal_.lock()->nanDataEnd(cmd_id, *legacy_msg);
  free(legacy_msg);
      legacy_hal_.lock()->nanDataEnd(cmd_id, ndpInstanceId);
  return createWifiStatusFromLegacyError(legacy_status);
}