Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
net: bug fix for vlan + gro issue
tc35815: Remove a wrong netif_wake_queue() call which triggers BUG_ON
cdc_ether: new PID for Ericsson C3607w to the whitelist (resubmit)
IPv6: better document max_addresses parameter
MAINTAINERS: update mv643xx_eth maintenance status
e1000: Fix DMA mapping error handling on RX
iwlwifi: sanity check before counting number of tfds can be free
iwlwifi: error checking for number of tfds in queue
iwlwifi: set HT flags after channel in rxon

+57 -18
+4 -4
Documentation/networking/ip-sysctl.txt
··· 1074 1074 Default: 5 1075 1075 1076 1076 max_addresses - INTEGER 1077 - Number of maximum addresses per interface. 0 disables limitation. 1078 - It is recommended not set too large value (or 0) because it would 1079 - be too easy way to crash kernel to allow to create too much of 1080 - autoconfigured addresses. 1077 + Maximum number of autoconfigured addresses per interface. Setting 1078 + to zero disables the limitation. It is not recommended to set this 1079 + value too large (or to zero) because it would be an easy way to 1080 + crash the kernel by allowing too many addresses to be created. 1081 1081 Default: 16 1082 1082 1083 1083 disable_ipv6 - BOOLEAN
+2 -2
MAINTAINERS
··· 3489 3489 F: drivers/net/wireless/libertas/ 3490 3490 3491 3491 MARVELL MV643XX ETHERNET DRIVER 3492 - M: Lennert Buytenhek <buytenh@marvell.com> 3492 + M: Lennert Buytenhek <buytenh@wantstofly.org> 3493 3493 L: netdev@vger.kernel.org 3494 - S: Supported 3494 + S: Maintained 3495 3495 F: drivers/net/mv643xx_eth.* 3496 3496 F: include/linux/mv643xx.h 3497 3497
+18 -1
drivers/net/e1000/e1000_main.c
··· 4006 4006 } 4007 4007 } 4008 4008 4009 - if (!buffer_info->dma) 4009 + if (!buffer_info->dma) { 4010 4010 buffer_info->dma = pci_map_page(pdev, 4011 4011 buffer_info->page, 0, 4012 4012 buffer_info->length, 4013 4013 PCI_DMA_FROMDEVICE); 4014 + if (pci_dma_mapping_error(pdev, buffer_info->dma)) { 4015 + put_page(buffer_info->page); 4016 + dev_kfree_skb(skb); 4017 + buffer_info->page = NULL; 4018 + buffer_info->skb = NULL; 4019 + buffer_info->dma = 0; 4020 + adapter->alloc_rx_buff_failed++; 4021 + break; /* while !buffer_info->skb */ 4022 + } 4023 + } 4014 4024 4015 4025 rx_desc = E1000_RX_DESC(*rx_ring, i); 4016 4026 rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); ··· 4111 4101 skb->data, 4112 4102 buffer_info->length, 4113 4103 PCI_DMA_FROMDEVICE); 4104 + if (pci_dma_mapping_error(pdev, buffer_info->dma)) { 4105 + dev_kfree_skb(skb); 4106 + buffer_info->skb = NULL; 4107 + buffer_info->dma = 0; 4108 + adapter->alloc_rx_buff_failed++; 4109 + break; /* while !buffer_info->skb */ 4110 + } 4114 4111 4115 4112 /* 4116 4113 * XXX if it was allocated cleanly it will never map to a
-1
drivers/net/tc35815.c
··· 1437 1437 /* Transmit complete. */ 1438 1438 lp->lstats.tx_ints++; 1439 1439 tc35815_txdone(dev); 1440 - netif_wake_queue(dev); 1441 1440 if (ret < 0) 1442 1441 ret = 0; 1443 1442 }
+5
drivers/net/usb/cdc_ether.c
··· 584 584 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 585 585 .driver_info = (unsigned long) &mbm_info, 586 586 }, { 587 + /* Ericsson C3607w ver 2 */ 588 + USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x190b, USB_CLASS_COMM, 589 + USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 590 + .driver_info = (unsigned long) &mbm_info, 591 + }, { 587 592 /* Toshiba F3507g */ 588 593 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130b, USB_CLASS_COMM, 589 594 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
+1 -1
drivers/net/wireless/iwlwifi/iwl-4965.c
··· 2008 2008 IWL_DEBUG_TX_REPLY(priv, "Retry scheduler reclaim scd_ssn " 2009 2009 "%d index %d\n", scd_ssn , index); 2010 2010 freed = iwl_tx_queue_reclaim(priv, txq_id, index); 2011 - priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 2011 + iwl_free_tfds_in_queue(priv, sta_id, tid, freed); 2012 2012 2013 2013 if (priv->mac80211_registered && 2014 2014 (iwl_queue_space(&txq->q) > txq->q.low_mark) &&
+3 -5
drivers/net/wireless/iwlwifi/iwl-5000.c
··· 1125 1125 scd_ssn , index, txq_id, txq->swq_id); 1126 1126 1127 1127 freed = iwl_tx_queue_reclaim(priv, txq_id, index); 1128 - priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 1128 + iwl_free_tfds_in_queue(priv, sta_id, tid, freed); 1129 1129 1130 1130 if (priv->mac80211_registered && 1131 1131 (iwl_queue_space(&txq->q) > txq->q.low_mark) && ··· 1153 1153 tx_resp->failure_frame); 1154 1154 1155 1155 freed = iwl_tx_queue_reclaim(priv, txq_id, index); 1156 - if (ieee80211_is_data_qos(tx_resp->frame_ctrl)) 1157 - priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 1156 + iwl_free_tfds_in_queue(priv, sta_id, tid, freed); 1158 1157 1159 1158 if (priv->mac80211_registered && 1160 1159 (iwl_queue_space(&txq->q) > txq->q.low_mark)) 1161 1160 iwl_wake_queue(priv, txq_id); 1162 1161 } 1163 1162 1164 - if (ieee80211_is_data_qos(tx_resp->frame_ctrl)) 1165 - iwl_txq_check_empty(priv, sta_id, tid, txq_id); 1163 + iwl_txq_check_empty(priv, sta_id, tid, txq_id); 1166 1164 1167 1165 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) 1168 1166 IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n");
+1 -1
drivers/net/wireless/iwlwifi/iwl-core.c
··· 2744 2744 if ((le16_to_cpu(priv->staging_rxon.channel) != ch)) 2745 2745 priv->staging_rxon.flags = 0; 2746 2746 2747 - iwl_set_rxon_ht(priv, ht_conf); 2748 2747 iwl_set_rxon_channel(priv, conf->channel); 2748 + iwl_set_rxon_ht(priv, ht_conf); 2749 2749 2750 2750 iwl_set_flags_for_band(priv, conf->channel->band); 2751 2751 spin_unlock_irqrestore(&priv->lock, flags);
+2
drivers/net/wireless/iwlwifi/iwl-core.h
··· 446 446 int iwl_hw_tx_queue_init(struct iwl_priv *priv, 447 447 struct iwl_tx_queue *txq); 448 448 int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq); 449 + void iwl_free_tfds_in_queue(struct iwl_priv *priv, 450 + int sta_id, int tid, int freed); 449 451 int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq, 450 452 int slots_num, u32 txq_id); 451 453 void iwl_tx_queue_free(struct iwl_priv *priv, int txq_id);
+20 -2
drivers/net/wireless/iwlwifi/iwl-tx.c
··· 120 120 EXPORT_SYMBOL(iwl_txq_update_write_ptr); 121 121 122 122 123 + void iwl_free_tfds_in_queue(struct iwl_priv *priv, 124 + int sta_id, int tid, int freed) 125 + { 126 + if (priv->stations[sta_id].tid[tid].tfds_in_queue >= freed) 127 + priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 128 + else { 129 + IWL_ERR(priv, "free more than tfds_in_queue (%u:%d)\n", 130 + priv->stations[sta_id].tid[tid].tfds_in_queue, 131 + freed); 132 + priv->stations[sta_id].tid[tid].tfds_in_queue = 0; 133 + } 134 + } 135 + EXPORT_SYMBOL(iwl_free_tfds_in_queue); 136 + 123 137 /** 124 138 * iwl_tx_queue_free - Deallocate DMA queue. 125 139 * @txq: Transmit queue to deallocate. ··· 1145 1131 struct iwl_queue *q = &txq->q; 1146 1132 struct iwl_tx_info *tx_info; 1147 1133 int nfreed = 0; 1134 + struct ieee80211_hdr *hdr; 1148 1135 1149 1136 if ((index >= q->n_bd) || (iwl_queue_used(q, index) == 0)) { 1150 1137 IWL_ERR(priv, "Read index for DMA queue txq id (%d), index %d, " ··· 1160 1145 1161 1146 tx_info = &txq->txb[txq->q.read_ptr]; 1162 1147 iwl_tx_status(priv, tx_info->skb[0]); 1148 + 1149 + hdr = (struct ieee80211_hdr *)tx_info->skb[0]->data; 1150 + if (hdr && ieee80211_is_data_qos(hdr->frame_control)) 1151 + nfreed++; 1163 1152 tx_info->skb[0] = NULL; 1164 1153 1165 1154 if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl) 1166 1155 priv->cfg->ops->lib->txq_inval_byte_cnt_tbl(priv, txq); 1167 1156 1168 1157 priv->cfg->ops->lib->txq_free_tfd(priv, txq); 1169 - nfreed++; 1170 1158 } 1171 1159 return nfreed; 1172 1160 } ··· 1577 1559 if (txq->q.read_ptr != (ba_resp_scd_ssn & 0xff)) { 1578 1560 /* calculate mac80211 ampdu sw queue to wake */ 1579 1561 int freed = iwl_tx_queue_reclaim(priv, scd_flow, index); 1580 - priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 1562 + iwl_free_tfds_in_queue(priv, sta_id, tid, freed); 1581 1563 1582 1564 if ((iwl_queue_space(&txq->q) > txq->q.low_mark) && 1583 1565 priv->mac80211_registered &&
+1 -1
net/core/dev.c
··· 2761 2761 switch (ret) { 2762 2762 case GRO_NORMAL: 2763 2763 case GRO_HELD: 2764 - skb->protocol = eth_type_trans(skb, napi->dev); 2764 + skb->protocol = eth_type_trans(skb, skb->dev); 2765 2765 2766 2766 if (ret == GRO_HELD) 2767 2767 skb_gro_pull(skb, -ETH_HLEN);