net driver updates
Subsystems (6)
PATCH 1/1 net driver updates
Note 1: The dm9601 change is, strictly speaking, an addition, but it fixes the inability to perform several basic functions related to MAC address.
Please pull from 'davem-fixes' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git davem-fixes
to receive the following updates:
drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_qmr.c | 57 +++++++++++++++++++++++++++++++++--- drivers/net/ehea/ehea_qmr.h | 3 ++ drivers/net/ibm_newemac/core.c | 2 +- drivers/net/mlx4/en_main.c | 1 - drivers/net/mlx4/fw.c | 2 +- drivers/net/tulip/dmfe.c | 12 +++++++- drivers/net/usb/dm9601.c | 15 ++++++++++ drivers/net/via-velocity.c | 11 ++++-- drivers/net/wan/syncppp.c | 5 ++- drivers/s390/net/qeth_core_main.c | 3 +- drivers/s390/net/qeth_l2_main.c | 27 ++++++----------- drivers/s390/net/qeth_l3_main.c | 13 +-------- drivers/s390/net/qeth_l3_sys.c | 7 ---- 14 files changed, 106 insertions(+), 54 deletions(-)
FUJITA Tomonori (1):
dmfe: check pci_alloc_consistent errors
Frank Blaschka (2):
qeth: fix offset error in non prealloc header path
qeth: remove unnecessary support ckeck in sysfs route6
Huang Weiyi (1):
mlx4_en: remove duplicated #include
Jeff Garzik (1):
drivers/net/wan/syncppp: Fix unused-var warnings
Josh Boyer (1):
ibm_newemac: Fix typo in flow control config option
Peter Korsgaard (1):
dm9601: runtime mac address change support
Sven Hartge (1):
via-velocity: use driver string instead of dev->name before register_netdev()
Thomas Klein (1):
ehea: Detect 16GB hugepages for firmware restriction
Ursula Braun (2):
qeth: remove non-recover-thread checkings
qeth: avoid skb_under_panic for malformatted inbound data
Yevgeny Petrilin (1):
mlx4: Setting the correct offset for default mac address
drivers/net/ehea/ehea.h +1 -1
@@ -40,7 +40,7 @@#include <asm/io.h> #define DRV_NAME "ehea" -#define DRV_VERSION "EHEA_0094" +#define DRV_VERSION "EHEA_0095"/* eHEA capability flags */ #define DLPAR_PORT_ADD_REM 1
drivers/net/ehea/ehea_qmr.c +52 -5
79 lines not on this page · raw message
drivers/net/ehea/ehea_qmr.h +3 -0
@@ -40,6 +40,9 @@#define EHEA_PAGESIZE (1UL << EHEA_PAGESHIFT)#define EHEA_SECTSIZE (1UL << 24)#define EHEA_PAGES_PER_SECTION (EHEA_SECTSIZE >> EHEA_PAGESHIFT) +#define EHEA_HUGEPAGESHIFT 34 +#define EHEA_HUGEPAGE_SIZE (1UL << EHEA_HUGEPAGESHIFT) +#define EHEA_HUGEPAGE_PFN_MASK ((EHEA_HUGEPAGE_SIZE - 1) >> PAGE_SHIFT)#if ((1UL <<SECTION_SIZE_BITS ) <EHEA_SECTSIZE )#error eHEA module cannot work if kernel sectionsize < ehea sectionsize
drivers/net/ibm_newemac/core.c +1 -1
@@ -2605,7 +2605,7 @@ static int __devinit emac_init_config(struct emac_instance *dev) of_device_is_compatible(np, "ibm,emac-440gr")) dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX;if (of_device_is_compatible (np,"ibm,emac-405ez" )) { -#ifdef CONFIG_IBM_NEW_EMAC_NO_FLOW_CONTROL +#ifdef CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL dev->features |= EMAC_FTR_NO_FLOW_CONTROL_40x;#else printk(KERN_ERR "%s: Flow control not disabled!\n",
drivers/net/mlx4/en_main.c +0 -1
@@ -35,7 +35,6 @@#include <linux/module.h> #include <linux/delay.h> #include <linux/netdevice.h> -#include <linux/cpumask.h> #include <linux/mlx4/driver.h> #include <linux/mlx4/device.h>
drivers/net/mlx4/fw.c +1 -1
@@ -360,9 +360,9 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)#define QUERY_PORT_ETH_MTU_OFFSET 0x02#define QUERY_PORT_WIDTH_OFFSET 0x06#define QUERY_PORT_MAX_GID_PKEY_OFFSET 0x07 -#define QUERY_PORT_MAC_OFFSET 0x08#define QUERY_PORT_MAX_MACVLAN_OFFSET 0x0a#define QUERY_PORT_MAX_VL_OFFSET 0x0b +#define QUERY_PORT_MAC_OFFSET 0x10for (i =1 ; i <= dev_cap->num_ports; ++i) { err = mlx4_cmd_box(dev, 0, mailbox->dma, i, 0, MLX4_CMD_QUERY_PORT,
drivers/net/tulip/dmfe.c +11 -1
@@ -420,9 +420,13 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,/* Allocate Tx/Rx descriptor memory */ db->desc_pool_ptr =pci_alloc_consistent (pdev,sizeof (struct tx_desc ) *DESC_ALL_CNT +0x20 , &db->desc_pool_dma_ptr); +if (!db->desc_pool_ptr) + goto err_out_res; db->buf_pool_ptr =pci_alloc_consistent (pdev,TX_BUF_ALLOC *TX_DESC_CNT +4 , &db->buf_pool_dma_ptr); +if (!db->buf_pool_ptr) + goto err_out_free_desc; db->first_tx_desc = (struct tx_desc *) db->desc_pool_ptr; db->first_tx_desc_dma = db->desc_pool_dma_ptr;
@@ -469,7 +473,7 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, err =register_netdev (dev);if (err) - goto err_out_res; + goto err_out_free_buf; printk(KERN_INFO "%s: Davicom DM%04lx at pci%s, " "%s, irq %d.\n",
@@ -483,6 +487,12 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,return 0 ; +err_out_free_buf: +pci_free_consistent (pdev,TX_BUF_ALLOC *TX_DESC_CNT +4 , + db->buf_pool_ptr, db->buf_pool_dma_ptr); +err_out_free_desc: +pci_free_consistent (pdev,sizeof (struct tx_desc ) *DESC_ALL_CNT +0x20 , + db->desc_pool_ptr, db->desc_pool_dma_ptr); err_out_res:pci_release_regions (pdev); err_out_disable:
drivers/net/usb/dm9601.c +15 -0
@@ -396,6 +396,20 @@ static void dm9601_set_multicast(struct net_device *net)dm_write_reg_async (dev,DM_RX_CTRL , rx_ctl); } +static int dm9601_set_mac_address (struct net_device *net,void *p) +{ +struct sockaddr *addr = p; +struct usbnet *dev =netdev_priv (net); + +if (!is_valid_ether_addr (addr->sa_data)) +return -EINVAL ; + +memcpy (net->dev_addr, addr->sa_data, net->addr_len); +dm_write_async (dev,DM_PHY_ADDR , net->addr_len, net->dev_addr); + +return 0 ; +} +static int dm9601_bind (struct usbnet *dev,struct usb_interface *intf) {int ret;
@@ -406,6 +420,7 @@ static int dm9601_bind(struct usbnet *dev, struct usb_interface *intf) dev->net->do_ioctl = dm9601_ioctl; dev->net->set_multicast_list = dm9601_set_multicast; + dev->net->set_mac_address = dm9601_set_mac_address; dev->net->ethtool_ops = &dm9601_ethtool_ops; dev->net->hard_header_len +=DM_TX_OVERHEAD ; dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
drivers/net/via-velocity.c +7 -4
@@ -521,7 +521,7 @@ static void __devexit velocity_remove1(struct pci_dev *pdev)* we don't duplicate code for each option. */ -static void __devinit velocity_set_int_opt (int *opt,int val,int min,int max,int def,char *name,char *devname) +static void __devinit velocity_set_int_opt (int *opt,int val,int min,int max,int def,char *name,const char *devname) {if (val ==-1 ) *opt = def;
@@ -550,7 +550,7 @@ static void __devinit velocity_set_int_opt(int *opt, int val, int min, int max,* we don't duplicate code for each option. */ -static void __devinit velocity_set_bool_opt (u32 * opt,int val,int def,u32 flag,char *name,char *devname) +static void __devinit velocity_set_bool_opt (u32 * opt,int val,int def,u32 flag,char *name,const char *devname) { (*opt) &= (~flag);if (val ==-1 )
@@ -576,7 +576,7 @@ static void __devinit velocity_set_bool_opt(u32 * opt, int val, int def, u32 fla* for the current device */ -static void __devinit velocity_get_options (struct velocity_opt *opts,int index,char *devname) +static void __devinit velocity_get_options (struct velocity_opt *opts,int index,const char *devname) {velocity_set_int_opt (&opts->rx_thresh, rx_thresh[index],RX_THRESH_MIN ,RX_THRESH_MAX ,RX_THRESH_DEF ,"rx_thresh" , devname);
@@ -863,6 +863,7 @@ static int __devinit velocity_found1(struct pci_dev *pdev, const struct pci_devistatic int first =1 ;struct net_device *dev;int i; +const char *drv_string;const struct velocity_info_tbl *info = &chip_info_table[ent->driver_data];struct velocity_info *vptr;struct mac_regs __iomem * regs;
@@ -935,7 +936,9 @@ static int __devinit velocity_found1(struct pci_dev *pdev, const struct pci_devi dev->dev_addr[i] =readb (®s->PAR[i]); -velocity_get_options (&vptr->options, velocity_nics, dev->name); + drv_string =dev_driver_string (&pdev->dev); + +velocity_get_options (&vptr->options, velocity_nics, drv_string);/* * Mask out the options cannot be set to the chip
drivers/net/wan/syncppp.c +3 -2
@@ -756,10 +756,11 @@ static void sppp_cisco_input (struct sppp *sp, struct sk_buff *skb)case CISCO_ADDR_REQ :/* Stolen from net/ipv4/devinet.c -- SIOCGIFADDR ioctl */ { -struct in_device *in_dev; -struct in_ifaddr *ifa;__be32 addr =0 , mask =htonl (~0U );/* FIXME: is the mask correct? */ #ifdef CONFIG_INET +struct in_device *in_dev; +struct in_ifaddr *ifa; +rcu_read_lock ();if ((in_dev =__in_dev_get_rcu (dev)) !=NULL ) {
drivers/s390/net/qeth_core_main.c +2 -1
@@ -3025,7 +3025,7 @@ static inline void __qeth_fill_buffer(struct sk_buff *skb, struct qdio_buffer *buffer, int is_tso, int *next_element_to_fill, int offset) { - int length = skb->len - offset; + int length = skb->len;int length_here;int element;char *data;
@@ -3037,6 +3037,7 @@ static inline void __qeth_fill_buffer(struct sk_buff *skb,if (offset >=0 ) { data = skb->data + offset; + length -= offset; first_lap =0 ; }
drivers/s390/net/qeth_l2_main.c +9 -18
@@ -373,8 +373,6 @@ static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode)QETH_DBF_HEX (SETUP ,2 , &card,sizeof (void *));qeth_set_allowed_threads (card,0 ,1 ); -if (qeth_wait_for_threads (card, ~QETH_RECOVER_THREAD )) -return -ERESTARTSYS ;if (card->read.state ==CH_STATE_UP && card->write.state ==CH_STATE_UP && (card->state ==CARD_STATE_UP )) {
@@ -451,12 +449,15 @@ static void qeth_l2_process_inbound_buffer(struct qeth_card *card,netif_rx (skb);break ;case QETH_HEADER_TYPE_OSN : -skb_push (skb,sizeof (struct qeth_hdr )); -skb_copy_to_linear_data (skb, hdr, +if (card->info.type ==QETH_CARD_TYPE_OSN ) { +skb_push (skb,sizeof (struct qeth_hdr )); +skb_copy_to_linear_data (skb, hdr,sizeof (struct qeth_hdr )); - len = skb->len; - card->osn_info.data_cb (skb); -break ; + len = skb->len; + card->osn_info.data_cb (skb); +break ; + } +/* else unknown */ default :dev_kfree_skb_any (skb);QETH_DBF_TEXT (TRACE ,3 ,"inbunkno" );
@@ -975,12 +976,6 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)QETH_DBF_HEX (SETUP ,2 , &card,sizeof (void *));qeth_set_allowed_threads (card,QETH_RECOVER_THREAD ,1 ); -if (qeth_wait_for_threads (card, ~QETH_RECOVER_THREAD )) { -PRINT_WARN ("set_online of card %s interrupted by user!\n" , -CARD_BUS_ID (card)); -return -ERESTARTSYS ; - } - recover_flag = card->state; rc =ccw_device_set_online (CARD_RDEV (card));if (rc) {
@@ -1091,11 +1086,7 @@ static int __qeth_l2_set_offline(struct ccwgroup_device *cgdev,if (card->dev &&netif_carrier_ok (card->dev))netif_carrier_off (card->dev); recover_flag = card->state; -if (qeth_l2_stop_card (card, recovery_mode) == -ERESTARTSYS ) { -PRINT_WARN ("Stopping card %s interrupted by user!\n" , -CARD_BUS_ID (card)); -return -ERESTARTSYS ; - } +qeth_l2_stop_card (card, recovery_mode); rc =ccw_device_set_offline (CARD_DDEV (card)); rc2 =ccw_device_set_offline (CARD_WDEV (card)); rc3 =ccw_device_set_offline (CARD_RDEV (card));
drivers/s390/net/qeth_l3_main.c +1 -12
@@ -2064,8 +2064,6 @@ static int qeth_l3_stop_card(struct qeth_card *card, int recovery_mode)QETH_DBF_HEX (SETUP ,2 , &card,sizeof (void *));qeth_set_allowed_threads (card,0 ,1 ); -if (qeth_wait_for_threads (card, ~QETH_RECOVER_THREAD )) -return -ERESTARTSYS ;if (card->read.state ==CH_STATE_UP && card->write.state ==CH_STATE_UP && (card->state ==CARD_STATE_UP )) {
@@ -3049,11 +3047,6 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)QETH_DBF_HEX (SETUP ,2 , &card,sizeof (void *));qeth_set_allowed_threads (card,QETH_RECOVER_THREAD ,1 ); -if (qeth_wait_for_threads (card, ~QETH_RECOVER_THREAD )) { -PRINT_WARN ("set_online of card %s interrupted by user!\n" , -CARD_BUS_ID (card)); -return -ERESTARTSYS ; - } recover_flag = card->state; rc =ccw_device_set_online (CARD_RDEV (card));
@@ -3170,11 +3163,7 @@ static int __qeth_l3_set_offline(struct ccwgroup_device *cgdev,if (card->dev &&netif_carrier_ok (card->dev))netif_carrier_off (card->dev); recover_flag = card->state; -if (qeth_l3_stop_card (card, recovery_mode) == -ERESTARTSYS ) { -PRINT_WARN ("Stopping card %s interrupted by user!\n" , -CARD_BUS_ID (card)); -return -ERESTARTSYS ; - } +qeth_l3_stop_card (card, recovery_mode); rc =ccw_device_set_offline (CARD_DDEV (card)); rc2 =ccw_device_set_offline (CARD_WDEV (card)); rc3 =ccw_device_set_offline (CARD_RDEV (card));
drivers/s390/net/qeth_l3_sys.c +0 -7
@@ -121,9 +121,6 @@ static ssize_t qeth_l3_dev_route6_show(struct device *dev,if (!card)return -EINVAL ; -if (!qeth_is_supported (card,IPA_IPV6 )) -return sprintf (buf,"%s\n" ,"n/a" ); -return qeth_l3_dev_route_show (card, &card->options.route6, buf); }
@@ -135,10 +132,6 @@ static ssize_t qeth_l3_dev_route6_store(struct device *dev,if (!card)return -EINVAL ; -if (!qeth_is_supported (card,IPA_IPV6 )) { -return -EOPNOTSUPP ; - } -return qeth_l3_dev_route_store (card, &card->options.route6,QETH_PROT_IPV6 , buf, count); }
David Miller
maintainerFrom: Jeff Garzik <[email protected]>
Date: Mon, 27 Oct 2008 19:18:41 -0400
Quoted 9 lines
Note 1: The dm9601 change is, strictly speaking, an addition, but it fixes the inability to perform several basic functions related to MAC address.
Please pull from 'davem-fixes' branch of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git davem-fixes
to receive the following updates:
Pulled, thanks a lot Jeff.