IB/ipath: Change use of constants for TID type to defined values
Define pkt rcvd 'type' in a way consistent with HW spec and chips. The hardware considers received packets of type 0 to be expected, and type 1 to be eager. The driver was calling the ipath_f_put_tid functions using a variable called 'type' set to 0 for eager and to 1 for expected packets. Worse, the iba6110 and iba6120 drivers used those values inconsistently. This was quite confusing. Now everything is consistent with the hardware. Signed-off-by: Dave Olson <dave.olson@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
committed by
Roland Dreier
parent
1dd6a1be14
commit
f716cdfe57
@@ -396,7 +396,8 @@ static int ipath_tid_update(struct ipath_portdata *pd, struct file *fp,
|
|||||||
"TID %u, vaddr %lx, physaddr %llx pgp %p\n",
|
"TID %u, vaddr %lx, physaddr %llx pgp %p\n",
|
||||||
tid, vaddr, (unsigned long long) physaddr,
|
tid, vaddr, (unsigned long long) physaddr,
|
||||||
pagep[i]);
|
pagep[i]);
|
||||||
dd->ipath_f_put_tid(dd, &tidbase[tid], 1, physaddr);
|
dd->ipath_f_put_tid(dd, &tidbase[tid], RCVHQ_RCV_TYPE_EXPECTED,
|
||||||
|
physaddr);
|
||||||
/*
|
/*
|
||||||
* don't check this tid in ipath_portshadow, since we
|
* don't check this tid in ipath_portshadow, since we
|
||||||
* just filled it in; start with the next one.
|
* just filled it in; start with the next one.
|
||||||
@@ -422,7 +423,8 @@ static int ipath_tid_update(struct ipath_portdata *pd, struct file *fp,
|
|||||||
if (dd->ipath_pageshadow[porttid + tid]) {
|
if (dd->ipath_pageshadow[porttid + tid]) {
|
||||||
ipath_cdbg(VERBOSE, "Freeing TID %u\n",
|
ipath_cdbg(VERBOSE, "Freeing TID %u\n",
|
||||||
tid);
|
tid);
|
||||||
dd->ipath_f_put_tid(dd, &tidbase[tid], 1,
|
dd->ipath_f_put_tid(dd, &tidbase[tid],
|
||||||
|
RCVHQ_RCV_TYPE_EXPECTED,
|
||||||
dd->ipath_tidinvalid);
|
dd->ipath_tidinvalid);
|
||||||
pci_unmap_page(dd->pcidev,
|
pci_unmap_page(dd->pcidev,
|
||||||
dd->ipath_physshadow[porttid + tid],
|
dd->ipath_physshadow[porttid + tid],
|
||||||
@@ -538,7 +540,8 @@ static int ipath_tid_free(struct ipath_portdata *pd, unsigned subport,
|
|||||||
if (dd->ipath_pageshadow[porttid + tid]) {
|
if (dd->ipath_pageshadow[porttid + tid]) {
|
||||||
ipath_cdbg(VERBOSE, "PID %u freeing TID %u\n",
|
ipath_cdbg(VERBOSE, "PID %u freeing TID %u\n",
|
||||||
pd->port_pid, tid);
|
pd->port_pid, tid);
|
||||||
dd->ipath_f_put_tid(dd, &tidbase[tid], 1,
|
dd->ipath_f_put_tid(dd, &tidbase[tid],
|
||||||
|
RCVHQ_RCV_TYPE_EXPECTED,
|
||||||
dd->ipath_tidinvalid);
|
dd->ipath_tidinvalid);
|
||||||
pci_unmap_page(dd->pcidev,
|
pci_unmap_page(dd->pcidev,
|
||||||
dd->ipath_physshadow[porttid + tid],
|
dd->ipath_physshadow[porttid + tid],
|
||||||
@@ -921,7 +924,8 @@ static int ipath_create_user_egr(struct ipath_portdata *pd)
|
|||||||
(u64 __iomem *)
|
(u64 __iomem *)
|
||||||
((char __iomem *)
|
((char __iomem *)
|
||||||
dd->ipath_kregbase +
|
dd->ipath_kregbase +
|
||||||
dd->ipath_rcvegrbase), 0, pa);
|
dd->ipath_rcvegrbase),
|
||||||
|
RCVHQ_RCV_TYPE_EAGER, pa);
|
||||||
pa += egrsize;
|
pa += egrsize;
|
||||||
}
|
}
|
||||||
cond_resched(); /* don't hog the cpu */
|
cond_resched(); /* don't hog the cpu */
|
||||||
|
@@ -1408,7 +1408,7 @@ static void ipath_ht_quiet_serdes(struct ipath_devdata *dd)
|
|||||||
* ipath_pe_put_tid - write a TID in chip
|
* ipath_pe_put_tid - write a TID in chip
|
||||||
* @dd: the infinipath device
|
* @dd: the infinipath device
|
||||||
* @tidptr: pointer to the expected TID (in chip) to udpate
|
* @tidptr: pointer to the expected TID (in chip) to udpate
|
||||||
* @tidtype: 0 for eager, 1 for expected
|
* @tidtype: RCVHQ_RCV_TYPE_EAGER (1) for eager, RCVHQ_RCV_TYPE_EXPECTED (0) for expected
|
||||||
* @pa: physical address of in memory buffer; ipath_tidinvalid if freeing
|
* @pa: physical address of in memory buffer; ipath_tidinvalid if freeing
|
||||||
*
|
*
|
||||||
* This exists as a separate routine to allow for special locking etc.
|
* This exists as a separate routine to allow for special locking etc.
|
||||||
@@ -1429,7 +1429,7 @@ static void ipath_ht_put_tid(struct ipath_devdata *dd,
|
|||||||
"40 bits, using only 40!!!\n", pa);
|
"40 bits, using only 40!!!\n", pa);
|
||||||
pa &= INFINIPATH_RT_ADDR_MASK;
|
pa &= INFINIPATH_RT_ADDR_MASK;
|
||||||
}
|
}
|
||||||
if (type == 0)
|
if (type == RCVHQ_RCV_TYPE_EAGER)
|
||||||
pa |= dd->ipath_tidtemplate;
|
pa |= dd->ipath_tidtemplate;
|
||||||
else {
|
else {
|
||||||
/* in words (fixed, full page). */
|
/* in words (fixed, full page). */
|
||||||
@@ -1469,7 +1469,8 @@ static void ipath_ht_clear_tids(struct ipath_devdata *dd, unsigned port)
|
|||||||
port * dd->ipath_rcvtidcnt *
|
port * dd->ipath_rcvtidcnt *
|
||||||
sizeof(*tidbase));
|
sizeof(*tidbase));
|
||||||
for (i = 0; i < dd->ipath_rcvtidcnt; i++)
|
for (i = 0; i < dd->ipath_rcvtidcnt; i++)
|
||||||
ipath_ht_put_tid(dd, &tidbase[i], 1, dd->ipath_tidinvalid);
|
ipath_ht_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EXPECTED,
|
||||||
|
dd->ipath_tidinvalid);
|
||||||
|
|
||||||
tidbase = (u64 __iomem *) ((char __iomem *)(dd->ipath_kregbase) +
|
tidbase = (u64 __iomem *) ((char __iomem *)(dd->ipath_kregbase) +
|
||||||
dd->ipath_rcvegrbase +
|
dd->ipath_rcvegrbase +
|
||||||
@@ -1477,7 +1478,8 @@ static void ipath_ht_clear_tids(struct ipath_devdata *dd, unsigned port)
|
|||||||
sizeof(*tidbase));
|
sizeof(*tidbase));
|
||||||
|
|
||||||
for (i = 0; i < dd->ipath_rcvegrcnt; i++)
|
for (i = 0; i < dd->ipath_rcvegrcnt; i++)
|
||||||
ipath_ht_put_tid(dd, &tidbase[i], 0, dd->ipath_tidinvalid);
|
ipath_ht_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EAGER,
|
||||||
|
dd->ipath_tidinvalid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1104,7 +1104,7 @@ bail:
|
|||||||
* ipath_pe_put_tid - write a TID in chip
|
* ipath_pe_put_tid - write a TID in chip
|
||||||
* @dd: the infinipath device
|
* @dd: the infinipath device
|
||||||
* @tidptr: pointer to the expected TID (in chip) to udpate
|
* @tidptr: pointer to the expected TID (in chip) to udpate
|
||||||
* @tidtype: 0 for eager, 1 for expected
|
* @tidtype: RCVHQ_RCV_TYPE_EAGER (1) for eager, RCVHQ_RCV_TYPE_EXPECTED (0) for expected
|
||||||
* @pa: physical address of in memory buffer; ipath_tidinvalid if freeing
|
* @pa: physical address of in memory buffer; ipath_tidinvalid if freeing
|
||||||
*
|
*
|
||||||
* This exists as a separate routine to allow for special locking etc.
|
* This exists as a separate routine to allow for special locking etc.
|
||||||
@@ -1130,7 +1130,7 @@ static void ipath_pe_put_tid(struct ipath_devdata *dd, u64 __iomem *tidptr,
|
|||||||
"BUG: Physical page address 0x%lx "
|
"BUG: Physical page address 0x%lx "
|
||||||
"has bits set in 31-29\n", pa);
|
"has bits set in 31-29\n", pa);
|
||||||
|
|
||||||
if (type == 0)
|
if (type == RCVHQ_RCV_TYPE_EAGER)
|
||||||
pa |= dd->ipath_tidtemplate;
|
pa |= dd->ipath_tidtemplate;
|
||||||
else /* for now, always full 4KB page */
|
else /* for now, always full 4KB page */
|
||||||
pa |= 2 << 29;
|
pa |= 2 << 29;
|
||||||
@@ -1154,7 +1154,7 @@ static void ipath_pe_put_tid(struct ipath_devdata *dd, u64 __iomem *tidptr,
|
|||||||
* ipath_pe_put_tid_2 - write a TID in chip, Revision 2 or higher
|
* ipath_pe_put_tid_2 - write a TID in chip, Revision 2 or higher
|
||||||
* @dd: the infinipath device
|
* @dd: the infinipath device
|
||||||
* @tidptr: pointer to the expected TID (in chip) to udpate
|
* @tidptr: pointer to the expected TID (in chip) to udpate
|
||||||
* @tidtype: 0 for eager, 1 for expected
|
* @tidtype: RCVHQ_RCV_TYPE_EAGER (1) for eager, RCVHQ_RCV_TYPE_EXPECTED (0) for expected
|
||||||
* @pa: physical address of in memory buffer; ipath_tidinvalid if freeing
|
* @pa: physical address of in memory buffer; ipath_tidinvalid if freeing
|
||||||
*
|
*
|
||||||
* This exists as a separate routine to allow for selection of the
|
* This exists as a separate routine to allow for selection of the
|
||||||
@@ -1179,7 +1179,7 @@ static void ipath_pe_put_tid_2(struct ipath_devdata *dd, u64 __iomem *tidptr,
|
|||||||
"BUG: Physical page address 0x%lx "
|
"BUG: Physical page address 0x%lx "
|
||||||
"has bits set in 31-29\n", pa);
|
"has bits set in 31-29\n", pa);
|
||||||
|
|
||||||
if (type == 0)
|
if (type == RCVHQ_RCV_TYPE_EAGER)
|
||||||
pa |= dd->ipath_tidtemplate;
|
pa |= dd->ipath_tidtemplate;
|
||||||
else /* for now, always full 4KB page */
|
else /* for now, always full 4KB page */
|
||||||
pa |= 2 << 29;
|
pa |= 2 << 29;
|
||||||
@@ -1218,7 +1218,8 @@ static void ipath_pe_clear_tids(struct ipath_devdata *dd, unsigned port)
|
|||||||
port * dd->ipath_rcvtidcnt * sizeof(*tidbase));
|
port * dd->ipath_rcvtidcnt * sizeof(*tidbase));
|
||||||
|
|
||||||
for (i = 0; i < dd->ipath_rcvtidcnt; i++)
|
for (i = 0; i < dd->ipath_rcvtidcnt; i++)
|
||||||
ipath_pe_put_tid(dd, &tidbase[i], 0, tidinv);
|
ipath_pe_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EXPECTED,
|
||||||
|
tidinv);
|
||||||
|
|
||||||
tidbase = (u64 __iomem *)
|
tidbase = (u64 __iomem *)
|
||||||
((char __iomem *)(dd->ipath_kregbase) +
|
((char __iomem *)(dd->ipath_kregbase) +
|
||||||
@@ -1226,7 +1227,8 @@ static void ipath_pe_clear_tids(struct ipath_devdata *dd, unsigned port)
|
|||||||
port * dd->ipath_rcvegrcnt * sizeof(*tidbase));
|
port * dd->ipath_rcvegrcnt * sizeof(*tidbase));
|
||||||
|
|
||||||
for (i = 0; i < dd->ipath_rcvegrcnt; i++)
|
for (i = 0; i < dd->ipath_rcvegrcnt; i++)
|
||||||
ipath_pe_put_tid(dd, &tidbase[i], 1, tidinv);
|
ipath_pe_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EAGER,
|
||||||
|
tidinv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -133,7 +133,8 @@ static int create_port0_egr(struct ipath_devdata *dd)
|
|||||||
dd->ipath_ibmaxlen, PCI_DMA_FROMDEVICE);
|
dd->ipath_ibmaxlen, PCI_DMA_FROMDEVICE);
|
||||||
dd->ipath_f_put_tid(dd, e + (u64 __iomem *)
|
dd->ipath_f_put_tid(dd, e + (u64 __iomem *)
|
||||||
((char __iomem *) dd->ipath_kregbase +
|
((char __iomem *) dd->ipath_kregbase +
|
||||||
dd->ipath_rcvegrbase), 0,
|
dd->ipath_rcvegrbase),
|
||||||
|
RCVHQ_RCV_TYPE_EAGER,
|
||||||
dd->ipath_port0_skbinfo[e].phys);
|
dd->ipath_port0_skbinfo[e].phys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user