Commit f716cdfe authored by Joan Eslinger's avatar Joan Eslinger Committed by Roland Dreier

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: default avatarDave Olson <dave.olson@qlogic.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 1dd6a1be
...@@ -396,7 +396,8 @@ static int ipath_tid_update(struct ipath_portdata *pd, struct file *fp, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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 @@ static int ipath_setup_pe_reset(struct ipath_devdata *dd) ...@@ -1104,7 +1104,7 @@ static int ipath_setup_pe_reset(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.
...@@ -1130,7 +1130,7 @@ static void ipath_pe_put_tid(struct ipath_devdata *dd, u64 __iomem *tidptr, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment