qcacld-3.0: Update rssi when get all tdls peers

It doesn't update rssi of tdls peers. So add logic to update it when
get all tdls peers.

Change-Id: I81d4536b5cb2443b088ee4a5d425d548eac152d6
CRs-Fixed: 2435903
此提交包含在:
Wu Gao
2019-04-19 21:32:39 +08:00
提交者 nshrivas
父節點 b017650fc7
當前提交 18e788a176
共有 5 個檔案被更改,包括 94 行新增18 行删除

查看文件

@@ -44,31 +44,37 @@ const char *const tdls_action_frames_type[] = { "TDLS Setup Request",
"TDLS Peer Traffic Response",
"TDLS Discovery Request"};
/**
* tdls_set_rssi() - Set TDLS RSSI on peer given by mac
* @tdls_vdev: tdls vdev object
* @mac: MAC address of Peer
* @rx_rssi: rssi value
*
* Set RSSI on TDSL peer
*
* Return: 0 for success or -EINVAL otherwise
*/
static int tdls_set_rssi(struct tdls_vdev_priv_obj *tdls_vdev,
const uint8_t *mac,
int8_t rx_rssi)
QDF_STATUS tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
uint8_t *mac, int8_t rssi)
{
struct tdls_vdev_priv_obj *tdls_vdev;
struct tdls_peer *curr_peer;
if (!vdev || !mac) {
tdls_err("null pointer");
return QDF_STATUS_E_INVAL;
}
tdls_debug("rssi %d, peer " QDF_MAC_ADDR_STR,
rssi, QDF_MAC_ADDR_ARRAY(mac));
tdls_vdev = wlan_objmgr_vdev_get_comp_private_obj(
vdev, WLAN_UMAC_COMP_TDLS);
if (!tdls_vdev) {
tdls_err("null tdls vdev");
return QDF_STATUS_E_EXISTS;
}
curr_peer = tdls_find_peer(tdls_vdev, mac);
if (!curr_peer) {
tdls_err("curr_peer is NULL");
return -EINVAL;
tdls_debug("null peer");
return QDF_STATUS_E_EXISTS;
}
curr_peer->rssi = rx_rssi;
curr_peer->rssi = rssi;
return 0;
return QDF_STATUS_SUCCESS;
}
/**
@@ -110,7 +116,7 @@ static QDF_STATUS tdls_process_rx_mgmt(
QDF_MAC_ADDR_STR " RSSI[%d] <--- OTA",
QDF_MAC_ADDR_ARRAY(mac), rx_mgmt->rx_rssi);
tdls_recv_discovery_resp(tdls_vdev, mac);
tdls_set_rssi(tdls_vdev, mac, rx_mgmt->rx_rssi);
tdls_set_rssi(tdls_vdev->vdev, mac, rx_mgmt->rx_rssi);
}
if (rx_mgmt->buf[TDLS_PUBLIC_ACTION_FRAME_OFFSET] ==

查看文件

@@ -75,5 +75,18 @@ QDF_STATUS tdls_mgmt_rx_ops(struct wlan_objmgr_psoc *psoc,
* Return: QDF_STATUS
*/
QDF_STATUS tdls_process_rx_frame(struct scheduler_msg *msg);
/**
* tdls_set_rssi() - Set TDLS RSSI on peer given by mac
* @vdev: vdev object
* @mac: MAC address of Peer
* @rssi: rssi value
*
* Set RSSI on TDSL peer
*
* Return: QDF_STATUS
*/
QDF_STATUS tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
uint8_t *mac, int8_t rssi);
#endif

查看文件

@@ -256,6 +256,18 @@ QDF_STATUS ucfg_set_tdls_offchan_mode(struct wlan_objmgr_vdev *vdev,
QDF_STATUS ucfg_set_tdls_secoffchanneloffset(struct wlan_objmgr_vdev *vdev,
int offchanoffset);
/**
* ucfg_tdls_set_rssi() - API to set TDLS RSSI on peer given by mac
* @vdev: vdev object
* @mac: MAC address of Peer
* @rssi: rssi value
*
* Set RSSI on TDLS peer
*
* Return: QDF_STATUS
*/
QDF_STATUS ucfg_tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
uint8_t *mac, int8_t rssi);
#else
static inline
@@ -313,5 +325,11 @@ QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_vdev *vdev)
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS ucfg_tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
uint8_t *mac, int8_t rssi)
{
return QDF_STATUS_SUCCESS;
}
#endif /* FEATURE_WLAN_TDLS */
#endif

查看文件

@@ -1110,3 +1110,9 @@ free:
qdf_mem_free(req);
return status;
}
QDF_STATUS ucfg_tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
uint8_t *mac, int8_t rssi)
{
return tdls_set_rssi(vdev, mac, rssi);
}