qcacmn: Add GRO support to NAPI+Rx_thread processing model
GRO aggregations are hanging out of NAPI instance and we cannot use the hif NAPI instance in Rx thread as gro_list inside NAPI is flushed out at the start and end of NAPI poll, this will corrupt the gro_list on which rx_thread is working. Address this concern by creating dummy NAPI instances mapping to each hif NAPI and by not scheduling them. Change-Id: I517c4c6158ed3ac073f5f617afde46c7ed07ff3e CRs-Fixed: 2128457
This commit is contained in:

کامیت شده توسط
nshrivas

والد
848fc04585
کامیت
56023f5649
@@ -685,11 +685,11 @@ struct cdp_pflow_ops {
|
||||
#define LRO_IPV6_SEED_ARR_SZ 11
|
||||
|
||||
/**
|
||||
* struct cdp_lro_config - set LRO init parameters
|
||||
* @lro_enable: indicates whether lro is enabled
|
||||
* struct cdp_lro_hash_config - set rx_offld(LRO/GRO) init parameters
|
||||
* @lro_enable: indicates whether rx_offld is enabled
|
||||
* @tcp_flag: If the TCP flags from the packet do not match
|
||||
* the values in this field after masking with TCP flags mask
|
||||
* below, packet is not LRO eligible
|
||||
* below, packet is not rx_offld eligible
|
||||
* @tcp_flag_mask: field for comparing the TCP values provided
|
||||
* above with the TCP flags field in the received packet
|
||||
* @toeplitz_hash_ipv4: contains seed needed to compute the flow id
|
||||
@@ -727,7 +727,7 @@ struct ol_if_ops {
|
||||
void (*peer_del_wds_entry)(void *ol_soc_handle,
|
||||
uint8_t *wds_macaddr);
|
||||
QDF_STATUS (*lro_hash_config)(void *scn_handle,
|
||||
struct cdp_lro_hash_config *lro_hash);
|
||||
struct cdp_lro_hash_config *rx_offld_hash);
|
||||
void (*update_dp_stats)(void *soc, void *stats, uint16_t id,
|
||||
uint8_t type);
|
||||
uint8_t (*rx_invalid_peer)(void *osif_pdev, void *msg);
|
||||
@@ -1088,6 +1088,18 @@ struct cdp_mob_stats_ops {
|
||||
};
|
||||
#endif /* CONFIG_WIN */
|
||||
|
||||
#ifdef RECEIVE_OFFLOAD
|
||||
/**
|
||||
* struct cdp_rx_offld_ops - mcl receive offload ops
|
||||
* @register_rx_offld_flush_cb:
|
||||
* @deregister_rx_offld_flush_cb:
|
||||
*/
|
||||
struct cdp_rx_offld_ops {
|
||||
void (*register_rx_offld_flush_cb)(void (rx_offld_flush_cb)(void *));
|
||||
void (*deregister_rx_offld_flush_cb)(void);
|
||||
};
|
||||
#endif
|
||||
|
||||
struct cdp_ops {
|
||||
struct cdp_cmn_ops *cmn_drv_ops;
|
||||
struct cdp_ctrl_ops *ctrl_ops;
|
||||
@@ -1104,6 +1116,9 @@ struct cdp_ops {
|
||||
struct cdp_lflowctl_ops *l_flowctl_ops;
|
||||
#ifdef IPA_OFFLOAD
|
||||
struct cdp_ipa_ops *ipa_ops;
|
||||
#endif
|
||||
#ifdef RECEIVE_OFFLOAD
|
||||
struct cdp_rx_offld_ops *rx_offld_ops;
|
||||
#endif
|
||||
struct cdp_bus_ops *bus_ops;
|
||||
struct cdp_ocb_ops *ocb_ops;
|
||||
@@ -1114,5 +1129,4 @@ struct cdp_ops {
|
||||
struct cdp_pmf_ops *pmf_ops;
|
||||
#endif /* CONFIG_WIN */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
مرجع در شماره جدید
Block a user