cxgb4: Get TID calculation right for IPv6 mode
authorHariprasad Shenai <hariprasad@chelsio.com>
Thu, 24 Dec 2015 10:45:17 +0000 (16:15 +0530)
committerDavid S. Miller <davem@davemloft.net>
Thu, 24 Dec 2015 16:05:46 +0000 (11:05 -0500)
CLIP is always enabled and hardware uses 2 TID entries instead of 4 for
IPv6 in CLIP mode.

Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c

index c0dd533..bfe50aa 100644 (file)
@@ -1506,7 +1506,7 @@ int cxgb4_alloc_stid(struct tid_info *t, int family, void *data)
                else
                        stid = -1;
        } else {
-               stid = bitmap_find_free_region(t->stid_bmap, t->nstids, 2);
+               stid = bitmap_find_free_region(t->stid_bmap, t->nstids, 1);
                if (stid < 0)
                        stid = -1;
        }
@@ -1520,7 +1520,7 @@ int cxgb4_alloc_stid(struct tid_info *t, int family, void *data)
                if (family == PF_INET)
                        t->stids_in_use++;
                else
-                       t->stids_in_use += 4;
+                       t->stids_in_use += 2;
        }
        spin_unlock_bh(&t->stid_lock);
        return stid;
@@ -1571,13 +1571,13 @@ void cxgb4_free_stid(struct tid_info *t, unsigned int stid, int family)
        if (family == PF_INET)
                __clear_bit(stid, t->stid_bmap);
        else
-               bitmap_release_region(t->stid_bmap, stid, 2);
+               bitmap_release_region(t->stid_bmap, stid, 1);
        t->stid_tab[stid].data = NULL;
        if (stid < t->nstids) {
                if (family == PF_INET)
                        t->stids_in_use--;
                else
-                       t->stids_in_use -= 4;
+                       t->stids_in_use -= 2;
        } else {
                t->sftids_in_use--;
        }