mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
Merge branches 'ehca', 'ipoib', 'iser', 'mlx4' and 'nes' into for-next
This commit is contained in:
commit
8c9ea7fe96
@ -543,14 +543,21 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
|
||||
{
|
||||
static int mlx4_ib_version_printed;
|
||||
struct mlx4_ib_dev *ibdev;
|
||||
int num_ports = 0;
|
||||
int i;
|
||||
|
||||
|
||||
if (!mlx4_ib_version_printed) {
|
||||
printk(KERN_INFO "%s", mlx4_ib_version);
|
||||
++mlx4_ib_version_printed;
|
||||
}
|
||||
|
||||
mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
|
||||
num_ports++;
|
||||
|
||||
/* No point in registering a device with no ports... */
|
||||
if (num_ports == 0)
|
||||
return NULL;
|
||||
|
||||
ibdev = (struct mlx4_ib_dev *) ib_alloc_device(sizeof *ibdev);
|
||||
if (!ibdev) {
|
||||
dev_err(&dev->pdev->dev, "Device struct alloc failed\n");
|
||||
@ -574,9 +581,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
|
||||
ibdev->ib_dev.owner = THIS_MODULE;
|
||||
ibdev->ib_dev.node_type = RDMA_NODE_IB_CA;
|
||||
ibdev->ib_dev.local_dma_lkey = dev->caps.reserved_lkey;
|
||||
ibdev->num_ports = 0;
|
||||
mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
|
||||
ibdev->num_ports++;
|
||||
ibdev->num_ports = num_ports;
|
||||
ibdev->ib_dev.phys_port_cnt = ibdev->num_ports;
|
||||
ibdev->ib_dev.num_comp_vectors = dev->caps.num_comp_vectors;
|
||||
ibdev->ib_dev.dma_device = &dev->pdev->dev;
|
||||
|
@ -778,12 +778,13 @@ static struct nes_cm_node *find_node(struct nes_cm_core *cm_core,
|
||||
unsigned long flags;
|
||||
struct list_head *hte;
|
||||
struct nes_cm_node *cm_node;
|
||||
__be32 tmp_addr = cpu_to_be32(loc_addr);
|
||||
|
||||
/* get a handle on the hte */
|
||||
hte = &cm_core->connected_nodes;
|
||||
|
||||
nes_debug(NES_DBG_CM, "Searching for an owner node: %pI4:%x from core %p->%p\n",
|
||||
&loc_addr, loc_port, cm_core, hte);
|
||||
&tmp_addr, loc_port, cm_core, hte);
|
||||
|
||||
/* walk list and find cm_node associated with this session ID */
|
||||
spin_lock_irqsave(&cm_core->ht_lock, flags);
|
||||
@ -816,6 +817,7 @@ static struct nes_cm_listener *find_listener(struct nes_cm_core *cm_core,
|
||||
{
|
||||
unsigned long flags;
|
||||
struct nes_cm_listener *listen_node;
|
||||
__be32 tmp_addr = cpu_to_be32(dst_addr);
|
||||
|
||||
/* walk list and find cm_node associated with this session ID */
|
||||
spin_lock_irqsave(&cm_core->listen_list_lock, flags);
|
||||
@ -833,7 +835,7 @@ static struct nes_cm_listener *find_listener(struct nes_cm_core *cm_core,
|
||||
spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
|
||||
|
||||
nes_debug(NES_DBG_CM, "Unable to find listener for %pI4:%x\n",
|
||||
&dst_addr, dst_port);
|
||||
&tmp_addr, dst_port);
|
||||
|
||||
/* no listener */
|
||||
return NULL;
|
||||
@ -2059,6 +2061,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
|
||||
struct tcphdr *tcph;
|
||||
struct nes_cm_info nfo;
|
||||
int skb_handled = 1;
|
||||
__be32 tmp_daddr, tmp_saddr;
|
||||
|
||||
if (!skb)
|
||||
return 0;
|
||||
@ -2074,8 +2077,11 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
|
||||
nfo.rem_addr = ntohl(iph->saddr);
|
||||
nfo.rem_port = ntohs(tcph->source);
|
||||
|
||||
tmp_daddr = cpu_to_be32(iph->daddr);
|
||||
tmp_saddr = cpu_to_be32(iph->saddr);
|
||||
|
||||
nes_debug(NES_DBG_CM, "Received packet: dest=%pI4:0x%04X src=%pI4:0x%04X\n",
|
||||
&iph->daddr, tcph->dest, &iph->saddr, tcph->source);
|
||||
&tmp_daddr, tcph->dest, &tmp_saddr, tcph->source);
|
||||
|
||||
do {
|
||||
cm_node = find_node(cm_core,
|
||||
|
@ -655,6 +655,7 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti
|
||||
struct nes_adapter *nesadapter = nesdev->nesadapter;
|
||||
int arp_index;
|
||||
int err = 0;
|
||||
__be32 tmp_addr;
|
||||
|
||||
for (arp_index = 0; (u32) arp_index < nesadapter->arp_table_size; arp_index++) {
|
||||
if (nesadapter->arp_table[arp_index].ip_addr == ip_addr)
|
||||
@ -682,8 +683,9 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti
|
||||
|
||||
/* DELETE or RESOLVE */
|
||||
if (arp_index == nesadapter->arp_table_size) {
|
||||
tmp_addr = cpu_to_be32(ip_addr);
|
||||
nes_debug(NES_DBG_NETDEV, "MAC for %pI4 not in ARP table - cannot %s\n",
|
||||
&ip_addr, action == NES_ARP_RESOLVE ? "resolve" : "delete");
|
||||
&tmp_addr, action == NES_ARP_RESOLVE ? "resolve" : "delete");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -711,26 +711,26 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
|
||||
neigh = *to_ipoib_neigh(skb->dst->neighbour);
|
||||
|
||||
if (neigh->ah)
|
||||
if (unlikely((memcmp(&neigh->dgid.raw,
|
||||
skb->dst->neighbour->ha + 4,
|
||||
sizeof(union ib_gid))) ||
|
||||
(neigh->dev != dev))) {
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
/*
|
||||
* It's safe to call ipoib_put_ah() inside
|
||||
* priv->lock here, because we know that
|
||||
* path->ah will always hold one more reference,
|
||||
* so ipoib_put_ah() will never do more than
|
||||
* decrement the ref count.
|
||||
*/
|
||||
if (unlikely((memcmp(&neigh->dgid.raw,
|
||||
skb->dst->neighbour->ha + 4,
|
||||
sizeof(union ib_gid))) ||
|
||||
(neigh->dev != dev))) {
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
/*
|
||||
* It's safe to call ipoib_put_ah() inside
|
||||
* priv->lock here, because we know that
|
||||
* path->ah will always hold one more reference,
|
||||
* so ipoib_put_ah() will never do more than
|
||||
* decrement the ref count.
|
||||
*/
|
||||
if (neigh->ah)
|
||||
ipoib_put_ah(neigh->ah);
|
||||
list_del(&neigh->list);
|
||||
ipoib_neigh_free(dev, neigh);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
ipoib_path_lookup(skb, dev);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
list_del(&neigh->list);
|
||||
ipoib_neigh_free(dev, neigh);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
ipoib_path_lookup(skb, dev);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
if (ipoib_cm_get(neigh)) {
|
||||
if (ipoib_cm_up(neigh)) {
|
||||
|
@ -529,6 +529,9 @@ void ipoib_mcast_join_task(struct work_struct *work)
|
||||
if (!priv->broadcast) {
|
||||
struct ipoib_mcast *broadcast;
|
||||
|
||||
if (!test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
|
||||
return;
|
||||
|
||||
broadcast = ipoib_mcast_alloc(dev, 1);
|
||||
if (!broadcast) {
|
||||
ipoib_warn(priv, "failed to allocate broadcast group\n");
|
||||
|
@ -1,6 +1,6 @@
|
||||
config INFINIBAND_ISER
|
||||
tristate "iSCSI Extensions for RDMA (iSER)"
|
||||
depends on SCSI && INET
|
||||
depends on SCSI && INET && INFINIBAND_ADDR_TRANS
|
||||
select SCSI_ISCSI_ATTRS
|
||||
---help---
|
||||
Support for the iSCSI Extensions for RDMA (iSER) Protocol
|
||||
|
@ -912,8 +912,8 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
|
||||
int i;
|
||||
|
||||
if (msi_x) {
|
||||
nreq = min(dev->caps.num_eqs - dev->caps.reserved_eqs,
|
||||
num_possible_cpus() + 1);
|
||||
nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs,
|
||||
num_possible_cpus() + 1);
|
||||
entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL);
|
||||
if (!entries)
|
||||
goto no_msi;
|
||||
|
Loading…
Reference in New Issue
Block a user