diff options
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 6 | ||||
| -rw-r--r-- | drivers/net/gianfar.c | 24 | ||||
| -rw-r--r-- | drivers/net/gianfar.h | 3 | ||||
| -rw-r--r-- | drivers/net/r6040.c | 8 | ||||
| -rw-r--r-- | include/linux/netdevice.h | 6 | ||||
| -rw-r--r-- | net/8021q/vlan_dev.c | 6 | ||||
| -rw-r--r-- | net/bluetooth/l2cap_core.c | 9 | ||||
| -rw-r--r-- | net/sctp/output.c | 19 |
8 files changed, 47 insertions, 34 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index eafe44a528ac..63c22b0bb5ad 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -1428,9 +1428,9 @@ out: | |||
| 1428 | return features; | 1428 | return features; |
| 1429 | } | 1429 | } |
| 1430 | 1430 | ||
| 1431 | #define BOND_VLAN_FEATURES (NETIF_F_ALL_TX_OFFLOADS | \ | 1431 | #define BOND_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \ |
| 1432 | NETIF_F_SOFT_FEATURES | \ | 1432 | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ |
| 1433 | NETIF_F_LRO) | 1433 | NETIF_F_HIGHDMA | NETIF_F_LRO) |
| 1434 | 1434 | ||
| 1435 | static void bond_compute_features(struct bonding *bond) | 1435 | static void bond_compute_features(struct bonding *bond) |
| 1436 | { | 1436 | { |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 2dfcc8047847..dfa55f94ba7f 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
| @@ -2289,6 +2289,23 @@ static int gfar_set_mac_address(struct net_device *dev) | |||
| 2289 | return 0; | 2289 | return 0; |
| 2290 | } | 2290 | } |
| 2291 | 2291 | ||
| 2292 | /* Check if rx parser should be activated */ | ||
| 2293 | void gfar_check_rx_parser_mode(struct gfar_private *priv) | ||
| 2294 | { | ||
| 2295 | struct gfar __iomem *regs; | ||
| 2296 | u32 tempval; | ||
| 2297 | |||
| 2298 | regs = priv->gfargrp[0].regs; | ||
| 2299 | |||
| 2300 | tempval = gfar_read(®s->rctrl); | ||
| 2301 | /* If parse is no longer required, then disable parser */ | ||
| 2302 | if (tempval & RCTRL_REQ_PARSER) | ||
| 2303 | tempval |= RCTRL_PRSDEP_INIT; | ||
| 2304 | else | ||
| 2305 | tempval &= ~RCTRL_PRSDEP_INIT; | ||
| 2306 | gfar_write(®s->rctrl, tempval); | ||
| 2307 | } | ||
| 2308 | |||
| 2292 | 2309 | ||
| 2293 | /* Enables and disables VLAN insertion/extraction */ | 2310 | /* Enables and disables VLAN insertion/extraction */ |
| 2294 | static void gfar_vlan_rx_register(struct net_device *dev, | 2311 | static void gfar_vlan_rx_register(struct net_device *dev, |
| @@ -2325,12 +2342,9 @@ static void gfar_vlan_rx_register(struct net_device *dev, | |||
| 2325 | /* Disable VLAN tag extraction */ | 2342 | /* Disable VLAN tag extraction */ |
| 2326 | tempval = gfar_read(®s->rctrl); | 2343 | tempval = gfar_read(®s->rctrl); |
| 2327 | tempval &= ~RCTRL_VLEX; | 2344 | tempval &= ~RCTRL_VLEX; |
| 2328 | /* If parse is no longer required, then disable parser */ | ||
| 2329 | if (tempval & RCTRL_REQ_PARSER) | ||
| 2330 | tempval |= RCTRL_PRSDEP_INIT; | ||
| 2331 | else | ||
| 2332 | tempval &= ~RCTRL_PRSDEP_INIT; | ||
| 2333 | gfar_write(®s->rctrl, tempval); | 2345 | gfar_write(®s->rctrl, tempval); |
| 2346 | |||
| 2347 | gfar_check_rx_parser_mode(priv); | ||
| 2334 | } | 2348 | } |
| 2335 | 2349 | ||
| 2336 | gfar_change_mtu(dev, dev->mtu); | 2350 | gfar_change_mtu(dev, dev->mtu); |
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h index ba36dc7a3435..440e69d8beff 100644 --- a/drivers/net/gianfar.h +++ b/drivers/net/gianfar.h | |||
| @@ -274,7 +274,7 @@ extern const char gfar_driver_version[]; | |||
| 274 | #define RCTRL_PROM 0x00000008 | 274 | #define RCTRL_PROM 0x00000008 |
| 275 | #define RCTRL_EMEN 0x00000002 | 275 | #define RCTRL_EMEN 0x00000002 |
| 276 | #define RCTRL_REQ_PARSER (RCTRL_VLEX | RCTRL_IPCSEN | \ | 276 | #define RCTRL_REQ_PARSER (RCTRL_VLEX | RCTRL_IPCSEN | \ |
| 277 | RCTRL_TUCSEN) | 277 | RCTRL_TUCSEN | RCTRL_FILREN) |
| 278 | #define RCTRL_CHECKSUMMING (RCTRL_IPCSEN | RCTRL_TUCSEN | \ | 278 | #define RCTRL_CHECKSUMMING (RCTRL_IPCSEN | RCTRL_TUCSEN | \ |
| 279 | RCTRL_PRSDEP_INIT) | 279 | RCTRL_PRSDEP_INIT) |
| 280 | #define RCTRL_EXTHASH (RCTRL_GHTX) | 280 | #define RCTRL_EXTHASH (RCTRL_GHTX) |
| @@ -1156,6 +1156,7 @@ extern void gfar_configure_coalescing(struct gfar_private *priv, | |||
| 1156 | unsigned long tx_mask, unsigned long rx_mask); | 1156 | unsigned long tx_mask, unsigned long rx_mask); |
| 1157 | void gfar_init_sysfs(struct net_device *dev); | 1157 | void gfar_init_sysfs(struct net_device *dev); |
| 1158 | int gfar_set_features(struct net_device *dev, u32 features); | 1158 | int gfar_set_features(struct net_device *dev, u32 features); |
| 1159 | extern void gfar_check_rx_parser_mode(struct gfar_private *priv); | ||
| 1159 | 1160 | ||
| 1160 | extern const struct ethtool_ops gfar_ethtool_ops; | 1161 | extern const struct ethtool_ops gfar_ethtool_ops; |
| 1161 | 1162 | ||
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 200a363c3bf5..0ffec4608441 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c | |||
| @@ -677,9 +677,11 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) | |||
| 677 | if (status & RX_FIFO_FULL) | 677 | if (status & RX_FIFO_FULL) |
| 678 | dev->stats.rx_fifo_errors++; | 678 | dev->stats.rx_fifo_errors++; |
| 679 | 679 | ||
| 680 | /* Mask off RX interrupt */ | 680 | if (likely(napi_schedule_prep(&lp->napi))) { |
| 681 | misr &= ~RX_INTS; | 681 | /* Mask off RX interrupt */ |
| 682 | napi_schedule(&lp->napi); | 682 | misr &= ~RX_INTS; |
| 683 | __napi_schedule(&lp->napi); | ||
| 684 | } | ||
| 683 | } | 685 | } |
| 684 | 686 | ||
| 685 | /* TX interrupt request */ | 687 | /* TX interrupt request */ |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 54b8b4d7b68f..9e19477991ad 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -1097,12 +1097,6 @@ struct net_device { | |||
| 1097 | #define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \ | 1097 | #define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \ |
| 1098 | NETIF_F_FSO) | 1098 | NETIF_F_FSO) |
| 1099 | 1099 | ||
| 1100 | #define NETIF_F_ALL_TX_OFFLOADS (NETIF_F_ALL_CSUM | NETIF_F_SG | \ | ||
| 1101 | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ | ||
| 1102 | NETIF_F_HIGHDMA | \ | ||
| 1103 | NETIF_F_SCTP_CSUM | \ | ||
| 1104 | NETIF_F_ALL_FCOE) | ||
| 1105 | |||
| 1106 | /* | 1100 | /* |
| 1107 | * If one device supports one of these features, then enable them | 1101 | * If one device supports one of these features, then enable them |
| 1108 | * for all in netdev_increment_features. | 1102 | * for all in netdev_increment_features. |
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 86bff9b1ac47..6e82148edfc8 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
| @@ -528,7 +528,11 @@ static int vlan_dev_init(struct net_device *dev) | |||
| 528 | (1<<__LINK_STATE_DORMANT))) | | 528 | (1<<__LINK_STATE_DORMANT))) | |
| 529 | (1<<__LINK_STATE_PRESENT); | 529 | (1<<__LINK_STATE_PRESENT); |
| 530 | 530 | ||
| 531 | dev->hw_features = NETIF_F_ALL_TX_OFFLOADS; | 531 | dev->hw_features = NETIF_F_ALL_CSUM | NETIF_F_SG | |
| 532 | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | | ||
| 533 | NETIF_F_HIGHDMA | NETIF_F_SCTP_CSUM | | ||
| 534 | NETIF_F_ALL_FCOE; | ||
| 535 | |||
| 532 | dev->features |= real_dev->vlan_features | NETIF_F_LLTX; | 536 | dev->features |= real_dev->vlan_features | NETIF_F_LLTX; |
| 533 | dev->gso_max_size = real_dev->gso_max_size; | 537 | dev->gso_max_size = real_dev->gso_max_size; |
| 534 | 538 | ||
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index ebff14c69078..7705e26e699f 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
| @@ -620,7 +620,8 @@ static void l2cap_conn_start(struct l2cap_conn *conn) | |||
| 620 | struct sock *parent = bt_sk(sk)->parent; | 620 | struct sock *parent = bt_sk(sk)->parent; |
| 621 | rsp.result = cpu_to_le16(L2CAP_CR_PEND); | 621 | rsp.result = cpu_to_le16(L2CAP_CR_PEND); |
| 622 | rsp.status = cpu_to_le16(L2CAP_CS_AUTHOR_PEND); | 622 | rsp.status = cpu_to_le16(L2CAP_CS_AUTHOR_PEND); |
| 623 | parent->sk_data_ready(parent, 0); | 623 | if (parent) |
| 624 | parent->sk_data_ready(parent, 0); | ||
| 624 | 625 | ||
| 625 | } else { | 626 | } else { |
| 626 | sk->sk_state = BT_CONFIG; | 627 | sk->sk_state = BT_CONFIG; |
| @@ -2323,8 +2324,7 @@ static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr | |||
| 2323 | 2324 | ||
| 2324 | sk = chan->sk; | 2325 | sk = chan->sk; |
| 2325 | 2326 | ||
| 2326 | if ((bt_sk(sk)->defer_setup && sk->sk_state != BT_CONNECT2) || | 2327 | if (sk->sk_state != BT_CONFIG && sk->sk_state != BT_CONNECT2) { |
| 2327 | (!bt_sk(sk)->defer_setup && sk->sk_state != BT_CONFIG)) { | ||
| 2328 | struct l2cap_cmd_rej rej; | 2328 | struct l2cap_cmd_rej rej; |
| 2329 | 2329 | ||
| 2330 | rej.reason = cpu_to_le16(0x0002); | 2330 | rej.reason = cpu_to_le16(0x0002); |
| @@ -4010,7 +4010,8 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt) | |||
| 4010 | struct sock *parent = bt_sk(sk)->parent; | 4010 | struct sock *parent = bt_sk(sk)->parent; |
| 4011 | res = L2CAP_CR_PEND; | 4011 | res = L2CAP_CR_PEND; |
| 4012 | stat = L2CAP_CS_AUTHOR_PEND; | 4012 | stat = L2CAP_CS_AUTHOR_PEND; |
| 4013 | parent->sk_data_ready(parent, 0); | 4013 | if (parent) |
| 4014 | parent->sk_data_ready(parent, 0); | ||
| 4014 | } else { | 4015 | } else { |
| 4015 | sk->sk_state = BT_CONFIG; | 4016 | sk->sk_state = BT_CONFIG; |
| 4016 | res = L2CAP_CR_SUCCESS; | 4017 | res = L2CAP_CR_SUCCESS; |
diff --git a/net/sctp/output.c b/net/sctp/output.c index b4f3cf06d8da..08b3cead6503 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c | |||
| @@ -500,23 +500,20 @@ int sctp_packet_transmit(struct sctp_packet *packet) | |||
| 500 | * Note: Adler-32 is no longer applicable, as has been replaced | 500 | * Note: Adler-32 is no longer applicable, as has been replaced |
