Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1462147 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (45 commits)
  cnic: Fix ISCSI_KEVENT_IF_DOWN message handling.
  net: irda: init spinlock after memcpy
  ixgbe: fix for 82599 errata marking UDP checksum errors
  r8169: WakeOnLan fix for the 8168
  netxen: reset ring consumer during cleanup
  net/bridge: use kobject_put to release kobject in br_add_if error path
  smc91x.h: add config for Nomadik evaluation kit
  NET: ROSE: Don't use static buffer.
  eepro: Read buffer overflow
  tokenring: Read buffer overflow
  at1700: Read buffer overflow
  fealnx: Write outside array bounds
  ixgbe: remove unnecessary call to device_init_wakeup
  ixgbe: Don't priority tag control frames in DCB mode
  ixgbe: Enable FCoE offload when DCB is enabled for 82599
  net: Rework mdio-ofgpio driver to use of_mdio infrastructure
  register at91_ether using platform_driver_probe
  skge: Enable WoL by default if supported
  net: KS8851 needs to depend on MII
  be2net: Bug fix in the non-lro path. Size of received packet was not updated in statistics properly.
  ...
parents e00b95de 6d7760a8
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -1732,6 +1732,7 @@ config KS8842
config KS8851
config KS8851
       tristate "Micrel KS8851 SPI"
       tristate "Micrel KS8851 SPI"
       depends on SPI
       depends on SPI
       select MII
       help
       help
         SPI driver for Micrel KS8851 SPI attached network chip.
         SPI driver for Micrel KS8851 SPI attached network chip.


+1 −2
Original line number Original line Diff line number Diff line
@@ -1228,7 +1228,6 @@ static int at91ether_resume(struct platform_device *pdev)
#endif
#endif


static struct platform_driver at91ether_driver = {
static struct platform_driver at91ether_driver = {
	.probe		= at91ether_probe,
	.remove		= __devexit_p(at91ether_remove),
	.remove		= __devexit_p(at91ether_remove),
	.suspend	= at91ether_suspend,
	.suspend	= at91ether_suspend,
	.resume		= at91ether_resume,
	.resume		= at91ether_resume,
@@ -1240,7 +1239,7 @@ static struct platform_driver at91ether_driver = {


static int __init at91ether_init(void)
static int __init at91ether_init(void)
{
{
	return platform_driver_register(&at91ether_driver);
	return platform_driver_probe(&at91ether_driver, at91ether_probe);
}
}


static void __exit at91ether_exit(void)
static void __exit at91ether_exit(void)
+1 −1
Original line number Original line Diff line number Diff line
@@ -318,7 +318,7 @@ static int __init at1700_probe1(struct net_device *dev, int ioaddr)
				pos3 = mca_read_stored_pos( slot, 3 );
				pos3 = mca_read_stored_pos( slot, 3 );
				pos4 = mca_read_stored_pos( slot, 4 );
				pos4 = mca_read_stored_pos( slot, 4 );


				for (l_i = 0; l_i < 0x09; l_i++)
				for (l_i = 0; l_i < 8; l_i++)
					if (( pos3 & 0x07) == at1700_ioaddr_pattern[l_i])
					if (( pos3 & 0x07) == at1700_ioaddr_pattern[l_i])
						break;
						break;
				ioaddr = at1700_mca_probe_list[l_i];
				ioaddr = at1700_mca_probe_list[l_i];
+4 −4
Original line number Original line Diff line number Diff line
@@ -667,7 +667,7 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
	struct be_queue_info *rxq = &adapter->rx_obj.q;
	struct be_queue_info *rxq = &adapter->rx_obj.q;
	struct be_rx_page_info *page_info;
	struct be_rx_page_info *page_info;
	u16 rxq_idx, i, num_rcvd, j;
	u16 rxq_idx, i, num_rcvd, j;
	u32 pktsize, hdr_len, curr_frag_len;
	u32 pktsize, hdr_len, curr_frag_len, size;
	u8 *start;
	u8 *start;


	rxq_idx = AMAP_GET_BITS(struct amap_eth_rx_compl, fragndx, rxcp);
	rxq_idx = AMAP_GET_BITS(struct amap_eth_rx_compl, fragndx, rxcp);
@@ -708,12 +708,13 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
	}
	}


