qcacld-3.0: Add NUD Tracking APIs to DP component

Add NUD tracking APIs to DP component

Change-Id: Ib1dccb041b4fc50a2fc4b7eaba9eed6dfc80ea4d
CRs-Fixed: 3165120
This commit is contained in:
Amit Mehta
2022-03-17 00:39:54 -07:00
committed by Madan Koyyalamudi
parent 5d70b9f96f
commit 72f7ef77cb
10 changed files with 874 additions and 9 deletions

View File

@@ -32,6 +32,24 @@
#include <ani_system_defs.h>
#include <qdf_defer.h>
#ifdef TX_MULTIQ_PER_AC
#define TX_GET_QUEUE_IDX(ac, off) (((ac) * TX_QUEUES_PER_AC) + (off))
#define TX_QUEUES_PER_AC 4
#else
#define TX_GET_QUEUE_IDX(ac, off) (ac)
#define TX_QUEUES_PER_AC 1
#endif
/** Number of Tx Queues */
#if defined(QCA_LL_TX_FLOW_CONTROL_V2) || \
defined(QCA_HL_NETDEV_FLOW_CONTROL) || \
defined(QCA_LL_PDEV_TX_FLOW_CONTROL)
/* Only one HI_PRIO queue */
#define NUM_TX_QUEUES (4 * TX_QUEUES_PER_AC + 1)
#else
#define NUM_TX_QUEUES (4 * TX_QUEUES_PER_AC)
#endif
/**
* struct dp_mic_info - mic error info in dp
* @ta_mac_addr: transmitter mac address
@@ -71,6 +89,19 @@ struct dp_mic_work {
qdf_spinlock_t lock;
};
enum dp_nud_state {
DP_NUD_NONE,
DP_NUD_INCOMPLETE,
DP_NUD_REACHABLE,
DP_NUD_STALE,
DP_NUD_DELAY,
DP_NUD_PROBE,
DP_NUD_FAILED,
DP_NUD_NOARP,
DP_NUD_PERMANENT,
DP_NUD_STATE_INVALID
};
/**
* typedef hdd_cb_handle - HDD Handle
*
@@ -253,6 +284,10 @@ union wlan_tp_data {
* @wlan_dp_display_netif_queue_history: Callback to display Netif queue history
* @osif_dp_process_sta_mic_error: osif callback to process STA MIC error
* @osif_dp_process_sap_mic_error: osif callback to process SAP MIC error
* @dp_is_link_adapter: Callback API to check if adapter is link adapter
* @os_if_dp_nud_stats_info: osif callback to print nud stats info
* @dp_get_pause_map: Callback API to get pause map count
* @dp_nud_failure_work: Callback API to handle NUD failuire work
*/
struct wlan_dp_psoc_callbacks {
void (*os_if_dp_gro_rx)(struct sk_buff *skb, uint8_t napi_to_use,
@@ -300,6 +335,10 @@ struct wlan_dp_psoc_callbacks {
struct wlan_objmgr_vdev *vdev);
void (*osif_dp_process_sap_mic_error)(struct dp_mic_error_info *info,
struct wlan_objmgr_vdev *vdev);
bool (*dp_is_link_adapter)(hdd_cb_handle context, uint8_t vdev_id);
void (*os_if_dp_nud_stats_info)(struct wlan_objmgr_vdev *vdev);
uint32_t (*dp_get_pause_map)(hdd_cb_handle context, uint8_t vdev_id);
void (*dp_nud_failure_work)(hdd_cb_handle context, uint8_t vdev_id);
};
/**

View File

@@ -33,6 +33,23 @@
#include "pld_common.h"
#include <wlan_dp_public_struct.h>
#include <cdp_txrx_misc.h>
#include "wlan_dp_objmgr.h"
#define DP_IGNORE_NUD_FAIL 0
#define DP_DISCONNECT_AFTER_NUD_FAIL 1
#define DP_ROAM_AFTER_NUD_FAIL 2
#define DP_DISCONNECT_AFTER_ROAM_FAIL 3
#ifdef WLAN_NUD_TRACKING
bool
ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc);
#else
static inline bool
ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc)
{
return false;
}
#endif
/**
* ucfg_dp_create_intf() - update DP interface MAC address
@@ -363,6 +380,53 @@ void ucfg_dp_bus_bw_compute_prev_txrx_stats(struct wlan_objmgr_vdev *vdev);
void
ucfg_dp_bus_bw_compute_reset_prev_txrx_stats(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_dp_nud_set_gateway_addr() - set gateway mac address
* @vdev: vdev handle
* @gw_mac_addr: mac address to be set
*
* Return: none
*/
void ucfg_dp_nud_set_gateway_addr(struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr gw_mac_addr);
/**
* ucfg_dp_nud_event() - netevent callback
* @netdev_addr: netdev_addr
* @gw_mac_addr: Gateway MAC address
* @nud_state : NUD State
*
* Return: None
*/
void ucfg_dp_nud_event(struct qdf_mac_addr *netdev_mac_addr,
struct qdf_mac_addr *gw_mac_addr,
uint8_t nud_state);
/**
* ucfg_dp_nud_reset_tracking() - reset NUD tracking
* @vdev: vdev handle
*
* Return: None
*/
void ucfg_dp_nud_reset_tracking(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_dp_nud_tracking_enabled - Check if NUD tracking is enabled
*
* @psoc: PSOC Handle
*
* Return : NUD tracking value.
*/
uint8_t ucfg_dp_nud_tracking_enabled(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_dp_nud_indicate_roam() - reset NUD when roaming happens
* @vdev: vdev handle
*
* Return: None
*/
void ucfg_dp_nud_indicate_roam(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_dp_register_hdd_callbacks() - Resiter HDD callbacks with DP component
* @psoc: psoc handle