···11261126 Default: 51127112711281128max_addresses - INTEGER11291129- Number of maximum addresses per interface. 0 disables limitation.11301130- It is recommended not set too large value (or 0) because it would11311131- be too easy way to crash kernel to allow to create too much of11321132- autoconfigured addresses.11291129+ Maximum number of autoconfigured addresses per interface. Setting11301130+ to zero disables the limitation. It is not recommended to set this11311131+ value too large (or to zero) because it would be an easy way to11321132+ crash the kernel by allowing too many addresses to be created.11331133 Default: 161134113411351135disable_ipv6 - BOOLEAN
···127127 efx_dword_t reg;128128129129 /* Check for a reboot atomically with respect to efx_mcdi_copyout() */130130- rc = efx_mcdi_poll_reboot(efx);130130+ rc = -efx_mcdi_poll_reboot(efx);131131 if (rc)132132 goto out;133133
···451451int iwl_hw_tx_queue_init(struct iwl_priv *priv,452452 struct iwl_tx_queue *txq);453453int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq);454454+void iwl_free_tfds_in_queue(struct iwl_priv *priv,455455+ int sta_id, int tid, int freed);454456int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq,455457 int slots_num, u32 txq_id);456458void iwl_tx_queue_free(struct iwl_priv *priv, int txq_id);
+20-2
drivers/net/wireless/iwlwifi/iwl-tx.c
···120120EXPORT_SYMBOL(iwl_txq_update_write_ptr);121121122122123123+void iwl_free_tfds_in_queue(struct iwl_priv *priv,124124+ int sta_id, int tid, int freed)125125+{126126+ if (priv->stations[sta_id].tid[tid].tfds_in_queue >= freed)127127+ priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;128128+ else {129129+ IWL_ERR(priv, "free more than tfds_in_queue (%u:%d)\n",130130+ priv->stations[sta_id].tid[tid].tfds_in_queue,131131+ freed);132132+ priv->stations[sta_id].tid[tid].tfds_in_queue = 0;133133+ }134134+}135135+EXPORT_SYMBOL(iwl_free_tfds_in_queue);136136+123137/**124138 * iwl_tx_queue_free - Deallocate DMA queue.125139 * @txq: Transmit queue to deallocate.···11451131 struct iwl_queue *q = &txq->q;11461132 struct iwl_tx_info *tx_info;11471133 int nfreed = 0;11341134+ struct ieee80211_hdr *hdr;1148113511491136 if ((index >= q->n_bd) || (iwl_queue_used(q, index) == 0)) {11501137 IWL_ERR(priv, "Read index for DMA queue txq id (%d), index %d, "···1160114511611146 tx_info = &txq->txb[txq->q.read_ptr];11621147 iwl_tx_status(priv, tx_info->skb[0]);11481148+11491149+ hdr = (struct ieee80211_hdr *)tx_info->skb[0]->data;11501150+ if (hdr && ieee80211_is_data_qos(hdr->frame_control))11511151+ nfreed++;11631152 tx_info->skb[0] = NULL;1164115311651154 if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl)11661155 priv->cfg->ops->lib->txq_inval_byte_cnt_tbl(priv, txq);1167115611681157 priv->cfg->ops->lib->txq_free_tfd(priv, txq);11691169- nfreed++;11701158 }11711159 return nfreed;11721160}···15771559 if (txq->q.read_ptr != (ba_resp_scd_ssn & 0xff)) {15781560 /* calculate mac80211 ampdu sw queue to wake */15791561 int freed = iwl_tx_queue_reclaim(priv, scd_flow, index);15801580- priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;15621562+ iwl_free_tfds_in_queue(priv, sta_id, tid, freed);1581156315821564 if ((iwl_queue_space(&txq->q) > txq->q.low_mark) &&15831565 priv->mac80211_registered &&
+2-1
net/core/net-sysfs.c
···410410 const struct iw_statistics *iw;411411 ssize_t ret = -EINVAL;412412413413- rtnl_lock();413413+ if (!rtnl_trylock())414414+ return restart_syscall();414415 if (dev_isalive(dev)) {415416 iw = get_wireless_stats(dev);416417 if (iw)
+6-1
net/ipv4/devinet.c
···13171317{13181318 int *valp = ctl->data;13191319 int val = *valp;13201320+ loff_t pos = *ppos;13201321 int ret = proc_dointvec(ctl, write, buffer, lenp, ppos);1321132213221323 if (write && *valp != val) {13231324 struct net *net = ctl->extra2;1324132513251326 if (valp != &IPV4_DEVCONF_DFLT(net, FORWARDING)) {13261326- if (!rtnl_trylock())13271327+ if (!rtnl_trylock()) {13281328+ /* Restore the original values before restarting */13291329+ *valp = val;13301330+ *ppos = pos;13271331 return restart_syscall();13321332+ }13281333 if (valp == &IPV4_DEVCONF_ALL(net, FORWARDING)) {13291334 inet_forward_change(net);13301335 } else if (*valp) {
+14-2
net/ipv6/addrconf.c
···502502 if (p == &net->ipv6.devconf_dflt->forwarding)503503 return 0;504504505505- if (!rtnl_trylock())505505+ if (!rtnl_trylock()) {506506+ /* Restore the original values before restarting */507507+ *p = old;506508 return restart_syscall();509509+ }507510508511 if (p == &net->ipv6.devconf_all->forwarding) {509512 __s32 newf = net->ipv6.devconf_all->forwarding;···40454042{40464043 int *valp = ctl->data;40474044 int val = *valp;40454045+ loff_t pos = *ppos;40484046 int ret;4049404740504048 ret = proc_dointvec(ctl, write, buffer, lenp, ppos);4051404940524050 if (write)40534051 ret = addrconf_fixup_forwarding(ctl, valp, val);40524052+ if (ret)40534053+ *ppos = pos;40544054 return ret;40554055}40564056···40954089 if (p == &net->ipv6.devconf_dflt->disable_ipv6)40964090 return 0;4097409140984098- if (!rtnl_trylock())40924092+ if (!rtnl_trylock()) {40934093+ /* Restore the original values before restarting */40944094+ *p = old;40994095 return restart_syscall();40964096+ }4100409741014098 if (p == &net->ipv6.devconf_all->disable_ipv6) {41024099 __s32 newf = net->ipv6.devconf_all->disable_ipv6;···41184109{41194110 int *valp = ctl->data;41204111 int val = *valp;41124112+ loff_t pos = *ppos;41214113 int ret;4122411441234115 ret = proc_dointvec(ctl, write, buffer, lenp, ppos);4124411641254117 if (write)41264118 ret = addrconf_disable_ipv6(ctl, valp, val);41194119+ if (ret)41204120+ *ppos = pos;41274121 return ret;41284122}41294123