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

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

Conflicts:
drivers/net/vmxnet3/vmxnet3_ethtool.c
net/core/dev.c

+173 -94
+3 -3
drivers/net/Makefile
··· 144 144 obj-$(CONFIG_SB1250_MAC) += sb1250-mac.o 145 145 obj-$(CONFIG_B44) += b44.o 146 146 obj-$(CONFIG_FORCEDETH) += forcedeth.o 147 - obj-$(CONFIG_NE_H8300) += ne-h8300.o 8390.o 147 + obj-$(CONFIG_NE_H8300) += ne-h8300.o 148 148 obj-$(CONFIG_AX88796) += ax88796.o 149 149 obj-$(CONFIG_BCM63XX_ENET) += bcm63xx_enet.o 150 150 obj-$(CONFIG_FTMAC100) += ftmac100.o ··· 219 219 obj-$(CONFIG_LP486E) += lp486e.o 220 220 221 221 obj-$(CONFIG_ETH16I) += eth16i.o 222 - obj-$(CONFIG_ZORRO8390) += zorro8390.o 8390.o 222 + obj-$(CONFIG_ZORRO8390) += zorro8390.o 223 223 obj-$(CONFIG_HPLANCE) += hplance.o 7990.o 224 224 obj-$(CONFIG_MVME147_NET) += mvme147.o 7990.o 225 225 obj-$(CONFIG_EQUALIZER) += eql.o ··· 231 231 obj-$(CONFIG_DECLANCE) += declance.o 232 232 obj-$(CONFIG_ATARILANCE) += atarilance.o 233 233 obj-$(CONFIG_A2065) += a2065.o 234 - obj-$(CONFIG_HYDRA) += hydra.o 8390.o 234 + obj-$(CONFIG_HYDRA) += hydra.o 235 235 obj-$(CONFIG_ARIADNE) += ariadne.o 236 236 obj-$(CONFIG_CS89x0) += cs89x0.o 237 237 obj-$(CONFIG_MACSONIC) += macsonic.o
+5 -5
drivers/net/bonding/bond_3ad.h
··· 39 39 40 40 typedef struct mac_addr { 41 41 u8 mac_addr_value[ETH_ALEN]; 42 - } mac_addr_t; 42 + } __packed mac_addr_t; 43 43 44 44 enum { 45 45 BOND_AD_STABLE = 0, ··· 134 134 u8 tlv_type_terminator; // = terminator 135 135 u8 terminator_length; // = 0 136 136 u8 reserved_50[50]; // = 0 137 - } lacpdu_t; 137 + } __packed lacpdu_t; 138 138 139 139 typedef struct lacpdu_header { 140 140 struct ethhdr hdr; 141 141 struct lacpdu lacpdu; 142 - } lacpdu_header_t; 142 + } __packed lacpdu_header_t; 143 143 144 144 // Marker Protocol Data Unit(PDU) structure(43.5.3.2 in the 802.3ad standard) 145 145 typedef struct bond_marker { ··· 155 155 u8 tlv_type_terminator; // = 0x00 156 156 u8 terminator_length; // = 0x00 157 157 u8 reserved_90[90]; // = 0 158 - } bond_marker_t; 158 + } __packed bond_marker_t; 159 159 160 160 typedef struct bond_marker_header { 161 161 struct ethhdr hdr; 162 162 struct bond_marker marker; 163 - } bond_marker_header_t; 163 + } __packed bond_marker_header_t; 164 164 165 165 #pragma pack() 166 166
+3 -3
drivers/net/ehea/ehea_main.c
··· 2688 2688 netif_start_queue(dev); 2689 2689 } 2690 2690 2691 - init_waitqueue_head(&port->swqe_avail_wq); 2692 - init_waitqueue_head(&port->restart_wq); 2693 - 2694 2691 mutex_unlock(&port->port_lock); 2695 2692 2696 2693 return ret; ··· 3274 3277 dev->features |= NETIF_F_LRO; 3275 3278 3276 3279 INIT_WORK(&port->reset_task, ehea_reset_port); 3280 + 3281 + init_waitqueue_head(&port->swqe_avail_wq); 3282 + init_waitqueue_head(&port->restart_wq); 3277 3283 3278 3284 ret = register_netdev(dev); 3279 3285 if (ret) {
+7 -7
drivers/net/hydra.c
··· 98 98 .ndo_open = hydra_open, 99 99 .ndo_stop = hydra_close, 100 100 101 - .ndo_start_xmit = ei_start_xmit, 102 - .ndo_tx_timeout = ei_tx_timeout, 103 - .ndo_get_stats = ei_get_stats, 104 - .ndo_set_multicast_list = ei_set_multicast_list, 101 + .ndo_start_xmit = __ei_start_xmit, 102 + .ndo_tx_timeout = __ei_tx_timeout, 103 + .ndo_get_stats = __ei_get_stats, 104 + .ndo_set_multicast_list = __ei_set_multicast_list, 105 105 .ndo_validate_addr = eth_validate_addr, 106 - .ndo_set_mac_address = eth_mac_addr, 106 + .ndo_set_mac_address = eth_mac_addr, 107 107 .ndo_change_mtu = eth_change_mtu, 108 108 #ifdef CONFIG_NET_POLL_CONTROLLER 109 - .ndo_poll_controller = ei_poll, 109 + .ndo_poll_controller = __ei_poll, 110 110 #endif 111 111 }; 112 112 ··· 125 125 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 126 126 }; 127 127 128 - dev = alloc_ei_netdev(); 128 + dev = ____alloc_ei_netdev(0); 129 129 if (!dev) 130 130 return -ENOMEM; 131 131
+8 -8
drivers/net/ne-h8300.c
··· 167 167 #ifndef MODULE 168 168 struct net_device * __init ne_probe(int unit) 169 169 { 170 - struct net_device *dev = alloc_ei_netdev(); 170 + struct net_device *dev = ____alloc_ei_netdev(0); 171 171 int err; 172 172 173 173 if (!dev) ··· 197 197 .ndo_open = ne_open, 198 198 .ndo_stop = ne_close, 199 199 200 - .ndo_start_xmit = ei_start_xmit, 201 - .ndo_tx_timeout = ei_tx_timeout, 202 - .ndo_get_stats = ei_get_stats, 203 - .ndo_set_multicast_list = ei_set_multicast_list, 200 + .ndo_start_xmit = __ei_start_xmit, 201 + .ndo_tx_timeout = __ei_tx_timeout, 202 + .ndo_get_stats = __ei_get_stats, 203 + .ndo_set_multicast_list = __ei_set_multicast_list, 204 204 .ndo_validate_addr = eth_validate_addr, 205 - .ndo_set_mac_address = eth_mac_addr, 205 + .ndo_set_mac_address = eth_mac_addr, 206 206 .ndo_change_mtu = eth_change_mtu, 207 207 #ifdef CONFIG_NET_POLL_CONTROLLER 208 - .ndo_poll_controller = ei_poll, 208 + .ndo_poll_controller = __ei_poll, 209 209 #endif 210 210 }; 211 211 ··· 637 637 int err; 638 638 639 639 for (this_dev = 0; this_dev < MAX_NE_CARDS; this_dev++) { 640 - struct net_device *dev = alloc_ei_netdev(); 640 + struct net_device *dev = ____alloc_ei_netdev(0); 641 641 if (!dev) 642 642 break; 643 643 if (io[this_dev]) {
+30 -19
drivers/net/sfc/mcdi.c
··· 50 50 return &nic_data->mcdi; 51 51 } 52 52 53 + static inline void 54 + efx_mcdi_readd(struct efx_nic *efx, efx_dword_t *value, unsigned reg) 55 + { 56 + struct siena_nic_data *nic_data = efx->nic_data; 57 + value->u32[0] = (__force __le32)__raw_readl(nic_data->mcdi_smem + reg); 58 + } 59 + 60 + static inline void 61 + efx_mcdi_writed(struct efx_nic *efx, const efx_dword_t *value, unsigned reg) 62 + { 63 + struct siena_nic_data *nic_data = efx->nic_data; 64 + __raw_writel((__force u32)value->u32[0], nic_data->mcdi_smem + reg); 65 + } 66 + 53 67 void efx_mcdi_init(struct efx_nic *efx) 54 68 { 55 69 struct efx_mcdi_iface *mcdi; ··· 84 70 const u8 *inbuf, size_t inlen) 85 71 { 86 72 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); 87 - unsigned pdu = FR_CZ_MC_TREG_SMEM + MCDI_PDU(efx); 88 - unsigned doorbell = FR_CZ_MC_TREG_SMEM + MCDI_DOORBELL(efx); 73 + unsigned pdu = MCDI_PDU(efx); 74 + unsigned doorbell = MCDI_DOORBELL(efx); 89 75 unsigned int i; 90 76 efx_dword_t hdr; 91 77 u32 xflags, seqno; ··· 106 92 MCDI_HEADER_SEQ, seqno, 107 93 MCDI_HEADER_XFLAGS, xflags); 108 94 109 - efx_writed(efx, &hdr, pdu); 95 + efx_mcdi_writed(efx, &hdr, pdu); 110 96 111 - for (i = 0; i < inlen; i += 4) { 112 - _efx_writed(efx, *((__le32 *)(inbuf + i)), pdu + 4 + i); 113 - /* use wmb() within loop to inhibit write combining */ 114 - wmb(); 115 - } 97 + for (i = 0; i < inlen; i += 4) 98 + efx_mcdi_writed(efx, (const efx_dword_t *)(inbuf + i), 99 + pdu + 4 + i); 116 100 117 101 /* ring the doorbell with a distinctive value */ 118 - _efx_writed(efx, (__force __le32) 0x45789abc, doorbell); 119 - wmb(); 102 + EFX_POPULATE_DWORD_1(hdr, EFX_DWORD_0, 0x45789abc); 103 + efx_mcdi_writed(efx, &hdr, doorbell); 120 104 } 121 105 122 106 static void efx_mcdi_copyout(struct efx_nic *efx, u8 *outbuf, size_t outlen) 123 107 { 124 108 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); 125 - unsigned int pdu = FR_CZ_MC_TREG_SMEM + MCDI_PDU(efx); 109 + unsigned int pdu = MCDI_PDU(efx); 126 110 int i; 127 111 128 112 BUG_ON(atomic_read(&mcdi->state) == MCDI_STATE_QUIESCENT); 129 113 BUG_ON(outlen & 3 || outlen >= 0x100); 130 114 131 115 for (i = 0; i < outlen; i += 4) 132 - *((__le32 *)(outbuf + i)) = _efx_readd(efx, pdu + 4 + i); 116 + efx_mcdi_readd(efx, (efx_dword_t *)(outbuf + i), pdu + 4 + i); 133 117 } 134 118 135 119 static int efx_mcdi_poll(struct efx_nic *efx) ··· 135 123 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); 136 124 unsigned int time, finish; 137 125 unsigned int respseq, respcmd, error; 138 - unsigned int pdu = FR_CZ_MC_TREG_SMEM + MCDI_PDU(efx); 126 + unsigned int pdu = MCDI_PDU(efx); 139 127 unsigned int rc, spins; 140 128 efx_dword_t reg; 141 129 ··· 161 149 162 150 time = get_seconds(); 163 151 164 - rmb(); 165 - efx_readd(efx, &reg, pdu); 152 + efx_mcdi_readd(efx, &reg, pdu); 166 153 167 154 /* All 1's indicates that shared memory is in reset (and is 168 155 * not a valid header). Wait for it to come out reset before ··· 188 177 respseq, mcdi->seqno); 189 178 rc = EIO; 190 179 } else if (error) { 191 - efx_readd(efx, &reg, pdu + 4); 180 + efx_mcdi_readd(efx, &reg, pdu + 4); 192 181 switch (EFX_DWORD_FIELD(reg, EFX_DWORD_0)) { 193 182 #define TRANSLATE_ERROR(name) \ 194 183 case MC_CMD_ERR_ ## name: \ ··· 222 211 /* Test and clear MC-rebooted flag for this port/function */ 223 212 int efx_mcdi_poll_reboot(struct efx_nic *efx) 224 213 { 225 - unsigned int addr = FR_CZ_MC_TREG_SMEM + MCDI_REBOOT_FLAG(efx); 214 + unsigned int addr = MCDI_REBOOT_FLAG(efx); 226 215 efx_dword_t reg; 227 216 uint32_t value; 228 217 229 218 if (efx_nic_rev(efx) < EFX_REV_SIENA_A0) 230 219 return false; 231 220 232 - efx_readd(efx, &reg, addr); 221 + efx_mcdi_readd(efx, &reg, addr); 233 222 value = EFX_DWORD_FIELD(reg, EFX_DWORD_0); 234 223 235 224 if (value == 0) 236 225 return 0; 237 226 238 227 EFX_ZERO_DWORD(reg); 239 - efx_writed(efx, &reg, addr); 228 + efx_mcdi_writed(efx, &reg, addr); 240 229 241 230 if (value == MC_STATUS_DWORD_ASSERT) 242 231 return -EINTR;
+7
drivers/net/sfc/nic.c
··· 1935 1935 1936 1936 size = min_t(size_t, table->step, 16); 1937 1937 1938 + if (table->offset >= efx->type->mem_map_size) { 1939 + /* No longer mapped; return dummy data */ 1940 + memcpy(buf, "\xde\xc0\xad\xde", 4); 1941 + buf += table->rows * size; 1942 + continue; 1943 + } 1944 + 1938 1945 for (i = 0; i < table->rows; i++) { 1939 1946 switch (table->step) { 1940 1947 case 4: /* 32-bit register or SRAM */
+2
drivers/net/sfc/nic.h
··· 143 143 /** 144 144 * struct siena_nic_data - Siena NIC state 145 145 * @mcdi: Management-Controller-to-Driver Interface 146 + * @mcdi_smem: MCDI shared memory mapping. The mapping is always uncacheable. 146 147 * @wol_filter_id: Wake-on-LAN packet filter id 147 148 */ 148 149 struct siena_nic_data { 149 150 struct efx_mcdi_iface mcdi; 151 + void __iomem *mcdi_smem; 150 152 int wol_filter_id; 151 153 }; 152 154
+21 -4
drivers/net/sfc/siena.c
··· 220 220 efx_reado(efx, &reg, FR_AZ_CS_DEBUG); 221 221 efx->net_dev->dev_id = EFX_OWORD_FIELD(reg, FRF_CZ_CS_PORT_NUM) - 1; 222 222 223 + /* Initialise MCDI */ 224 + nic_data->mcdi_smem = ioremap_nocache(efx->membase_phys + 225 + FR_CZ_MC_TREG_SMEM, 226 + FR_CZ_MC_TREG_SMEM_STEP * 227 + FR_CZ_MC_TREG_SMEM_ROWS); 228 + if (!nic_data->mcdi_smem) { 229 + netif_err(efx, probe, efx->net_dev, 230 + "could not map MCDI at %llx+%x\n", 231 + (unsigned long long)efx->membase_phys + 232 + FR_CZ_MC_TREG_SMEM, 233 + FR_CZ_MC_TREG_SMEM_STEP * FR_CZ_MC_TREG_SMEM_ROWS); 234 + rc = -ENOMEM; 235 + goto fail1; 236 + } 223 237 efx_mcdi_init(efx); 224 238 225 239 /* Recover from a failed assertion before probing */ 226 240 rc = efx_mcdi_handle_assertion(efx); 227 241 if (rc) 228 - goto fail1; 242 + goto fail2; 229 243 230 244 /* Let the BMC know that the driver is now in charge of link and 231 245 * filter settings. We must do this before we reset the NIC */ ··· 294 280 fail3: 295 281 efx_mcdi_drv_attach(efx, false, NULL); 296 282 fail2: 283 + iounmap(nic_data->mcdi_smem); 297 284 fail1: 298 285 kfree(efx->nic_data); 299 286 return rc; ··· 374 359 375 360 static void siena_remove_nic(struct efx_nic *efx) 376 361 { 362 + struct siena_nic_data *nic_data = efx->nic_data; 363 + 377 364 efx_nic_free_buffer(efx, &efx->irq_status); 378 365 379 366 siena_reset_hw(efx, RESET_TYPE_ALL); ··· 385 368 efx_mcdi_drv_attach(efx, false, NULL); 386 369 387 370 /* Tear down the private nic state */ 388 - kfree(efx->nic_data); 371 + iounmap(nic_data->mcdi_smem); 372 + kfree(nic_data); 389 373 efx->nic_data = NULL; 390 374 } 391 375 ··· 624 606 .default_mac_ops = &efx_mcdi_mac_operations, 625 607 626 608 .revision = EFX_REV_SIENA_A0, 627 - .mem_map_size = (FR_CZ_MC_TREG_SMEM + 628 - FR_CZ_MC_TREG_SMEM_STEP * FR_CZ_MC_TREG_SMEM_ROWS), 609 + .mem_map_size = FR_CZ_MC_TREG_SMEM, /* MC_TREG_SMEM mapped separately */ 629 610 .txd_ptr_tbl_base = FR_BZ_TX_DESC_PTR_TBL, 630 611 .rxd_ptr_tbl_base = FR_BZ_RX_DESC_PTR_TBL, 631 612 .buf_tbl_base = FR_BZ_BUF_FULL_TBL,
+1
drivers/net/vmxnet3/vmxnet3_ethtool.c
··· 276 276 adapter->shared->devRead.misc.uptFeatures &= 277 277 ~UPT1_F_RXCSUM; 278 278 279 + /* update harware LRO capability accordingly */ 279 280 if (features & NETIF_F_LRO) 280 281 adapter->shared->devRead.misc.uptFeatures |= 281 282 UPT1_F_LRO;
+8
drivers/net/wireless/ath/ath9k/main.c
··· 2265 2265 static void ath9k_flush(struct ieee80211_hw *hw, bool drop) 2266 2266 { 2267 2267 struct ath_softc *sc = hw->priv; 2268 + struct ath_hw *ah = sc->sc_ah; 2269 + struct ath_common *common = ath9k_hw_common(ah); 2268 2270 int timeout = 200; /* ms */ 2269 2271 int i, j; 2270 2272 bool drain_txq; 2271 2273 2272 2274 mutex_lock(&sc->mutex); 2273 2275 cancel_delayed_work_sync(&sc->tx_complete_work); 2276 + 2277 + if (sc->sc_flags & SC_OP_INVALID) { 2278 + ath_dbg(common, ATH_DBG_ANY, "Device not present\n"); 2279 + mutex_unlock(&sc->mutex); 2280 + return; 2281 + } 2274 2282 2275 2283 if (drop) 2276 2284 timeout = 1;
+7
drivers/net/wireless/iwlegacy/iwl-core.c
··· 2151 2151 goto set_ch_out; 2152 2152 } 2153 2153 2154 + if (priv->iw_mode == NL80211_IFTYPE_ADHOC && 2155 + !iwl_legacy_is_channel_ibss(ch_info)) { 2156 + IWL_DEBUG_MAC80211(priv, "leave - not IBSS channel\n"); 2157 + ret = -EINVAL; 2158 + goto set_ch_out; 2159 + } 2160 + 2154 2161 spin_lock_irqsave(&priv->lock, flags); 2155 2162 2156 2163 for_each_context(priv, ctx) {
+6
drivers/net/wireless/iwlegacy/iwl-dev.h
··· 1411 1411 return (!(ch->flags & EEPROM_CHANNEL_ACTIVE)) ? 1 : 0; 1412 1412 } 1413 1413 1414 + static inline int 1415 + iwl_legacy_is_channel_ibss(const struct iwl_channel_info *ch) 1416 + { 1417 + return (ch->flags & EEPROM_CHANNEL_IBSS) ? 1 : 0; 1418 + } 1419 + 1414 1420 static inline void 1415 1421 __iwl_legacy_free_pages(struct iwl_priv *priv, struct page *page) 1416 1422 {
+4 -2
drivers/net/wireless/libertas/cmd.c
··· 1354 1354 cpu_to_le16(PS_MODE_ACTION_EXIT_PS)) { 1355 1355 lbs_deb_host( 1356 1356 "EXEC_NEXT_CMD: ignore ENTER_PS cmd\n"); 1357 - list_del(&cmdnode->list); 1358 1357 spin_lock_irqsave(&priv->driver_lock, flags); 1358 + list_del(&cmdnode->list); 1359 1359 lbs_complete_command(priv, cmdnode, 0); 1360 1360 spin_unlock_irqrestore(&priv->driver_lock, flags); 1361 1361 ··· 1367 1367 (priv->psstate == PS_STATE_PRE_SLEEP)) { 1368 1368 lbs_deb_host( 1369 1369 "EXEC_NEXT_CMD: ignore EXIT_PS cmd in sleep\n"); 1370 - list_del(&cmdnode->list); 1371 1370 spin_lock_irqsave(&priv->driver_lock, flags); 1371 + list_del(&cmdnode->list); 1372 1372 lbs_complete_command(priv, cmdnode, 0); 1373 1373 spin_unlock_irqrestore(&priv->driver_lock, flags); 1374 1374 priv->needtowakeup = 1; ··· 1381 1381 "EXEC_NEXT_CMD: sending EXIT_PS\n"); 1382 1382 } 1383 1383 } 1384 + spin_lock_irqsave(&priv->driver_lock, flags); 1384 1385 list_del(&cmdnode->list); 1386 + spin_unlock_irqrestore(&priv->driver_lock, flags); 1385 1387 lbs_deb_host("EXEC_NEXT_CMD: sending command 0x%04x\n", 1386 1388 le16_to_cpu(cmd->command)); 1387 1389 lbs_submit_command(priv, cmdnode);
+6 -6
drivers/net/zorro8390.c
··· 126 126 127 127 board = z->resource.start; 128 128 ioaddr = board+cards[i].offset; 129 - dev = alloc_ei_netdev(); 129 + dev = ____alloc_ei_netdev(0); 130 130 if (!dev) 131 131 return -ENOMEM; 132 132 if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, DRV_NAME)) { ··· 146 146 static const struct net_device_ops zorro8390_netdev_ops = { 147 147 .ndo_open = zorro8390_open, 148 148 .ndo_stop = zorro8390_close, 149 - .ndo_start_xmit = ei_start_xmit, 150 - .ndo_tx_timeout = ei_tx_timeout, 151 - .ndo_get_stats = ei_get_stats, 152 - .ndo_set_multicast_list = ei_set_multicast_list, 149 + .ndo_start_xmit = __ei_start_xmit, 150 + .ndo_tx_timeout = __ei_tx_timeout, 151 + .ndo_get_stats = __ei_get_stats, 152 + .ndo_set_multicast_list = __ei_set_multicast_list, 153 153 .ndo_validate_addr = eth_validate_addr, 154 154 .ndo_set_mac_address = eth_mac_addr, 155 155 .ndo_change_mtu = eth_change_mtu, 156 156 #ifdef CONFIG_NET_POLL_CONTROLLER 157 - .ndo_poll_controller = ei_poll, 157 + .ndo_poll_controller = __ei_poll, 158 158 #endif 159 159 }; 160 160
+13 -3
include/net/inet_ecn.h
··· 38 38 return outer; 39 39 } 40 40 41 - #define INET_ECN_xmit(sk) do { inet_sk(sk)->tos |= INET_ECN_ECT_0; } while (0) 42 - #define INET_ECN_dontxmit(sk) \ 43 - do { inet_sk(sk)->tos &= ~INET_ECN_MASK; } while (0) 41 + static inline void INET_ECN_xmit(struct sock *sk) 42 + { 43 + inet_sk(sk)->tos |= INET_ECN_ECT_0; 44 + if (inet6_sk(sk) != NULL) 45 + inet6_sk(sk)->tclass |= INET_ECN_ECT_0; 46 + } 47 + 48 + static inline void INET_ECN_dontxmit(struct sock *sk) 49 + { 50 + inet_sk(sk)->tos &= ~INET_ECN_MASK; 51 + if (inet6_sk(sk) != NULL) 52 + inet6_sk(sk)->tclass &= ~INET_ECN_MASK; 53 + } 44 54 45 55 #define IP6_ECN_flow_init(label) do { \ 46 56 (label) &= ~htonl(INET_ECN_MASK << 20); \
+4 -4
include/net/llc_pdu.h
··· 199 199 u8 ssap; 200 200 u8 ctrl_1; 201 201 u8 ctrl_2; 202 - }; 202 + } __packed; 203 203 204 204 static inline struct llc_pdu_sn *llc_pdu_sn_hdr(struct sk_buff *skb) 205 205 { ··· 211 211 u8 dsap; 212 212 u8 ssap; 213 213 u8 ctrl_1; 214 - }; 214 + } __packed; 215 215 216 216 static inline struct llc_pdu_un *llc_pdu_un_hdr(struct sk_buff *skb) 217 217 { ··· 359 359 u8 fmt_id; /* always 0x81 for LLC */ 360 360 u8 type; /* different if NULL/non-NULL LSAP */ 361 361 u8 rw; /* sender receive window */ 362 - }; 362 + } __packed; 363 363 364 364 /** 365 365 * llc_pdu_init_as_xid_cmd - sets bytes 3, 4 & 5 of LLC header as XID ··· 415 415 u8 curr_ssv; /* current send state variable val */ 416 416 u8 curr_rsv; /* current receive state variable */ 417 417 u8 ind_bits; /* indicator bits set with macro */ 418 - }; 418 + } __packed; 419 419 420 420 extern void llc_pdu_set_cmd_rsp(struct sk_buff *skb, u8 type); 421 421 extern void llc_pdu_set_pf_bit(struct sk_buff *skb, u8 bit_value);
+1 -1
net/bridge/br_netfilter.c
··· 737 737 nf_bridge->mask |= BRNF_PKT_TYPE; 738 738 } 739 739 740 - if (br_parse_ip_options(skb)) 740 + if (pf == PF_INET && br_parse_ip_options(skb)) 741 741 return NF_DROP; 742 742 743 743 /* The physdev module checks on this */
+10 -16
net/core/dev.c
··· 1007 1007 } 1008 1008 1009 1009 write_lock_bh(&dev_base_lock); 1010 - hlist_del(&dev->name_hlist); 1010 + hlist_del_rcu(&dev->name_hlist); 1011 1011 write_unlock_bh(&dev_base_lock); 1012 1012 1013 1013 synchronize_rcu(); ··· 5196 5196 /* Fix illegal checksum combinations */ 5197 5197 if ((features & NETIF_F_HW_CSUM) && 5198 5198 (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { 5199 - netdev_info(dev, "mixed HW and IP checksum settings.\n"); 5199 + netdev_warn(dev, "mixed HW and IP checksum settings.\n"); 5200 5200 features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM); 5201 5201 } 5202 5202 5203 5203 if ((features & NETIF_F_NO_CSUM) && 5204 5204 (features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { 5205 - netdev_info(dev, "mixed no checksumming and other settings.\n"); 5205 + netdev_warn(dev, "mixed no checksumming and other settings.\n"); 5206 5206 features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM); 5207 5207 } 5208 5208 5209 5209 /* Fix illegal SG+CSUM combinations. */ 5210 5210 if ((features & NETIF_F_SG) && 5211 5211 !(features & NETIF_F_ALL_CSUM)) { 5212 - netdev_info(dev, 5213 - "Dropping NETIF_F_SG since no checksum feature.\n"); 5212 + netdev_dbg(dev, 5213 + "Dropping NETIF_F_SG since no checksum feature.\n"); 5214 5214 features &= ~NETIF_F_SG; 5215 5215 } 5216 5216 5217 5217 /* TSO requires that SG is present as well. */ 5218 5218 if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) { 5219 - netdev_info(dev, "Dropping TSO features since no SG feature.\n"); 5219 + netdev_dbg(dev, "Dropping TSO features since no SG feature.\n"); 5220 5220 features &= ~NETIF_F_ALL_TSO; 5221 5221 } 5222 5222 ··· 5226 5226 5227 5227 /* Software GSO depends on SG. */ 5228 5228 if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) { 5229 - netdev_info(dev, "Dropping NETIF_F_GSO since no SG feature.\n"); 5229 + netdev_dbg(dev, "Dropping NETIF_F_GSO since no SG feature.\n"); 5230 5230 features &= ~NETIF_F_GSO; 5231 5231 } 5232 5232 ··· 5236 5236 if (!((features & NETIF_F_GEN_CSUM) || 5237 5237 (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM)) 5238 5238 == (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { 5239 - netdev_info(dev, 5239 + netdev_dbg(dev, 5240 5240 "Dropping NETIF_F_UFO since no checksum offload features.\n"); 5241 5241 features &= ~NETIF_F_UFO; 5242 5242 } 5243 5243 5244 5244 if (!(features & NETIF_F_SG)) { 5245 - netdev_info(dev, 5245 + netdev_dbg(dev, 5246 5246 "Dropping NETIF_F_UFO since no NETIF_F_SG feature.\n"); 5247 5247 features &= ~NETIF_F_UFO; 5248 5248 } ··· 5270 5270 if (dev->features == features) 5271 5271 return 0; 5272 5272 5273 - netdev_info(dev, "Features changed: 0x%08x -> 0x%08x\n", 5273 + netdev_dbg(dev, "Features changed: 0x%08x -> 0x%08x\n", 5274 5274 dev->features, features); 5275 5275 5276 5276 if (dev->netdev_ops->ndo_set_features) ··· 5461 5461 dev->hw_features |= NETIF_F_SOFT_FEATURES; 5462 5462 dev->features |= NETIF_F_SOFT_FEATURES; 5463 5463 dev->wanted_features = dev->features & dev->hw_features; 5464 - 5465 - /* Avoid warning from netdev_fix_features() for GSO without SG */ 5466 - if (!(dev->wanted_features & NETIF_F_SG)) { 5467 - dev->wanted_features &= ~NETIF_F_GSO; 5468 - dev->features &= ~NETIF_F_GSO; 5469 - } 5470 5464 5471 5465 /* Turn on no cache copy if HW is doing checksum */ 5472 5466 dev->hw_features |= NETIF_F_NOCACHE_COPY;
+1 -1
net/core/ethtool.c
··· 332 332 /* NETIF_F_IP_CSUM */ "tx-checksum-ipv4", 333 333 /* NETIF_F_NO_CSUM */ "tx-checksum-unneeded", 334 334 /* NETIF_F_HW_CSUM */ "tx-checksum-ip-generic", 335 - /* NETIF_F_IPV6_CSUM */ "tx_checksum-ipv6", 335 + /* NETIF_F_IPV6_CSUM */ "tx-checksum-ipv6", 336 336 /* NETIF_F_HIGHDMA */ "highdma", 337 337 /* NETIF_F_FRAGLIST */ "tx-scatter-gather-fraglist", 338 338 /* NETIF_F_HW_VLAN_TX */ "tx-vlan-hw-insert",
+4
net/mac80211/tx.c
··· 237 237 &local->dynamic_ps_disable_work); 238 238 } 239 239 240 + /* Don't restart the timer if we're not disassociated */ 241 + if (!ifmgd->associated) 242 + return TX_CONTINUE; 243 + 240 244 mod_timer(&local->dynamic_ps_timer, jiffies + 241 245 msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout)); 242 246
+1 -1
net/netfilter/ipvs/ip_vs_app.c
··· 572 572 .open = ip_vs_app_open, 573 573 .read = seq_read, 574 574 .llseek = seq_lseek, 575 - .release = seq_release, 575 + .release = seq_release_net, 576 576 }; 577 577 #endif 578 578
+2 -2
net/netfilter/ipvs/ip_vs_conn.c
··· 1046 1046 .open = ip_vs_conn_open, 1047 1047 .read = seq_read, 1048 1048 .llseek = seq_lseek, 1049 - .release = seq_release, 1049 + .release = seq_release_net, 1050 1050 }; 1051 1051 1052 1052 static const char *ip_vs_origin_name(unsigned flags) ··· 1114 1114 .open = ip_vs_conn_sync_open, 1115 1115 .read = seq_read, 1116 1116 .llseek = seq_lseek, 1117 - .release = seq_release, 1117 + .release = seq_release_net, 1118 1118 }; 1119 1119 1120 1120 #endif
+3 -3
net/netfilter/ipvs/ip_vs_ctl.c
··· 2066 2066 .open = ip_vs_info_open, 2067 2067 .read = seq_read, 2068 2068 .llseek = seq_lseek, 2069 - .release = seq_release_private, 2069 + .release = seq_release_net, 2070 2070 }; 2071 2071 2072 2072 static int ip_vs_stats_show(struct seq_file *seq, void *v) ··· 2106 2106 .open = ip_vs_stats_seq_open, 2107 2107 .read = seq_read, 2108 2108 .llseek = seq_lseek, 2109 - .release = single_release, 2109 + .release = single_release_net, 2110 2110 }; 2111 2111 2112 2112 static int ip_vs_stats_percpu_show(struct seq_file *seq, void *v) ··· 2175 2175 .open = ip_vs_stats_percpu_seq_open, 2176 2176 .read = seq_read, 2177 2177 .llseek = seq_lseek, 2178 - .release = single_release, 2178 + .release = single_release_net, 2179 2179 }; 2180 2180 #endif 2181 2181
+12 -4
net/netfilter/nf_conntrack_sip.c
··· 1419 1419 const char *dptr, *end; 1420 1420 s16 diff, tdiff = 0; 1421 1421 int ret = NF_ACCEPT; 1422 + bool term; 1422 1423 typeof(nf_nat_sip_seq_adjust_hook) nf_nat_sip_seq_adjust; 1423 1424 1424 1425 if (ctinfo != IP_CT_ESTABLISHED && ··· 1454 1453 if (dptr + matchoff == end) 1455 1454 break; 1456 1455 1457 - if (end + strlen("\r\n\r\n") > dptr + datalen) 1458 - break; 1459 - if (end[0] != '\r' || end[1] != '\n' || 1460 - end[2] != '\r' || end[3] != '\n') 1456 + term = false; 1457 + for (; end + strlen("\r\n\r\n") <= dptr + datalen; end++) { 1458 + if (end[0] == '\r' && end[1] == '\n' && 1459 + end[2] == '\r' && end[3] == '\n') { 1460 + term = true; 1461 + break; 1462 + } 1463 + } 1464 + if (!term) 1461 1465 break; 1462 1466 end += strlen("\r\n\r\n") + clen; 1463 1467 1464 1468 msglen = origlen = end - dptr; 1469 + if (msglen > datalen) 1470 + return NF_DROP; 1465 1471 1466 1472 ret = process_sip_msg(skb, ct, dataoff, &dptr, &msglen); 1467 1473 if (ret != NF_ACCEPT)
+4 -2
net/socket.c
··· 2232 2232 */ 2233 2233 if (MSG_CMSG_COMPAT & flags) { 2234 2234 err = __sys_recvmsg(sock, (struct msghdr __user *)compat_entry, 2235 - &msg_sys, flags, datagrams); 2235 + &msg_sys, flags & ~MSG_WAITFORONE, 2236 + datagrams); 2236 2237 if (err < 0) 2237 2238 break; 2238 2239 err = __put_user(err, &compat_entry->msg_len); 2239 2240 ++compat_entry; 2240 2241 } else { 2241 2242 err = __sys_recvmsg(sock, (struct msghdr __user *)entry, 2242 - &msg_sys, flags, datagrams); 2243 + &msg_sys, flags & ~MSG_WAITFORONE, 2244 + datagrams); 2243 2245 if (err < 0) 2244 2246 break; 2245 2247 err = put_user(err, &entry->msg_len);