Brad Davis identified a problem with the new LRO code, VLAN's
no longer worked. The problem was that the defines used the same space as the VLAN id. This commit does three things. 1) Move the LRO used fields to the PH_per fields. This is safe since the entire PH_per is used for IP reassembly which LRO code will not hit. 2) Remove old unused pace fields that are not used in mbuf.h 3) The VLAN processing is not in the mbuf queueing code. Consequently if a VLAN submits to Rack or BBR we need to bypass the mbuf queueing for now until rack_bbr_common is updated to handle the VLAN properly. Reported by: Brad Davis
This commit is contained in:
parent
e35cd9e38f
commit
5b63b22075
@ -875,7 +875,14 @@ tcp_lro_flush(struct lro_ctrl *lc, struct lro_entry *le)
|
||||
|
||||
/* Now lets lookup the inp first */
|
||||
CURVNET_SET(lc->ifp->if_vnet);
|
||||
if (tcplro_stacks_wanting_mbufq == 0)
|
||||
/*
|
||||
* XXXRRS Currently the common input handler for
|
||||
* mbuf queuing cannot handle VLAN Tagged. This needs
|
||||
* to be fixed and the or condition removed (i.e. the
|
||||
* common code should do the right lookup for the vlan
|
||||
* tag and anything else that the vlan_input() does).
|
||||
*/
|
||||
if ((tcplro_stacks_wanting_mbufq == 0) || (le->m_head->m_flags & M_VLANTAG))
|
||||
goto skip_lookup;
|
||||
INP_INFO_RLOCK_ET(&V_tcbinfo, et);
|
||||
switch (le->eh_type) {
|
||||
|
@ -194,18 +194,13 @@ struct pkthdr {
|
||||
};
|
||||
#define ether_vtag PH_per.sixteen[0]
|
||||
#define PH_vt PH_per
|
||||
#define vt_nrecs sixteen[0]
|
||||
#define tso_segsz PH_per.sixteen[1]
|
||||
#define lro_nsegs tso_segsz
|
||||
#define csum_phsum PH_per.sixteen[2]
|
||||
#define csum_data PH_per.thirtytwo[1]
|
||||
#define lro_len PH_per.sixteen[0] /* inbound during LRO */
|
||||
#define lro_csum PH_per.sixteen[1] /* inbound during LRO */
|
||||
#define pace_thoff PH_loc.sixteen[0]
|
||||
#define pace_tlen PH_loc.sixteen[1]
|
||||
#define pace_drphdrlen PH_loc.sixteen[2]
|
||||
#define pace_tos PH_loc.eight[6]
|
||||
#define pace_lock PH_loc.eight[7]
|
||||
#define vt_nrecs sixteen[0] /* mld and v6-ND */
|
||||
#define tso_segsz PH_per.sixteen[1] /* inbound after LRO */
|
||||
#define lro_nsegs tso_segsz /* inbound after LRO */
|
||||
#define csum_data PH_per.thirtytwo[1] /* inbound from hardware up */
|
||||
#define lro_len PH_loc.sixteen[0] /* inbound during LRO (no reassembly) */
|
||||
#define lro_csum PH_loc.sixteen[1] /* inbound during LRO (no reassembly) */
|
||||
/* Note PH_loc is used during IP reassembly (all 8 bytes as a ptr) */
|
||||
|
||||
/*
|
||||
* Description of external storage mapped into mbuf; valid only if M_EXT is
|
||||
|
Loading…
Reference in New Issue
Block a user