cxgb4: Add support for dynamic allocation of resources for ULD
[cascardo/linux.git] / drivers / net / ethernet / chelsio / cxgb4 / sge.c
index 6278e5a..9a607db 100644 (file)
@@ -1192,7 +1192,7 @@ out_free: dev_kfree_skb_any(skb);
 
        /* Discard the packet if the length is greater than mtu */
        max_pkt_len = ETH_HLEN + dev->mtu;
-       if (skb_vlan_tag_present(skb))
+       if (skb_vlan_tagged(skb))
                max_pkt_len += VLAN_HLEN;
        if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
                goto out_free;
@@ -2928,8 +2928,8 @@ static void free_txq(struct adapter *adap, struct sge_txq *q)
        q->desc = NULL;
 }
 
-static void free_rspq_fl(struct adapter *adap, struct sge_rspq *rq,
-                        struct sge_fl *fl)
+void free_rspq_fl(struct adapter *adap, struct sge_rspq *rq,
+                 struct sge_fl *fl)
 {
        struct sge *s = &adap->sge;
        unsigned int fl_id = fl ? fl->cntxt_id : 0xffff;
@@ -3006,7 +3006,9 @@ void t4_free_sge_resources(struct adapter *adap)
                if (etq->q.desc) {
                        t4_eth_eq_free(adap, adap->mbox, adap->pf, 0,
                                       etq->q.cntxt_id);
+                       __netif_tx_lock_bh(etq->txq);
                        free_tx_desc(adap, &etq->q, etq->q.in_use, true);
+                       __netif_tx_unlock_bh(etq->txq);
                        kfree(etq->q.sdesc);
                        free_txq(adap, &etq->q);
                }