Merge branches 'cma', 'cxgb4', 'ipath' and 'qib' into for-next
This commit is contained in:
commit
043332cf28
@ -61,9 +61,9 @@ static char *states[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static int dack_mode;
|
||||
static int dack_mode = 1;
|
||||
module_param(dack_mode, int, 0644);
|
||||
MODULE_PARM_DESC(dack_mode, "Delayed ack mode (default=0)");
|
||||
MODULE_PARM_DESC(dack_mode, "Delayed ack mode (default=1)");
|
||||
|
||||
int c4iw_max_read_depth = 8;
|
||||
module_param(c4iw_max_read_depth, int, 0644);
|
||||
@ -482,6 +482,7 @@ static int send_connect(struct c4iw_ep *ep)
|
||||
TX_CHAN(ep->tx_chan) |
|
||||
SMAC_SEL(ep->smac_idx) |
|
||||
DSCP(ep->tos) |
|
||||
ULP_MODE(ULP_MODE_TCPDDP) |
|
||||
RCV_BUFSIZ(rcv_win>>10);
|
||||
opt2 = RX_CHANNEL(0) |
|
||||
RSS_QUEUE_VALID | RSS_QUEUE(ep->rss_qid);
|
||||
@ -1274,6 +1275,7 @@ static void accept_cr(struct c4iw_ep *ep, __be32 peer_ip, struct sk_buff *skb,
|
||||
TX_CHAN(ep->tx_chan) |
|
||||
SMAC_SEL(ep->smac_idx) |
|
||||
DSCP(ep->tos) |
|
||||
ULP_MODE(ULP_MODE_TCPDDP) |
|
||||
RCV_BUFSIZ(rcv_win>>10);
|
||||
opt2 = RX_CHANNEL(0) |
|
||||
RSS_QUEUE_VALID | RSS_QUEUE(ep->rss_qid);
|
||||
|
@ -87,17 +87,22 @@ static int dump_qp(int id, void *p, void *data)
|
||||
return 1;
|
||||
|
||||
if (qp->ep)
|
||||
cc = snprintf(qpd->buf + qpd->pos, space, "qp id %u state %u "
|
||||
cc = snprintf(qpd->buf + qpd->pos, space,
|
||||
"qp sq id %u rq id %u state %u onchip %u "
|
||||
"ep tid %u state %u %pI4:%u->%pI4:%u\n",
|
||||
qp->wq.sq.qid, (int)qp->attr.state,
|
||||
qp->wq.sq.qid, qp->wq.rq.qid, (int)qp->attr.state,
|
||||
qp->wq.sq.flags & T4_SQ_ONCHIP,
|
||||
qp->ep->hwtid, (int)qp->ep->com.state,
|
||||
&qp->ep->com.local_addr.sin_addr.s_addr,
|
||||
ntohs(qp->ep->com.local_addr.sin_port),
|
||||
&qp->ep->com.remote_addr.sin_addr.s_addr,
|
||||
ntohs(qp->ep->com.remote_addr.sin_port));
|
||||
else
|
||||
cc = snprintf(qpd->buf + qpd->pos, space, "qp id %u state %u\n",
|
||||
qp->wq.sq.qid, (int)qp->attr.state);
|
||||
cc = snprintf(qpd->buf + qpd->pos, space,
|
||||
"qp sq id %u rq id %u state %u onchip %u\n",
|
||||
qp->wq.sq.qid, qp->wq.rq.qid,
|
||||
(int)qp->attr.state,
|
||||
qp->wq.sq.flags & T4_SQ_ONCHIP);
|
||||
if (cc < space)
|
||||
qpd->pos += cc;
|
||||
return 0;
|
||||
@ -368,7 +373,6 @@ static void c4iw_rdev_close(struct c4iw_rdev *rdev)
|
||||
static void c4iw_remove(struct c4iw_dev *dev)
|
||||
{
|
||||
PDBG("%s c4iw_dev %p\n", __func__, dev);
|
||||
cancel_delayed_work_sync(&dev->db_drop_task);
|
||||
list_del(&dev->entry);
|
||||
if (dev->registered)
|
||||
c4iw_unregister_device(dev);
|
||||
@ -523,8 +527,16 @@ static int c4iw_uld_state_change(void *handle, enum cxgb4_state new_state)
|
||||
case CXGB4_STATE_START_RECOVERY:
|
||||
printk(KERN_INFO MOD "%s: Fatal Error\n",
|
||||
pci_name(dev->rdev.lldi.pdev));
|
||||
if (dev->registered)
|
||||
dev->rdev.flags |= T4_FATAL_ERROR;
|
||||
if (dev->registered) {
|
||||
struct ib_event event;
|
||||
|
||||
memset(&event, 0, sizeof event);
|
||||
event.event = IB_EVENT_DEVICE_FATAL;
|
||||
event.device = &dev->ibdev;
|
||||
ib_dispatch_event(&event);
|
||||
c4iw_unregister_device(dev);
|
||||
}
|
||||
break;
|
||||
case CXGB4_STATE_DETACH:
|
||||
printk(KERN_INFO MOD "%s: Detach\n",
|
||||
|
@ -176,7 +176,6 @@ struct c4iw_dev {
|
||||
struct idr mmidr;
|
||||
spinlock_t lock;
|
||||
struct list_head entry;
|
||||
struct delayed_work db_drop_task;
|
||||
struct dentry *debugfs_root;
|
||||
u8 registered;
|
||||
};
|
||||
|
@ -31,9 +31,9 @@
|
||||
*/
|
||||
#include "iw_cxgb4.h"
|
||||
|
||||
static int ocqp_support;
|
||||
static int ocqp_support = 1;
|
||||
module_param(ocqp_support, int, 0644);
|
||||
MODULE_PARM_DESC(ocqp_support, "Support on-chip SQs (default=0)");
|
||||
MODULE_PARM_DESC(ocqp_support, "Support on-chip SQs (default=1)");
|
||||
|
||||
static void set_state(struct c4iw_qp *qhp, enum c4iw_qp_state state)
|
||||
{
|
||||
|
@ -507,8 +507,14 @@ static inline void t4_swcq_consume(struct t4_cq *cq)
|
||||
static inline void t4_hwcq_consume(struct t4_cq *cq)
|
||||
{
|
||||
cq->bits_type_ts = cq->queue[cq->cidx].bits_type_ts;
|
||||
if (++cq->cidx_inc == cq->size)
|
||||
if (++cq->cidx_inc == (cq->size >> 4)) {
|
||||
u32 val;
|
||||
|
||||
val = SEINTARM(0) | CIDXINC(cq->cidx_inc) | TIMERREG(7) |
|
||||
INGRESSQID(cq->cqid);
|
||||
writel(val, cq->gts);
|
||||
cq->cidx_inc = 0;
|
||||
}
|
||||
if (++cq->cidx == cq->size) {
|
||||
cq->cidx = 0;
|
||||
cq->gen ^= 1;
|
||||
|
@ -557,6 +557,7 @@ static ssize_t store_reset(struct device *dev,
|
||||
dev_info(dev,"Unit %d is disabled, can't reset\n",
|
||||
dd->ipath_unit);
|
||||
ret = -EINVAL;
|
||||
goto bail;
|
||||
}
|
||||
ret = ipath_reset_device(dd->ipath_unit);
|
||||
bail:
|
||||
|
@ -5582,9 +5582,16 @@ static void qsfp_7322_event(struct work_struct *work)
|
||||
* even on failure to read cable information. We don't
|
||||
* get here for QME, so IS_QME check not needed here.
|
||||
*/
|
||||
le2 = (!ret && qd->cache.atten[1] >= qib_long_atten &&
|
||||
!ppd->dd->cspec->r1 && QSFP_IS_CU(qd->cache.tech)) ?
|
||||
LE2_5m : LE2_DEFAULT;
|
||||
if (!ret && !ppd->dd->cspec->r1) {
|
||||
if (QSFP_IS_ACTIVE_FAR(qd->cache.tech))
|
||||
le2 = LE2_QME;
|
||||
else if (qd->cache.atten[1] >= qib_long_atten &&
|
||||
QSFP_IS_CU(qd->cache.tech))
|
||||
le2 = LE2_5m;
|
||||
else
|
||||
le2 = LE2_DEFAULT;
|
||||
} else
|
||||
le2 = LE2_DEFAULT;
|
||||
ibsd_wr_allchans(ppd, 13, (le2 << 7), BMASK(9, 7));
|
||||
init_txdds_table(ppd, 0);
|
||||
}
|
||||
|
@ -464,8 +464,9 @@ static int subn_get_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
||||
memset(smp->data, 0, sizeof(smp->data));
|
||||
|
||||
/* Only return the mkey if the protection field allows it. */
|
||||
if (smp->method == IB_MGMT_METHOD_SET || ibp->mkey == smp->mkey ||
|
||||
ibp->mkeyprot == 0)
|
||||
if (!(smp->method == IB_MGMT_METHOD_GET &&
|
||||
ibp->mkey != smp->mkey &&
|
||||
ibp->mkeyprot == 1))
|
||||
pip->mkey = ibp->mkey;
|
||||
pip->gid_prefix = ibp->gid_prefix;
|
||||
lid = ppd->lid;
|
||||
@ -705,7 +706,7 @@ static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
||||
lwe = pip->link_width_enabled;
|
||||
if (lwe) {
|
||||
if (lwe == 0xFF)
|
||||
lwe = ppd->link_width_supported;
|
||||
set_link_width_enabled(ppd, ppd->link_width_supported);
|
||||
else if (lwe >= 16 || (lwe & ~ppd->link_width_supported))
|
||||
smp->status |= IB_SMP_INVALID_FIELD;
|
||||
else if (lwe != ppd->link_width_enabled)
|
||||
@ -720,7 +721,8 @@ static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
||||
* speeds.
|
||||
*/
|
||||
if (lse == 15)
|
||||
lse = ppd->link_speed_supported;
|
||||
set_link_speed_enabled(ppd,
|
||||
ppd->link_speed_supported);
|
||||
else if (lse >= 8 || (lse & ~ppd->link_speed_supported))
|
||||
smp->status |= IB_SMP_INVALID_FIELD;
|
||||
else if (lse != ppd->link_speed_enabled)
|
||||
@ -849,7 +851,7 @@ static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
||||
if (clientrereg)
|
||||
pip->clientrereg_resv_subnetto |= 0x80;
|
||||
|
||||
goto done;
|
||||
goto get_only;
|
||||
|
||||
err:
|
||||
smp->status |= IB_SMP_INVALID_FIELD;
|
||||
|
@ -79,6 +79,8 @@
|
||||
extern const char *const qib_qsfp_devtech[16];
|
||||
/* Active Equalization includes fiber, copper full EQ, and copper near Eq */
|
||||
#define QSFP_IS_ACTIVE(tech) ((0xA2FF >> ((tech) >> 4)) & 1)
|
||||
/* Active Equalization includes fiber, copper full EQ, and copper far Eq */
|
||||
#define QSFP_IS_ACTIVE_FAR(tech) ((0x32FF >> ((tech) >> 4)) & 1)
|
||||
/* Attenuation should be valid for copper other than full/near Eq */
|
||||
#define QSFP_HAS_ATTEN(tech) ((0x4D00 >> ((tech) >> 4)) & 1)
|
||||
/* Length is only valid if technology is "copper" */
|
||||
|
@ -123,6 +123,7 @@ enum {
|
||||
ULP_MODE_NONE = 0,
|
||||
ULP_MODE_ISCSI = 2,
|
||||
ULP_MODE_RDMA = 4,
|
||||
ULP_MODE_TCPDDP = 5,
|
||||
ULP_MODE_FCOE = 6,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user