	/* More frags present for this completion */
	/* More frags present for this completion */
	pktsize -= curr_frag_len; /* account for above copied frag */
	size = pktsize;
	for (i = 1, j = 0; i < num_rcvd; i++) {
	for (i = 1, j = 0; i < num_rcvd; i++) {
		size -= curr_frag_len;
		index_inc(&rxq_idx, rxq->len);
		index_inc(&rxq_idx, rxq->len);
		page_info = get_rx_page_info(adapter, rxq_idx);
		page_info = get_rx_page_info(adapter, rxq_idx);


		curr_frag_len = min(pktsize, rx_frag_size);
		curr_frag_len = min(size, rx_frag_size);


		/* Coalesce all frags from the same physical page in one slot */
		/* Coalesce all frags from the same physical page in one slot */
		if (page_info->page_offset == 0) {
		if (page_info->page_offset == 0) {
@@ -731,7 +732,6 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
		skb_shinfo(skb)->frags[j].size += curr_frag_len;
		skb_shinfo(skb)->frags[j].size += curr_frag_len;
		skb->len += curr_frag_len;
		skb->len += curr_frag_len;
		skb->data_len += curr_frag_len;
		skb->data_len += curr_frag_len;
		pktsize -= curr_frag_len;


		memset(page_info, 0, sizeof(*page_info));
		memset(page_info, 0, sizeof(*page_info));
	}
	}
+21 −2
Original line number Original line Diff line number Diff line
@@ -227,7 +227,7 @@ static int cnic_send_nlmsg(struct cnic_local *cp, u32 type,
	}
	}


	rcu_read_lock();
	rcu_read_lock();
	ulp_ops = rcu_dereference(cp->ulp_ops[CNIC_ULP_ISCSI]);
	ulp_ops = rcu_dereference(cnic_ulp_tbl[CNIC_ULP_ISCSI]);
	if (ulp_ops)
	if (ulp_ops)
		ulp_ops->iscsi_nl_send_msg(cp->dev, msg_type, buf, len);
		ulp_ops->iscsi_nl_send_msg(cp->dev, msg_type, buf, len);
	rcu_read_unlock();
	rcu_read_unlock();
@@ -319,6 +319,20 @@ static int cnic_abort_prep(struct cnic_sock *csk)
	return 0;
	return 0;
}
}


static void cnic_uio_stop(void)
{
	struct cnic_dev *dev;

	read_lock(&cnic_dev_lock);
	list_for_each_entry(dev, &cnic_dev_list, list) {
		struct cnic_local *cp = dev->cnic_priv;

		if (cp->cnic_uinfo)
			cnic_send_nlmsg(cp, ISCSI_KEVENT_IF_DOWN, NULL);
	}
	read_unlock(&cnic_dev_lock);
}

int cnic_register_driver(int ulp_type, struct cnic_ulp_ops *ulp_ops)
int cnic_register_driver(int ulp_type, struct cnic_ulp_ops *ulp_ops)
{
{
	struct cnic_dev *dev;
	struct cnic_dev *dev;
@@ -390,6 +404,9 @@ int cnic_unregister_driver(int ulp_type)
	}
	}
	read_unlock(&cnic_dev_lock);
	read_unlock(&cnic_dev_lock);


	if (ulp_type == CNIC_ULP_ISCSI)
		cnic_uio_stop();

	rcu_assign_pointer(cnic_ulp_tbl[ulp_type], NULL);
	rcu_assign_pointer(cnic_ulp_tbl[ulp_type], NULL);


	mutex_unlock(&cnic_lock);
	mutex_unlock(&cnic_lock);
@@ -632,7 +649,6 @@ static void cnic_free_resc(struct cnic_dev *dev)
	int i = 0;
	int i = 0;


	if (cp->cnic_uinfo) {
	if (cp->cnic_uinfo) {
		cnic_send_nlmsg(cp, ISCSI_KEVENT_IF_DOWN, NULL);
		while (cp->uio_dev != -1 && i < 15) {
		while (cp->uio_dev != -1 && i < 15) {
			msleep(100);
			msleep(100);
			i++;
			i++;
@@ -1057,6 +1073,9 @@ static void cnic_ulp_stop(struct cnic_dev *dev)
	struct cnic_local *cp = dev->cnic_priv;
	struct cnic_local *cp = dev->cnic_priv;
	int if_type;
	int if_type;


	if (cp->cnic_uinfo)
		cnic_send_nlmsg(cp, ISCSI_KEVENT_IF_DOWN, NULL);

	rcu_read_lock();
	rcu_read_lock();
	for (if_type = 0; if_type < MAX_CNIC_ULP_TYPE; if_type++) {
	for (if_type = 0; if_type < MAX_CNIC_ULP_TYPE; if_type++) {
		struct cnic_ulp_ops *ulp_ops;
		struct cnic_ulp_ops *ulp_ops;
Loading