qcacld-3.0: Add vendor attribute to configure ARP/NS offload
In some scenario, it is required to receive every ARP/NS packet even it is not to solicit address itself. So add this vendor attribute configuration to enable/disable ARP/NS offload on fly. On some platform, if target suspend to WoW mode, APF filter will drop such ARP/NS packet in the front, so prevent runtime suspend happen if disable ARP/NS offload. System suspend still allow in consideration of potential power impact. It only support on STA/P2P-Client mode device, and this configure is optional, while default behavior is ARP/NS offload enable. It will restore to default behavior if interface being closed. Change-Id: Icd49e230024bc1ce51519cd9fafee9bc9f79f382 CRs-Fixed: 3058494
This commit is contained in:

committad av
Madan Koyyalamudi

förälder
1480887425
incheckning
eb218a1c61
@@ -220,6 +220,7 @@ typedef QDF_STATUS(*pmo_psoc_resume_handler)
|
||||
* @pmo_ns_offload_dynamic_update: enable/disable ns offload on the fly
|
||||
* @pmo_peer_disconnect: trigger is peer disconnect
|
||||
* @pmo_mcbc_setting_dynamic_update: mcbc value update on the fly
|
||||
* @pmo_arp_ns_offload_dynamic_update: enable/disable arp/ns offload on the fly
|
||||
*
|
||||
* @pmo_offload_trigger_max: Max trigger value
|
||||
*/
|
||||
@@ -234,6 +235,7 @@ enum pmo_offload_trigger {
|
||||
pmo_ns_offload_dynamic_update,
|
||||
pmo_peer_disconnect,
|
||||
pmo_mcbc_setting_dynamic_update,
|
||||
pmo_arp_ns_offload_dynamic_update,
|
||||
|
||||
pmo_offload_trigger_max,
|
||||
};
|
||||
|
@@ -545,6 +545,79 @@ ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev)
|
||||
return pmo_core_enhanced_mc_filter_disable(vdev);
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_DYNAMIC_ARP_NS_OFFLOAD
|
||||
/**
|
||||
* ucfg_pmo_dynamic_arp_ns_offload_enable() - enable arp/ns offload
|
||||
* @vdev: vdev objmgr handle
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
ucfg_pmo_dynamic_arp_ns_offload_enable(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* ucfg_pmo_dynamic_arp_ns_offload_disable() - disable arp/ns offload
|
||||
* @vdev: vdev objmgr handle
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
ucfg_pmo_dynamic_arp_ns_offload_disable(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* ucfg_pmo_get_arp_ns_offload_dynamic_disable() - get arp/ns offload state
|
||||
* @vdev: vdev objmgr handle
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
bool
|
||||
ucfg_pmo_get_arp_ns_offload_dynamic_disable(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent() - prevent runtime suspend
|
||||
* @vdev: vdev objmgr handle
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void
|
||||
ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* ucfg_pmo_dynamic_arp_ns_offload_runtime_allow() - allow runtime suspend
|
||||
* @vdev: vdev objmgr handle
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void
|
||||
ucfg_pmo_dynamic_arp_ns_offload_runtime_allow(struct wlan_objmgr_vdev *vdev);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
ucfg_pmo_dynamic_arp_ns_offload_enable(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_pmo_dynamic_arp_ns_offload_disable(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
ucfg_pmo_get_arp_ns_offload_dynamic_disable(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void
|
||||
ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
ucfg_pmo_dynamic_arp_ns_offload_runtime_allow(struct wlan_objmgr_vdev *vdev) {}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_pmo_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr
|
||||
* @psoc: objmgr psoc handle
|
||||
|
Referens i nytt ärende
Block a user