diff options
author | David S. Miller <davem@davemloft.net> | 2010-07-28 00:01:35 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-07-28 00:01:35 -0400 |
commit | bb7e95c8fd859922c6cf3ebbb3a8546007df1748 (patch) | |
tree | 58b54c6306ba168b76f25cc6dc9a2d1d2eb830a7 /drivers/net | |
parent | b8bc0421ab7f83712a0a8ef7eb05fa73ec53c027 (diff) | |
parent | 5447080cfa3c77154498dfbf225367ac85b4c2b5 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/bnx2x_main.c
Merge bnx2x bug fixes in by hand... :-/
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/bnx2x/bnx2x.h | 4 | ||||
-rw-r--r-- | drivers/net/bnx2x/bnx2x_main.c | 1 | ||||
-rw-r--r-- | drivers/net/bnx2x/bnx2x_stats.c | 37 | ||||
-rw-r--r-- | drivers/net/bonding/bond_alb.c | 2 | ||||
-rw-r--r-- | drivers/net/igb/igb_main.c | 9 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 9 | ||||
-rw-r--r-- | drivers/net/macvlan.c | 10 | ||||
-rw-r--r-- | drivers/net/macvtap.c | 18 | ||||
-rw-r--r-- | drivers/net/s2io.h | 2 | ||||
-rw-r--r-- | drivers/net/tun.c | 14 | ||||
-rw-r--r-- | drivers/net/wimax/i2400m/i2400m-usb.h | 1 | ||||
-rw-r--r-- | drivers/net/wimax/i2400m/usb.c | 2 |
12 files changed, 88 insertions, 21 deletions
diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h index 817b0887f8cd..53af9c93e75c 100644 --- a/drivers/net/bnx2x/bnx2x.h +++ b/drivers/net/bnx2x/bnx2x.h | |||
@@ -863,6 +863,10 @@ struct bnx2x { | |||
863 | 863 | ||
864 | /* used to synchronize stats collecting */ | 864 | /* used to synchronize stats collecting */ |
865 | int stats_state; | 865 | int stats_state; |
866 | |||
867 | /* used for synchronization of concurrent threads statistics handling */ | ||
868 | spinlock_t stats_lock; | ||
869 | |||
866 | /* used by dmae command loader */ | 870 | /* used by dmae command loader */ |
867 | struct dmae_command stats_dmae; | 871 | struct dmae_command stats_dmae; |
868 | int executer_idx; | 872 | int executer_idx; |
diff --git a/drivers/net/bnx2x/bnx2x_main.c b/drivers/net/bnx2x/bnx2x_main.c index 75568f111754..b4ec2b02a465 100644 --- a/drivers/net/bnx2x/bnx2x_main.c +++ b/drivers/net/bnx2x/bnx2x_main.c | |||
@@ -6714,6 +6714,7 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp) | |||
6714 | 6714 | ||
6715 | mutex_init(&bp->port.phy_mutex); | 6715 | mutex_init(&bp->port.phy_mutex); |
6716 | mutex_init(&bp->fw_mb_mutex); | 6716 | mutex_init(&bp->fw_mb_mutex); |
6717 | spin_lock_init(&bp->stats_lock); | ||
6717 | #ifdef BCM_CNIC | 6718 | #ifdef BCM_CNIC |
6718 | mutex_init(&bp->cnic_mutex); | 6719 | mutex_init(&bp->cnic_mutex); |
6719 | #endif | 6720 | #endif |
diff --git a/drivers/net/bnx2x/bnx2x_stats.c b/drivers/net/bnx2x/bnx2x_stats.c index 3f5127720423..c74724461020 100644 --- a/drivers/net/bnx2x/bnx2x_stats.c +++ b/drivers/net/bnx2x/bnx2x_stats.c | |||
@@ -156,6 +156,8 @@ static void bnx2x_storm_stats_post(struct bnx2x *bp) | |||
156 | struct eth_query_ramrod_data ramrod_data = {0}; | 156 | struct eth_query_ramrod_data ramrod_data = {0}; |
157 | int i, rc; | 157 | int i, rc; |
158 | 158 | ||
159 | spin_lock_bh(&bp->stats_lock); | ||
160 | |||
159 | ramrod_data.drv_counter = bp->stats_counter++; | 161 | ramrod_data.drv_counter = bp->stats_counter++; |
160 | ramrod_data.collect_port = bp->port.pmf ? 1 : 0; | 162 | ramrod_data.collect_port = bp->port.pmf ? 1 : 0; |
161 | for_each_queue(bp, i) | 163 | for_each_queue(bp, i) |
@@ -169,6 +171,8 @@ static void bnx2x_storm_stats_post(struct bnx2x *bp) | |||
169 | bp->spq_left++; | 171 | bp->spq_left++; |
170 | bp->stats_pending = 1; | 172 | bp->stats_pending = 1; |
171 | } | 173 | } |
174 | |||
175 | spin_unlock_bh(&bp->stats_lock); | ||
172 | } | 176 | } |
173 | } | 177 | } |
174 | 178 | ||
@@ -734,6 +738,14 @@ static int bnx2x_storm_stats_update(struct bnx2x *bp) | |||
734 | struct host_func_stats *fstats = bnx2x_sp(bp, func_stats); | 738 | struct host_func_stats *fstats = bnx2x_sp(bp, func_stats); |
735 | struct bnx2x_eth_stats *estats = &bp->eth_stats; | 739 | struct bnx2x_eth_stats *estats = &bp->eth_stats; |
736 | int i; | 740 | int i; |
741 | u16 cur_stats_counter; | ||
742 | |||
743 | /* Make sure we use the value of the counter | ||
744 | * used for sending the last stats ramrod. | ||
745 | */ | ||
746 | spin_lock_bh(&bp->stats_lock); | ||
747 | cur_stats_counter = bp->stats_counter - 1; | ||
748 | spin_unlock_bh(&bp->stats_lock); | ||
737 | 749 | ||
738 | memcpy(&(fstats->total_bytes_received_hi), | 750 | memcpy(&(fstats->total_bytes_received_hi), |
739 | &(bnx2x_sp(bp, func_stats_base)->total_bytes_received_hi), | 751 | &(bnx2x_sp(bp, func_stats_base)->total_bytes_received_hi), |
@@ -761,25 +773,22 @@ static int bnx2x_storm_stats_update(struct bnx2x *bp) | |||
761 | u32 diff; | 773 | u32 diff; |
762 | 774 | ||
763 | /* are storm stats valid? */ | 775 | /* are storm stats valid? */ |
764 | if ((u16)(le16_to_cpu(xclient->stats_counter) + 1) != | 776 | if (le16_to_cpu(xclient->stats_counter) != cur_stats_counter) { |
765 | bp->stats_counter) { | ||
766 | DP(BNX2X_MSG_STATS, "[%d] stats not updated by xstorm" | 777 | DP(BNX2X_MSG_STATS, "[%d] stats not updated by xstorm" |
767 | " xstorm counter (0x%x) != stats_counter (0x%x)\n", | 778 | " xstorm counter (0x%x) != stats_counter (0x%x)\n", |
768 | i, xclient->stats_counter, bp->stats_counter); | 779 | i, xclient->stats_counter, cur_stats_counter + 1); |
769 | return -1; | 780 | return -1; |
770 | } | 781 | } |
771 | if ((u16)(le16_to_cpu(tclient->stats_counter) + 1) != | 782 | if (le16_to_cpu(tclient->stats_counter) != cur_stats_counter) { |
772 | bp->stats_counter) { | ||
773 | DP(BNX2X_MSG_STATS, "[%d] stats not updated by tstorm" | 783 | DP(BNX2X_MSG_STATS, "[%d] stats not updated by tstorm" |
774 | " tstorm counter (0x%x) != stats_counter (0x%x)\n", | 784 | " tstorm counter (0x%x) != stats_counter (0x%x)\n", |
775 | i, tclient->stats_counter, bp->stats_counter); | 785 | i, tclient->stats_counter, cur_stats_counter + 1); |
776 | return -2; | 786 | return -2; |
777 | } | 787 | } |
778 | if ((u16)(le16_to_cpu(uclient->stats_counter) + 1) != | 788 | if (le16_to_cpu(uclient->stats_counter) != cur_stats_counter) { |
779 | bp->stats_counter) { | ||
780 | DP(BNX2X_MSG_STATS, "[%d] stats not updated by ustorm" | 789 | DP(BNX2X_MSG_STATS, "[%d] stats not updated by ustorm" |
781 | " ustorm counter (0x%x) != stats_counter (0x%x)\n", | 790 | " ustorm counter (0x%x) != stats_counter (0x%x)\n", |
782 | i, uclient->stats_counter, bp->stats_counter); | 791 | i, uclient->stats_counter, cur_stats_counter + 1); |
783 | return -4; | 792 | return -4; |
784 | } | 793 | } |
785 | 794 | ||
@@ -1216,16 +1225,18 @@ static const struct { | |||
1216 | 1225 | ||
1217 | void bnx2x_stats_handle(struct bnx2x *bp, enum bnx2x_stats_event event) | 1226 | void bnx2x_stats_handle(struct bnx2x *bp, enum bnx2x_stats_event event) |
1218 | { | 1227 | { |
1219 | enum bnx2x_stats_state state = bp->stats_state; | 1228 | enum bnx2x_stats_state state; |
1220 | 1229 | ||
1221 | if (unlikely(bp->panic)) | 1230 | if (unlikely(bp->panic)) |
1222 | return; | 1231 | return; |
1223 | 1232 | ||
1224 | bnx2x_stats_stm[state][event].action(bp); | 1233 | /* Protect a state change flow */ |
1234 | spin_lock_bh(&bp->stats_lock); | ||
1235 | state = bp->stats_state; | ||
1225 | bp->stats_state = bnx2x_stats_stm[state][event].next_state; | 1236 | bp->stats_state = bnx2x_stats_stm[state][event].next_state; |
1237 | spin_unlock_bh(&bp->stats_lock); | ||
1226 | 1238 | ||
1227 | /* Make sure the state has been "changed" */ | 1239 | bnx2x_stats_stm[state][event].action(bp); |
1228 | smp_wmb(); | ||
1229 | 1240 | ||
1230 | if ((event != STATS_EVENT_UPDATE) || netif_msg_timer(bp)) | 1241 | if ((event != STATS_EVENT_UPDATE) || netif_msg_timer(bp)) |
1231 | DP(BNX2X_MSG_STATS, "state %d -> event %d -> state %d\n", | 1242 | DP(BNX2X_MSG_STATS, "state %d -> event %d -> state %d\n", |
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index e3b35d0b4284..c746b331771d 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c | |||
@@ -815,7 +815,7 @@ static int rlb_initialize(struct bonding *bond) | |||
815 | 815 | ||
816 | /*initialize packet type*/ | 816 | /*initialize packet type*/ |
817 | pk_type->type = cpu_to_be16(ETH_P_ARP); | 817 | pk_type->type = cpu_to_be16(ETH_P_ARP); |
818 | pk_type->dev = NULL; | 818 | pk_type->dev = bond->dev; |
819 | pk_type->func = rlb_arp_recv; | 819 | pk_type->func = rlb_arp_recv; |
820 | 820 | ||
821 | /* register to receive ARPs */ | 821 | /* register to receive ARPs */ |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 94656179441d..667b527b0312 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -1722,6 +1722,15 @@ static int __devinit igb_probe(struct pci_dev *pdev, | |||
1722 | u16 eeprom_apme_mask = IGB_EEPROM_APME; | 1722 | u16 eeprom_apme_mask = IGB_EEPROM_APME; |
1723 | u32 part_num; | 1723 | u32 part_num; |
1724 | 1724 | ||
1725 | /* Catch broken hardware that put the wrong VF device ID in | ||
1726 | * the PCIe SR-IOV capability. | ||
1727 | */ | ||
1728 | if (pdev->is_virtfn) { | ||
1729 | WARN(1, KERN_ERR "%s (%hx:%hx) should not be a VF!\n", | ||
1730 | pci_name(pdev), pdev->vendor, pdev->device); | ||
1731 | return -EINVAL; | ||
1732 | } | ||
1733 | |||
1725 | err = pci_enable_device_mem(pdev); | 1734 | err = pci_enable_device_mem(pdev); |
1726 | if (err) | 1735 | if (err) |
1727 | return err; | 1736 | return err; |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index e92acbf5a307..7d6a415bcf88 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -6539,6 +6539,15 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
6539 | #endif | 6539 | #endif |
6540 | u32 part_num, eec; | 6540 | u32 part_num, eec; |
6541 | 6541 | ||
6542 | /* Catch broken hardware that put the wrong VF device ID in | ||
6543 | * the PCIe SR-IOV capability. | ||
6544 | */ | ||
6545 | if (pdev->is_virtfn) { | ||
6546 | WARN(1, KERN_ERR "%s (%hx:%hx) should not be a VF!\n", | ||
6547 | pci_name(pdev), pdev->vendor, pdev->device); | ||
6548 | return -EINVAL; | ||
6549 | } | ||
6550 | |||
6542 | err = pci_enable_device_mem(pdev); | 6551 | err = pci_enable_device_mem(pdev); |
6543 | if (err) | 6552 | if (err) |
6544 | return err; | 6553 | return err; |
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 1b28aaec0a5a..6e9da96a87b2 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
@@ -515,7 +515,7 @@ static const struct net_device_ops macvlan_netdev_ops = { | |||
515 | .ndo_validate_addr = eth_validate_addr, | 515 | .ndo_validate_addr = eth_validate_addr, |
516 | }; | 516 | }; |
517 | 517 | ||
518 | static void macvlan_setup(struct net_device *dev) | 518 | void macvlan_common_setup(struct net_device *dev) |
519 | { | 519 | { |
520 | ether_setup(dev); | 520 | ether_setup(dev); |
521 | 521 | ||
@@ -524,6 +524,12 @@ static void macvlan_setup(struct net_device *dev) | |||
524 | dev->destructor = free_netdev; | 524 | dev->destructor = free_netdev; |
525 | dev->header_ops = &macvlan_hard_header_ops, | 525 | dev->header_ops = &macvlan_hard_header_ops, |
526 | dev->ethtool_ops = &macvlan_ethtool_ops; | 526 | dev->ethtool_ops = &macvlan_ethtool_ops; |
527 | } | ||
528 | EXPORT_SYMBOL_GPL(macvlan_common_setup); | ||
529 | |||
530 | static void macvlan_setup(struct net_device *dev) | ||
531 | { | ||
532 | macvlan_common_setup(dev); | ||
527 | dev->tx_queue_len = 0; | 533 | dev->tx_queue_len = 0; |
528 | } | 534 | } |
529 | 535 | ||
@@ -735,7 +741,6 @@ int macvlan_link_register(struct rtnl_link_ops *ops) | |||
735 | /* common fields */ | 741 | /* common fields */ |
736 | ops->priv_size = sizeof(struct macvlan_dev); | 742 | ops->priv_size = sizeof(struct macvlan_dev); |
737 | ops->get_tx_queues = macvlan_get_tx_queues; | 743 | ops->get_tx_queues = macvlan_get_tx_queues; |
738 | ops->setup = macvlan_setup; | ||
739 | ops->validate = macvlan_validate; | 744 | ops->validate = macvlan_validate; |
740 | ops->maxtype = IFLA_MACVLAN_MAX; | 745 | ops->maxtype = IFLA_MACVLAN_MAX; |
741 | ops->policy = macvlan_policy; | 746 | ops->policy = macvlan_policy; |
@@ -749,6 +754,7 @@ EXPORT_SYMBOL_GPL(macvlan_link_register); | |||
749 | 754 | ||
750 | static struct rtnl_link_ops macvlan_link_ops = { | 755 | static struct rtnl_link_ops macvlan_link_ops = { |
751 | .kind = "macvlan", | 756 | .kind = "macvlan", |
757 | .setup = macvlan_setup, | ||
752 | .newlink = macvlan_newlink, | 758 | .newlink = macvlan_newlink, |
753 | .dellink = macvlan_dellink, | 759 | .dellink = macvlan_dellink, |
754 | }; | 760 | }; |
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 2b4d59b58b2c..3b1c54a9c6ef 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c | |||
@@ -180,11 +180,18 @@ static int macvtap_forward(struct net_device *dev, struct sk_buff *skb) | |||
180 | { | 180 | { |
181 | struct macvtap_queue *q = macvtap_get_queue(dev, skb); | 181 | struct macvtap_queue *q = macvtap_get_queue(dev, skb); |
182 | if (!q) | 182 | if (!q) |
183 | return -ENOLINK; | 183 | goto drop; |
184 | |||
185 | if (skb_queue_len(&q->sk.sk_receive_queue) >= dev->tx_queue_len) | ||
186 | goto drop; | ||
184 | 187 | ||
185 | skb_queue_tail(&q->sk.sk_receive_queue, skb); | 188 | skb_queue_tail(&q->sk.sk_receive_queue, skb); |
186 | wake_up_interruptible_poll(sk_sleep(&q->sk), POLLIN | POLLRDNORM | POLLRDBAND); | 189 | wake_up_interruptible_poll(sk_sleep(&q->sk), POLLIN | POLLRDNORM | POLLRDBAND); |
187 | return 0; | 190 | return NET_RX_SUCCESS; |
191 | |||
192 | drop: | ||
193 | kfree_skb(skb); | ||
194 | return NET_RX_DROP; | ||
188 | } | 195 | } |
189 | 196 | ||
190 | /* | 197 | /* |
@@ -235,8 +242,15 @@ static void macvtap_dellink(struct net_device *dev, | |||
235 | macvlan_dellink(dev, head); | 242 | macvlan_dellink(dev, head); |
236 | } | 243 | } |
237 | 244 | ||
245 | static void macvtap_setup(struct net_device *dev) | ||
246 | { | ||
247 | macvlan_common_setup(dev); | ||
248 | dev->tx_queue_len = TUN_READQ_SIZE; | ||
249 | } | ||
250 | |||
238 | static struct rtnl_link_ops macvtap_link_ops __read_mostly = { | 251 | static struct rtnl_link_ops macvtap_link_ops __read_mostly = { |
239 | .kind = "macvtap", | 252 | .kind = "macvtap", |
253 | .setup = macvtap_setup, | ||
240 | .newlink = macvtap_newlink, | 254 | .newlink = macvtap_newlink, |
241 | .dellink = macvtap_dellink, | 255 | .dellink = macvtap_dellink, |
242 | }; | 256 | }; |
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h index 3645fb3673db..0af033533905 100644 --- a/drivers/net/s2io.h +++ b/drivers/net/s2io.h | |||
@@ -65,7 +65,7 @@ static int debug_level = ERR_DBG; | |||
65 | 65 | ||
66 | /* DEBUG message print. */ | 66 | /* DEBUG message print. */ |
67 | #define DBG_PRINT(dbg_level, fmt, args...) do { \ | 67 | #define DBG_PRINT(dbg_level, fmt, args...) do { \ |
68 | if (dbg_level >= debug_level) \ | 68 | if (dbg_level <= debug_level) \ |
69 | pr_info(fmt, ##args); \ | 69 | pr_info(fmt, ##args); \ |
70 | } while (0) | 70 | } while (0) |
71 | 71 | ||
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 6ad6fe706312..63042596f0cf 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c | |||
@@ -736,8 +736,18 @@ static __inline__ ssize_t tun_put_user(struct tun_struct *tun, | |||
736 | gso.gso_type = VIRTIO_NET_HDR_GSO_TCPV6; | 736 | gso.gso_type = VIRTIO_NET_HDR_GSO_TCPV6; |
737 | else if (sinfo->gso_type & SKB_GSO_UDP) | 737 | else if (sinfo->gso_type & SKB_GSO_UDP) |
738 | gso.gso_type = VIRTIO_NET_HDR_GSO_UDP; | 738 | gso.gso_type = VIRTIO_NET_HDR_GSO_UDP; |
739 | else | 739 | else { |
740 | BUG(); | 740 | printk(KERN_ERR "tun: unexpected GSO type: " |
741 | "0x%x, gso_size %d, hdr_len %d\n", | ||
742 | sinfo->gso_type, gso.gso_size, | ||
743 | gso.hdr_len); | ||
744 | print_hex_dump(KERN_ERR, "tun: ", | ||
745 | DUMP_PREFIX_NONE, | ||
746 | 16, 1, skb->head, | ||
747 | min((int)gso.hdr_len, 64), true); | ||
748 | WARN_ON_ONCE(1); | ||
749 | return -EINVAL; | ||
750 | } | ||
741 | if (sinfo->gso_type & SKB_GSO_TCP_ECN) | 751 | if (sinfo->gso_type & SKB_GSO_TCP_ECN) |
742 | gso.gso_type |= VIRTIO_NET_HDR_GSO_ECN; | 752 | gso.gso_type |= VIRTIO_NET_HDR_GSO_ECN; |
743 | } else | 753 | } else |
diff --git a/drivers/net/wimax/i2400m/i2400m-usb.h b/drivers/net/wimax/i2400m/i2400m-usb.h index 2d7c96d7e865..eb80243e22df 100644 --- a/drivers/net/wimax/i2400m/i2400m-usb.h +++ b/drivers/net/wimax/i2400m/i2400m-usb.h | |||
@@ -152,6 +152,7 @@ enum { | |||
152 | /* Device IDs */ | 152 | /* Device IDs */ |
153 | USB_DEVICE_ID_I6050 = 0x0186, | 153 | USB_DEVICE_ID_I6050 = 0x0186, |
154 | USB_DEVICE_ID_I6050_2 = 0x0188, | 154 | USB_DEVICE_ID_I6050_2 = 0x0188, |
155 | USB_DEVICE_ID_I6250 = 0x0187, | ||
155 | }; | 156 | }; |
156 | 157 | ||
157 | 158 | ||
diff --git a/drivers/net/wimax/i2400m/usb.c b/drivers/net/wimax/i2400m/usb.c index 0d5081d77dc0..d3365ac85dde 100644 --- a/drivers/net/wimax/i2400m/usb.c +++ b/drivers/net/wimax/i2400m/usb.c | |||
@@ -491,6 +491,7 @@ int i2400mu_probe(struct usb_interface *iface, | |||
491 | switch (id->idProduct) { | 491 | switch (id->idProduct) { |
492 | case USB_DEVICE_ID_I6050: | 492 | case USB_DEVICE_ID_I6050: |
493 | case USB_DEVICE_ID_I6050_2: | 493 | case USB_DEVICE_ID_I6050_2: |
494 | case USB_DEVICE_ID_I6250: | ||
494 | i2400mu->i6050 = 1; | 495 | i2400mu->i6050 = 1; |
495 | break; | 496 | break; |
496 | default: | 497 | default: |
@@ -739,6 +740,7 @@ static | |||
739 | struct usb_device_id i2400mu_id_table[] = { | 740 | struct usb_device_id i2400mu_id_table[] = { |
740 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, | 741 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, |
741 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050_2) }, | 742 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050_2) }, |
743 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6250) }, | ||
742 | { USB_DEVICE(0x8086, 0x0181) }, | 744 | { USB_DEVICE(0x8086, 0x0181) }, |
743 | { USB_DEVICE(0x8086, 0x1403) }, | 745 | { USB_DEVICE(0x8086, 0x1403) }, |
744 | { USB_DEVICE(0x8086, 0x1405) }, | 746 | { USB_DEVICE(0x8086, 0x1405) }, |