diff options
Diffstat (limited to 'drivers/net/cxgb3/sge.c')
| -rw-r--r-- | drivers/net/cxgb3/sge.c | 39 | 
1 files changed, 8 insertions, 31 deletions
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 3f562ba2f0c..d6fa1777a34 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c @@ -2026,30 +2026,13 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq,  		skb->ip_summed = CHECKSUM_UNNECESSARY;  	} else  		skb_checksum_none_assert(skb); -	skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); - -	if (unlikely(p->vlan_valid)) { -		struct vlan_group *grp = pi->vlan_grp; +	skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]); +	if (p->vlan_valid) {  		qs->port_stats[SGE_PSTAT_VLANEX]++; -		if (likely(grp)) -			if (lro) -				vlan_gro_receive(&qs->napi, grp, -						 ntohs(p->vlan), skb); -			else { -				if (unlikely(pi->iscsic.flags)) { -					unsigned short vtag = ntohs(p->vlan) & -								VLAN_VID_MASK; -					skb->dev = vlan_group_get_device(grp, -									 vtag); -					cxgb3_process_iscsi_prov_pack(pi, skb); -				} -				__vlan_hwaccel_rx(skb, grp, ntohs(p->vlan), -					  	  rq->polling); -			} -		else -			dev_kfree_skb_any(skb); -	} else if (rq->polling) { +		__vlan_hwaccel_put_tag(skb, ntohs(p->vlan)); +	} +	if (rq->polling) {  		if (lro)  			napi_gro_receive(&qs->napi, skb);  		else { @@ -2145,16 +2128,10 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,  	if (!complete)  		return; -	skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); - -	if (unlikely(cpl->vlan_valid)) { -		struct vlan_group *grp = pi->vlan_grp; +	skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]); -		if (likely(grp != NULL)) { -			vlan_gro_frags(&qs->napi, grp, ntohs(cpl->vlan)); -			return; -		} -	} +	if (cpl->vlan_valid) +		__vlan_hwaccel_put_tag(skb, ntohs(cpl->vlan));  	napi_gro_frags(&qs->napi);  }  |