Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net
authorDavid S. Miller <davem@davemloft.net>
Sat, 12 Apr 2014 20:36:44 +0000 (16:36 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Apr 2014 20:36:44 +0000 (16:36 -0400)
Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates

This series contains updates to e1000, e1000e, igb, igbvf, ixgb, ixgbe,
ixgbevf and i40evf.

Mark fixes an issue with ixgbe and ixgbevf by adding a bit to indicate
when workqueues have been initialized.  This permits the register read
error handling from attempting to use them prior to that, which also
generates warnings.  Checking for a detected removal after initializing
the work queues allows the probe function to return an error without
getting the workqueue involved.  Further, if the error_detected
callback is entered before the workqueues are initialized, exit without
recovery since the device initialization was so truncated.

Francois Romieu provides several patches to all the drivers to remove
the open coded skb_cow_head.

Jakub Kicinski provides a fix for igb where last_rx_timestamp should be
updated only when Rx time stamp is read.

Mitch provides a fix for i40evf where a recent change broke the RSS LUT
programming causing it to be programmed with all 0's.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
83 files changed:
drivers/net/bonding/bond_main.c
drivers/net/ethernet/8390/apne.c
drivers/net/ethernet/allwinner/sun4i-emac.c
drivers/net/ethernet/ti/cpsw.c
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/hyperv/rndis_filter.c
drivers/net/usb/r8152.c
drivers/net/wireless/ath/ath9k/ar5008_phy.c
drivers/net/wireless/ath/ath9k/beacon.c
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/b43/phy_n.c
drivers/net/wireless/rsi/rsi_91x_core.c
drivers/net/wireless/rsi/rsi_91x_debugfs.c
drivers/net/wireless/rsi/rsi_91x_mgmt.c
drivers/net/wireless/rsi/rsi_91x_sdio.c
drivers/net/wireless/rsi/rsi_91x_sdio_ops.c
drivers/net/wireless/rsi/rsi_91x_usb.c
drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c
drivers/scsi/iscsi_tcp.c
drivers/scsi/iscsi_tcp.h
drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib-linux.c
drivers/target/iscsi/iscsi_target_core.h
drivers/target/iscsi/iscsi_target_nego.c
fs/dlm/lowcomms.c
fs/ncpfs/ncp_fs_sb.h
fs/ncpfs/sock.c
fs/ocfs2/cluster/tcp.c
fs/ocfs2/cluster/tcp_internal.h
include/linux/sunrpc/svcsock.h
include/net/sctp/sctp.h
include/net/sock.h
net/atm/clip.c
net/atm/lec.c
net/atm/mpc.c
net/atm/raw.c
net/atm/signaling.c
net/ax25/ax25_in.c
net/bluetooth/l2cap_sock.c
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/sock.c
net/bluetooth/sco.c
net/bridge/br_input.c
net/bridge/br_vlan.c
net/caif/caif_socket.c
net/ceph/messenger.c
net/core/pktgen.c
net/core/skbuff.c
net/core/sock.c
net/dccp/input.c
net/dccp/minisocks.c
net/decnet/dn_nsp_in.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_minisocks.c
net/ipv6/tcp_ipv6.c
net/iucv/af_iucv.c
net/key/af_key.c
net/netlink/af_netlink.c
net/netrom/af_netrom.c
net/nfc/llcp_core.c
net/packet/af_packet.c
net/phonet/pep-gprs.c
net/phonet/pep.c
net/rds/tcp.h
net/rds/tcp_listen.c
net/rds/tcp_recv.c
net/rose/af_rose.c
net/rxrpc/ar-input.c
net/rxrpc/ar-internal.h
net/sctp/socket.c
net/sctp/ulpqueue.c
net/sunrpc/svcsock.c
net/sunrpc/xprtsock.c
net/tipc/server.c
net/tipc/socket.c
net/unix/af_unix.c
net/vmw_vsock/vmci_transport_notify.c
net/vmw_vsock/vmci_transport_notify_qstate.c
net/x25/af_x25.c
net/x25/x25_in.c

index d9f8546..69aff72 100644 (file)
@@ -4492,6 +4492,7 @@ static int __init bonding_init(void)
 out:
        return res;
 err:
+       bond_destroy_debugfs();
        bond_netlink_fini();
 err_link:
        unregister_pernet_subsys(&bond_net_ops);
index 30104b6..c56ac9e 100644 (file)
@@ -560,9 +560,7 @@ static struct net_device *apne_dev;
 static int __init apne_module_init(void)
 {
        apne_dev = apne_probe(-1);
-       if (IS_ERR(apne_dev))
-               return PTR_ERR(apne_dev);
-       return 0;
+       return PTR_ERR_OR_ZERO(apne_dev);
 }
 
 static void __exit apne_module_exit(void)
index fcaeeb8..2846067 100644 (file)
@@ -268,15 +268,6 @@ static unsigned int emac_setup(struct net_device *ndev)
        writel(reg_val | EMAC_TX_MODE_ABORTED_FRAME_EN,
                db->membase + EMAC_TX_MODE_REG);
 
-       /* set up RX */
-       reg_val = readl(db->membase + EMAC_RX_CTL_REG);
-
-       writel(reg_val | EMAC_RX_CTL_PASS_LEN_OOR_EN |
-               EMAC_RX_CTL_ACCEPT_UNICAST_EN | EMAC_RX_CTL_DA_FILTER_EN |
-               EMAC_RX_CTL_ACCEPT_MULTICAST_EN |
-               EMAC_RX_CTL_ACCEPT_BROADCAST_EN,
-               db->membase + EMAC_RX_CTL_REG);
-
        /* set MAC */
        /* set MAC CTL0 */
        reg_val = readl(db->membase + EMAC_MAC_CTL0_REG);
@@ -309,6 +300,26 @@ static unsigned int emac_setup(struct net_device *ndev)
        return 0;
 }
 
+static void emac_set_rx_mode(struct net_device *ndev)
+{
+       struct emac_board_info *db = netdev_priv(ndev);
+       unsigned int reg_val;
+
+       /* set up RX */
+       reg_val = readl(db->membase + EMAC_RX_CTL_REG);
+
+       if (ndev->flags & IFF_PROMISC)
+               reg_val |= EMAC_RX_CTL_PASS_ALL_EN;
+       else
+               reg_val &= ~EMAC_RX_CTL_PASS_ALL_EN;
+
+       writel(reg_val | EMAC_RX_CTL_PASS_LEN_OOR_EN |
+               EMAC_RX_CTL_ACCEPT_UNICAST_EN | EMAC_RX_CTL_DA_FILTER_EN |
+               EMAC_RX_CTL_ACCEPT_MULTICAST_EN |
+               EMAC_RX_CTL_ACCEPT_BROADCAST_EN,
+               db->membase + EMAC_RX_CTL_REG);
+}
+
 static unsigned int emac_powerup(struct net_device *ndev)
 {
        struct emac_board_info *db = netdev_priv(ndev);
@@ -782,6 +793,7 @@ static const struct net_device_ops emac_netdev_ops = {
        .ndo_stop               = emac_stop,
        .ndo_start_xmit         = emac_start_xmit,
        .ndo_tx_timeout         = emac_timeout,
+       .ndo_set_rx_mode        = emac_set_rx_mode,
        .ndo_do_ioctl           = emac_ioctl,
        .ndo_change_mtu         = eth_change_mtu,
        .ndo_validate_addr      = eth_validate_addr,
index 6133e4a..36aa109 100644 (file)
@@ -687,7 +687,7 @@ static void cpsw_rx_handler(void *token, int len, int status)
 
        cpsw_dual_emac_src_port_detect(status, priv, ndev, skb);
 
-       if (unlikely(status < 0)) {
+       if (unlikely(status < 0) || unlikely(!netif_running(ndev))) {
                /* the interface is going down, skbs are purged */
                dev_kfree_skb_any(skb);
                return;
@@ -1252,6 +1252,12 @@ static int cpsw_ndo_open(struct net_device *ndev)
                cpsw_set_coalesce(ndev, &coal);
        }
 
+       napi_enable(&priv->napi);
+       cpdma_ctlr_start(priv->dma);
+       cpsw_intr_enable(priv);
+       cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX);
+       cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX);
+
        prim_cpsw = cpsw_get_slave_priv(priv, 0);
        if (prim_cpsw->irq_enabled == false) {
                if ((priv == prim_cpsw) || !netif_running(prim_cpsw->ndev)) {
@@ -1260,12 +1266,6 @@ static int cpsw_ndo_open(struct net_device *ndev)
                }
        }
 
-       napi_enable(&priv->napi);
-       cpdma_ctlr_start(priv->dma);
-       cpsw_intr_enable(priv);
-       cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_RX);
-       cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX);
-
        if (priv->data.dual_emac)
                priv->slaves[priv->emac_port].open_stat = true;
        return 0;
index 13010b4..d18f711 100644 (file)
@@ -747,6 +747,7 @@ struct ndis_oject_header {
 #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4       0
 #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6       1
 
+#define VERSION_4_OFFLOAD_SIZE                 22
 /*
  * New offload OIDs for NDIS 6
  */
index daddea2..f7629ec 100644 (file)
@@ -344,7 +344,7 @@ static int netvsc_connect_vsp(struct hv_device *device)
        memset(init_packet, 0, sizeof(struct nvsp_message));
 
        if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_4)
-               ndis_version = 0x00050001;
+               ndis_version = 0x00060001;
        else
                ndis_version = 0x0006001e;
 
index 4e4cf9e..31e55fb 100644 (file)
@@ -319,7 +319,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
        packet = kzalloc(sizeof(struct hv_netvsc_packet) +
                         (num_data_pgs * sizeof(struct hv_page_buffer)) +
                         sizeof(struct rndis_message) +
-                        NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
+                        NDIS_VLAN_PPI_SIZE +
+                        NDIS_CSUM_PPI_SIZE +
+                        NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
        if (!packet) {
                /* out of memory, drop packet */
                netdev_err(net, "unable to allocate hv_netvsc_packet\n");
@@ -396,7 +398,30 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
                csum_info->transmit.tcp_checksum = 1;
                csum_info->transmit.tcp_header_offset = hdr_offset;
        } else if (net_trans_info & INFO_UDP) {
-               csum_info->transmit.udp_checksum = 1;
+               /* UDP checksum offload is not supported on ws2008r2.
+                * Furthermore, on ws2012 and ws2012r2, there are some
+                * issues with udp checksum offload from Linux guests.
+                * (these are host issues).
+                * For now compute the checksum here.
+                */
+               struct udphdr *uh;
+               u16 udp_len;
+
+               ret = skb_cow_head(skb, 0);
+               if (ret)
+                       goto drop;
+
+               uh = udp_hdr(skb);
+               udp_len = ntohs(uh->len);
+               uh->check = 0;
+               uh->check = csum_tcpudp_magic(ip_hdr(skb)->saddr,
+                                             ip_hdr(skb)->daddr,
+                                             udp_len, IPPROTO_UDP,
+                                             csum_partial(uh, udp_len, 0));
+               if (uh->check == 0)
+                       uh->check = CSUM_MANGLED_0;
+
+               csum_info->transmit.udp_checksum = 0;
        }
        goto do_send;
 
@@ -436,6 +461,7 @@ do_send:
 
        ret = netvsc_send(net_device_ctx->device_ctx, packet);
 
+drop:
        if (ret == 0) {
                net->stats.tx_bytes += skb->len;
                net->stats.tx_packets++;
index 4a37e3d..143a98c 100644 (file)
@@ -641,6 +641,16 @@ int rndis_filter_set_offload_params(struct hv_device *hdev,
        struct rndis_set_complete *set_complete;
        u32 extlen = sizeof(struct ndis_offload_params);
        int ret, t;
+       u32 vsp_version = nvdev->nvsp_version;
+
+       if (vsp_version <= NVSP_PROTOCOL_VERSION_4) {
+               extlen = VERSION_4_OFFLOAD_SIZE;
+               /* On NVSP_PROTOCOL_VERSION_4 and below, we do not support
+                * UDP checksum offload.
+                */
+               req_offloads->udp_ip_v4_csum = 0;
+               req_offloads->udp_ip_v6_csum = 0;
+       }
 
        request = get_rndis_request(rdev, RNDIS_MSG_SET,
                RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
@@ -674,7 +684,7 @@ int rndis_filter_set_offload_params(struct hv_device *hdev,
        } else {
                set_complete = &request->response_msg.msg.set_complete;
                if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-                       netdev_err(ndev, "Fail to set MAC on host side:0x%x\n",
+                       netdev_err(ndev, "Fail to set offload on host side:0x%x\n",
                                   set_complete->status);
                        ret = -EINVAL;
                }
index 18e12a3..3fbfb08 100644 (file)
@@ -929,6 +929,9 @@ static int read_mii_word(struct net_device *netdev, int phy_id, int reg)
        struct r8152 *tp = netdev_priv(netdev);
        int ret;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return -ENODEV;
+
        if (phy_id != R8152_PHY_ID)
                return -EINVAL;
 
@@ -949,6 +952,9 @@ void write_mii_word(struct net_device *netdev, int phy_id, int reg, int val)
 {
        struct r8152 *tp = netdev_priv(netdev);
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        if (phy_id != R8152_PHY_ID)
                return;
 
@@ -1962,6 +1968,9 @@ static int rtl_enable(struct r8152 *tp)
 
 static int rtl8152_enable(struct r8152 *tp)
 {
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return -ENODEV;
+
        set_tx_qlen(tp);
        rtl_set_eee_plus(tp);
 
@@ -1994,6 +2003,9 @@ static void r8153_set_rx_agg(struct r8152 *tp)
 
 static int rtl8153_enable(struct r8152 *tp)
 {
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return -ENODEV;
+
        set_tx_qlen(tp);
        rtl_set_eee_plus(tp);
        r8153_set_rx_agg(tp);
@@ -2006,6 +2018,11 @@ static void rtl8152_disable(struct r8152 *tp)
        u32 ocp_data;
        int i;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
+               rtl_drop_queued_tx(tp);
+               return;
+       }
+
        ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
        ocp_data &= ~RCR_ACPT_ALL;
        ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
@@ -2232,6 +2249,9 @@ static void r8152b_exit_oob(struct r8152 *tp)
        u32 ocp_data;
        int i;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
        ocp_data &= ~RCR_ACPT_ALL;
        ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
@@ -2460,6 +2480,9 @@ static void r8153_first_init(struct r8152 *tp)
        u32 ocp_data;
        int i;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        rxdy_gated_en(tp, true);
        r8153_teredo_off(tp);
 
@@ -2687,6 +2710,11 @@ out:
 
 static void rtl8152_down(struct r8152 *tp)
 {
+       if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
+               rtl_drop_queued_tx(tp);
+               return;
+       }
+
        r8152_power_cut_en(tp, false);
        r8152b_disable_aldps(tp);
        r8152b_enter_oob(tp);
@@ -2695,6 +2723,11 @@ static void rtl8152_down(struct r8152 *tp)
 
 static void rtl8153_down(struct r8152 *tp)
 {
+       if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
+               rtl_drop_queued_tx(tp);
+               return;
+       }
+
        r8153_u1u2en(tp, false);
        r8153_power_cut_en(tp, false);
        r8153_disable_aldps(tp);
@@ -2904,6 +2937,9 @@ static void r8152b_init(struct r8152 *tp)
 {
        u32 ocp_data;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        if (tp->version == RTL_VER_01) {
                ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);
                ocp_data &= ~LED_MODE_MASK;
@@ -2939,6 +2975,9 @@ static void r8153_init(struct r8152 *tp)
        u32 ocp_data;
        int i;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        r8153_u1u2en(tp, false);
 
        for (i = 0; i < 500; i++) {
@@ -3213,6 +3252,9 @@ static int rtl8152_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
        struct mii_ioctl_data *data = if_mii(rq);
        int res;
 
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return -ENODEV;
+
        res = usb_autopm_get_interface(tp->intf);
        if (res < 0)
                goto out;
@@ -3293,12 +3335,18 @@ static void r8152b_get_version(struct r8152 *tp)
 
 static void rtl8152_unload(struct r8152 *tp)
 {
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        if (tp->version != RTL_VER_01)
                r8152_power_cut_en(tp, true);
 }
 
 static void rtl8153_unload(struct r8152 *tp)
 {
+       if (test_bit(RTL8152_UNPLUG, &tp->flags))
+               return;
+
        r8153_power_cut_en(tp, true);
 }
 
index 3b3e910..00fb8ba 100644 (file)
@@ -1004,11 +1004,9 @@ static bool ar5008_hw_ani_control_new(struct ath_hw *ah,
        case ATH9K_ANI_FIRSTEP_LEVEL:{
                u32 level = param;
 
-               value = level * 2;
+               value = level;
                REG_RMW_FIELD(ah, AR_PHY_FIND_SIG,
                              AR_PHY_FIND_SIG_FIRSTEP, value);
-               REG_RMW_FIELD(ah, AR_PHY_FIND_SIG_LOW,
-                             AR_PHY_FIND_SIG_FIRSTEP_LOW, value);
 
                if (level != aniState->firstepLevel) {
                        ath_dbg(common, ANI,
index 471e0f6..bd9e634 100644 (file)
@@ -312,10 +312,9 @@ static void ath9k_csa_update_vif(void *data, u8 *mac, struct ieee80211_vif *vif)
 
 void ath9k_csa_update(struct ath_softc *sc)
 {
-       ieee80211_iterate_active_interfaces(sc->hw,
-                                           IEEE80211_IFACE_ITER_NORMAL,
-                                           ath9k_csa_update_vif,
-                                           sc);
+       ieee80211_iterate_active_interfaces_atomic(sc->hw,
+                                                  IEEE80211_IFACE_ITER_NORMAL,
+                                                  ath9k_csa_update_vif, sc);
 }
 
 void ath9k_beacon_tasklet(unsigned long data)
index e8149e3..289f3d8 100644 (file)
@@ -471,8 +471,11 @@ static void ath9k_htc_tx_process(struct ath9k_htc_priv *priv,
        if (!txok || !vif || !txs)
                goto send_mac80211;
 
-       if (txs->ts_flags & ATH9K_HTC_TXSTAT_ACK)
+       if (txs->ts_flags & ATH9K_HTC_TXSTAT_ACK) {
                tx_info->flags |= IEEE80211_TX_STAT_ACK;
+               if (tx_info->flags & IEEE80211_TX_CTL_AMPDU)
+                       tx_info->flags |= IEEE80211_TX_STAT_AMPDU;
+       }
 
        if (txs->ts_flags & ATH9K_HTC_TXSTAT_FILT)
                tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
index c0a4e86..cbbb02a 100644 (file)
@@ -670,6 +670,7 @@ static const struct ieee80211_iface_combination if_comb[] = {
                .num_different_channels = 1,
                .beacon_int_infra_match = true,
        },
+#ifdef CONFIG_ATH9K_DFS_CERTIFIED
        {
                .limits = if_dfs_limits,
                .n_limits = ARRAY_SIZE(if_dfs_limits),
@@ -679,6 +680,7 @@ static const struct ieee80211_iface_combination if_comb[] = {
                .radar_detect_widths =  BIT(NL80211_CHAN_WIDTH_20_NOHT) |
                                        BIT(NL80211_CHAN_WIDTH_20),
        }
+#endif
 };
 
 static void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
index 05ee7f1..24ccbe9 100644 (file)
@@ -5176,22 +5176,22 @@ static void b43_nphy_channel_setup(struct b43_wldev *dev,
        int ch = new_channel->hw_value;
 
        u16 old_band_5ghz;
-       u32 tmp32;
+       u16 tmp16;
 
        old_band_5ghz =
                b43_phy_read(dev, B43_NPHY_BANDCTL) & B43_NPHY_BANDCTL_5GHZ;
        if (new_channel->band == IEEE80211_BAND_5GHZ && !old_band_5ghz) {
-               tmp32 = b43_read32(dev, B43_MMIO_PSM_PHY_HDR);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32 | 4);
+               tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4);
                b43_phy_set(dev, B43_PHY_B_BBCFG, 0xC000);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16);
                b43_phy_set(dev, B43_NPHY_BANDCTL, B43_NPHY_BANDCTL_5GHZ);
        } else if (new_channel->band == IEEE80211_BAND_2GHZ && old_band_5ghz) {
                b43_phy_mask(dev, B43_NPHY_BANDCTL, ~B43_NPHY_BANDCTL_5GHZ);
-               tmp32 = b43_read32(dev, B43_MMIO_PSM_PHY_HDR);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32 | 4);
+               tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4);
                b43_phy_mask(dev, B43_PHY_B_BBCFG, 0x3FFF);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16);
        }
 
        b43_chantab_phy_upload(dev, e);
index e89535e..1a8d321 100644 (file)
@@ -102,10 +102,10 @@ static u8 rsi_core_determine_hal_queue(struct rsi_common *common)
        }
 
 get_queue_num:
-       q_num = 0;
        recontend_queue = false;
 
        q_num = rsi_determine_min_weight_queue(common);
+
        q_len = skb_queue_len(&common->tx_queue[ii]);
        ii = q_num;
 
@@ -118,7 +118,9 @@ get_queue_num:
                }
        }
 
-       common->tx_qinfo[q_num].pkt_contended = 0;
+       if (q_num < NUM_EDCA_QUEUES)
+               common->tx_qinfo[q_num].pkt_contended = 0;
+
        /* Adjust the back off values for all queues again */
        recontend_queue = rsi_recalculate_weights(common);
 
index 7e4ef45..c466246 100644 (file)
@@ -289,32 +289,29 @@ int rsi_init_dbgfs(struct rsi_hw *adapter)
        const struct rsi_dbg_files *files;
 
        dev_dbgfs = kzalloc(sizeof(*dev_dbgfs), GFP_KERNEL);
+       if (!dev_dbgfs)
+               return -ENOMEM;
+
        adapter->dfsentry = dev_dbgfs;
 
        snprintf(devdir, sizeof(devdir), "%s",
                 wiphy_name(adapter->hw->wiphy));
-       dev_dbgfs->subdir = debugfs_create_dir(devdir, NULL);
 
-       if (IS_ERR(dev_dbgfs->subdir)) {
-               if (dev_dbgfs->subdir == ERR_PTR(-ENODEV))
-                       rsi_dbg(ERR_ZONE,
-                               "%s:Debugfs has not been mounted\n", __func__);
-               else
-                       rsi_dbg(ERR_ZONE, "debugfs:%s not created\n", devdir);
+       dev_dbgfs->subdir = debugfs_create_dir(devdir, NULL);
 
-               adapter->dfsentry = NULL;
+       if (!dev_dbgfs->subdir) {
                kfree(dev_dbgfs);
-               return (int)PTR_ERR(dev_dbgfs->subdir);
-       } else {
-               for (ii = 0; ii < adapter->num_debugfs_entries; ii++) {
-                       files = &dev_debugfs_files[ii];
-                       dev_dbgfs->rsi_files[ii] =
-                       debugfs_create_file(files->name,
-                                           files->perms,
-                                           dev_dbgfs->subdir,
-                                           common,
-                                           &files->fops);
-               }
+               return -ENOMEM;
+       }
+
+       for (ii = 0; ii < adapter->num_debugfs_entries; ii++) {
+               files = &dev_debugfs_files[ii];
+               dev_dbgfs->rsi_files[ii] =
+               debugfs_create_file(files->name,
+                                   files->perms,
+                                   dev_dbgfs->subdir,
+                                   common,
+                                   &files->fops);
        }
        return 0;
 }
index 2361a68..7369429 100644 (file)
@@ -738,7 +738,7 @@ int rsi_hal_load_key(struct rsi_common *common,
  *
  * Return: 0 on success, corresponding error code on failure.
  */
-static u8 rsi_load_bootup_params(struct rsi_common *common)
+static int rsi_load_bootup_params(struct rsi_common *common)
 {
        struct sk_buff *skb;
        struct rsi_boot_params *boot_params;
@@ -1272,6 +1272,7 @@ int rsi_mgmt_pkt_recv(struct rsi_common *common, u8 *msg)
 {
        s32 msg_len = (le16_to_cpu(*(__le16 *)&msg[0]) & 0x0fff);
        u16 msg_type = (msg[2]);
+       int ret;
 
        rsi_dbg(FSM_ZONE, "%s: Msg Len: %d, Msg Type: %4x\n",
                __func__, msg_len, msg_type);
@@ -1284,8 +1285,9 @@ int rsi_mgmt_pkt_recv(struct rsi_common *common, u8 *msg)
                if (common->fsm_state == FSM_CARD_NOT_READY) {
                        rsi_set_default_parameters(common);
 
-                       if (rsi_load_bootup_params(common))
-                               return -ENOMEM;
+                       ret = rsi_load_bootup_params(common);
+                       if (ret)
+                               return ret;
                        else
                                common->fsm_state = FSM_BOOT_PARAMS_SENT;
                } else {
index 852453f..2e39d38 100644 (file)
@@ -756,12 +756,13 @@ fail:
 static void rsi_disconnect(struct sdio_func *pfunction)
 {
        struct rsi_hw *adapter = sdio_get_drvdata(pfunction);
-       struct rsi_91x_sdiodev *dev =
-               (struct rsi_91x_sdiodev *)adapter->rsi_dev;
+       struct rsi_91x_sdiodev *dev;
 
        if (!adapter)
                return;
 
+       dev = (struct rsi_91x_sdiodev *)adapter->rsi_dev;
+
        dev->write_fail = 2;
        rsi_mac80211_detach(adapter);
 
index f1cb99c..20d11cc 100644 (file)
@@ -247,7 +247,7 @@ static int rsi_process_pkt(struct rsi_common *common)
        if (!common->rx_data_pkt) {
                rsi_dbg(ERR_ZONE, "%s: Failed in memory allocation\n",
                        __func__);
-               return -1;
+               return -ENOMEM;
        }
 
        status = rsi_sdio_host_intf_read_pkt(adapter,
@@ -260,12 +260,10 @@ static int rsi_process_pkt(struct rsi_common *common)
        }
 
        status = rsi_read_pkt(common, rcv_pkt_len);
-       kfree(common->rx_data_pkt);
-       return status;
 
 fail:
        kfree(common->rx_data_pkt);
-       return -1;
+       return status;
 }
 
 /**
index bb1bf96..4c46e56 100644 (file)
@@ -154,24 +154,30 @@ static int rsi_usb_reg_read(struct usb_device *usbdev,
                            u16 *value,
                            u16 len)
 {
-       u8 temp_buf[4];
-       int status = 0;
+       u8 *buf;
+       int status = -ENOMEM;
+
+       buf  = kmalloc(0x04, GFP_KERNEL);
+       if (!buf)
+               return status;
 
        status = usb_control_msg(usbdev,
                                 usb_rcvctrlpipe(usbdev, 0),
                                 USB_VENDOR_REGISTER_READ,
                                 USB_TYPE_VENDOR,
                                 ((reg & 0xffff0000) >> 16), (reg & 0xffff),
-                                (void *)temp_buf,
+                                (void *)buf,
                                 len,
                                 HZ * 5);
 
-       *value = (temp_buf[0] | (temp_buf[1] << 8));
+       *value = (buf[0] | (buf[1] << 8));
        if (status < 0) {
                rsi_dbg(ERR_ZONE,
                        "%s: Reg read failed with error code :%d\n",
                        __func__, status);
        }
+       kfree(buf);
+
        return status;
 }
 
@@ -190,8 +196,12 @@ static int rsi_usb_reg_write(struct usb_device *usbdev,
                             u16 value,
                             u16 len)
 {
-       u8 usb_reg_buf[4];
-       int status = 0;
+       u8 *usb_reg_buf;
+       int status = -ENOMEM;
+
+       usb_reg_buf  = kmalloc(0x04, GFP_KERNEL);
+       if (!usb_reg_buf)
+               return status;
 
        usb_reg_buf[0] = (value & 0x00ff);
        usb_reg_buf[1] = (value & 0xff00) >> 8;
@@ -212,6 +222,8 @@ static int rsi_usb_reg_write(struct usb_device *usbdev,
                        "%s: Reg write failed with error code :%d\n",
                        __func__, status);
        }
+       kfree(usb_reg_buf);
+
        return status;
 }
 
@@ -286,7 +298,7 @@ int rsi_usb_write_register_multiple(struct rsi_hw *adapter,
                return -ENOMEM;
 
        while (count) {
-               transfer = min_t(int, count, 4096);
+               transfer = (u8)(min_t(u32, count, 4096));
                memcpy(buf, data, transfer);
                status = usb_control_msg(dev->usbdev,
                                         usb_sndctrlpipe(dev->usbdev, 0),
index b6722de..33da3df 100644 (file)
@@ -625,17 +625,7 @@ bool exhalbtc_initlize_variables(struct rtl_priv *adapter)
        else
                btcoexist->binded = true;
 
-#if (defined(CONFIG_PCI_HCI))
-       btcoexist->chip_interface = BTC_INTF_PCI;
-#elif (defined(CONFIG_USB_HCI))
-       btcoexist->chip_interface = BTC_INTF_USB;
-#elif (defined(CONFIG_SDIO_HCI))
-       btcoexist->chip_interface = BTC_INTF_SDIO;
-#elif (defined(CONFIG_GSPI_HCI))
-       btcoexist->chip_interface = BTC_INTF_GSPI;
-#else
        btcoexist->chip_interface = BTC_INTF_UNKNOWN;
-#endif
 
        if (NULL == btcoexist->adapter)
                btcoexist->adapter = adapter;
index bfb6d07..1185484 100644 (file)
@@ -125,7 +125,7 @@ static inline int iscsi_sw_sk_state_check(struct sock *sk)
        return 0;
 }
 
-static void iscsi_sw_tcp_data_ready(struct sock *sk, int flag)
+static void iscsi_sw_tcp_data_ready(struct sock *sk)
 {
        struct iscsi_conn *conn;
        struct iscsi_tcp_conn *tcp_conn;
index 666fe09..f42ecb2 100644 (file)
@@ -40,7 +40,7 @@ struct iscsi_sw_tcp_conn {
 
        struct iscsi_sw_tcp_send out;
        /* old values for socket callbacks */
-       void                    (*old_data_ready)(struct sock *, int);
+       void                    (*old_data_ready)(struct sock *);
        void                    (*old_state_change)(struct sock *);
        void                    (*old_write_space)(struct sock *);
 
index a54b506..a9b5898 100644 (file)
@@ -655,7 +655,7 @@ extern void ksocknal_write_callback (ksock_conn_t *conn);
  * socket call back in Linux
  */
 static void
-ksocknal_data_ready (struct sock *sk, int n)
+ksocknal_data_ready (struct sock *sk)
 {
        ksock_conn_t  *conn;
 
@@ -666,7 +666,7 @@ ksocknal_data_ready (struct sock *sk, int n)
        conn = sk->sk_user_data;
        if (conn == NULL) {          /* raced with ksocknal_terminate_conn */
                LASSERT (sk->sk_data_ready != &ksocknal_data_ready);
-               sk->sk_data_ready (sk, n);
+               sk->sk_data_ready (sk);
        } else
                ksocknal_read_callback(conn);
 
index 48f7b3b..f452398 100644 (file)
@@ -556,7 +556,7 @@ struct iscsi_conn {
        struct completion       rx_half_close_comp;
        /* socket used by this connection */
        struct socket           *sock;
-       void                    (*orig_data_ready)(struct sock *, int);
+       void                    (*orig_data_ready)(struct sock *);
        void                    (*orig_state_change)(struct sock *);
 #define LOGIN_FLAGS_READ_ACTIVE                1
 #define LOGIN_FLAGS_CLOSED             2
index 582ba84..75b6859 100644 (file)
@@ -375,7 +375,7 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
        return 0;
 }
 
-static void iscsi_target_sk_data_ready(struct sock *sk, int count)
+static void iscsi_target_sk_data_ready(struct sock *sk)
 {
        struct iscsi_conn *conn = sk->sk_user_data;
        bool rc;
index 3190ca9..1e5b453 100644 (file)
@@ -424,7 +424,7 @@ int dlm_lowcomms_addr(int nodeid, struct sockaddr_storage *addr, int len)
 }
 
 /* Data available on socket or listen socket received a connect */
-static void lowcomms_data_ready(struct sock *sk, int count_unused)
+static void lowcomms_data_ready(struct sock *sk)
 {
        struct connection *con = sock2con(sk);
        if (con && !test_and_set_bit(CF_READ_PENDING, &con->flags))
index b81e97a..fbb0881 100644 (file)
@@ -111,7 +111,7 @@ struct ncp_server {
 
        spinlock_t requests_lock;       /* Lock accesses to tx.requests, tx.creq and rcv.creq when STREAM mode */
 
-       void (*data_ready)(struct sock* sk, int len);
+       void (*data_ready)(struct sock* sk);
        void (*error_report)(struct sock* sk);
        void (*write_space)(struct sock* sk);   /* STREAM mode only */
        struct {
@@ -153,7 +153,7 @@ extern void ncp_tcp_tx_proc(struct work_struct *work);
 extern void ncpdgram_rcv_proc(struct work_struct *work);
 extern void ncpdgram_timeout_proc(struct work_struct *work);
 extern void ncpdgram_timeout_call(unsigned long server);
-extern void ncp_tcp_data_ready(struct sock* sk, int len);
+extern void ncp_tcp_data_ready(struct sock* sk);
 extern void ncp_tcp_write_space(struct sock* sk);
 extern void ncp_tcp_error_report(struct sock* sk);
 
index 3a15872..652da0d 100644 (file)
@@ -96,11 +96,11 @@ static void ncp_req_put(struct ncp_request_reply *req)
                kfree(req);
 }
 
-void ncp_tcp_data_ready(struct sock *sk, int len)
+void ncp_tcp_data_ready(struct sock *sk)
 {
        struct ncp_server *server = sk->sk_user_data;
 
-       server->data_ready(sk, len);
+       server->data_ready(sk);
        schedule_work(&server->rcv.tq);
 }
 
index eb649d2..d857534 100644 (file)
@@ -137,7 +137,7 @@ static int o2net_sys_err_translations[O2NET_ERR_MAX] =
 static void o2net_sc_connect_completed(struct work_struct *work);
 static void o2net_rx_until_empty(struct work_struct *work);
 static void o2net_shutdown_sc(struct work_struct *work);
-static void o2net_listen_data_ready(struct sock *sk, int bytes);
+static void o2net_listen_data_ready(struct sock *sk);
 static void o2net_sc_send_keep_req(struct work_struct *work);
 static void o2net_idle_timer(unsigned long data);
 static void o2net_sc_postpone_idle(struct o2net_sock_container *sc);
@@ -597,9 +597,9 @@ static void o2net_set_nn_state(struct o2net_node *nn,
 }
 
 /* see o2net_register_callbacks() */
-static void o2net_data_ready(struct sock *sk, int bytes)
+static void o2net_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
 
        read_lock(&sk->sk_callback_lock);
        if (sk->sk_user_data) {
@@ -613,7 +613,7 @@ static void o2net_data_ready(struct sock *sk, int bytes)
        }
        read_unlock(&sk->sk_callback_lock);
 
-       ready(sk, bytes);
+       ready(sk);
 }
 
 /* see o2net_register_callbacks() */
@@ -1953,9 +1953,9 @@ static void o2net_accept_many(struct work_struct *work)
                cond_resched();
 }
 
-static void o2net_listen_data_ready(struct sock *sk, int bytes)
+static void o2net_listen_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
 
        read_lock(&sk->sk_callback_lock);
        ready = sk->sk_user_data;
@@ -1978,7 +1978,6 @@ static void o2net_listen_data_ready(struct sock *sk, int bytes)
         */
 
        if (sk->sk_state == TCP_LISTEN) {
-               mlog(ML_TCP, "bytes: %d\n", bytes);
                queue_work(o2net_wq, &o2net_listen_work);
        } else {
                ready = NULL;
@@ -1987,7 +1986,7 @@ static void o2net_listen_data_ready(struct sock *sk, int bytes)
 out:
        read_unlock(&sk->sk_callback_lock);
        if (ready != NULL)
-               ready(sk, bytes);
+               ready(sk);
 }
 
 static int o2net_open_listening_sock(__be32 addr, __be16 port)
index 4cbcb65..dc02436 100644 (file)
@@ -165,7 +165,7 @@ struct o2net_sock_container {
 
        /* original handlers for the sockets */
        void                    (*sc_state_change)(struct sock *sk);
-       void                    (*sc_data_ready)(struct sock *sk, int bytes);
+       void                    (*sc_data_ready)(struct sock *sk);
 
        u32                     sc_msg_key;
        u16                     sc_msg_type;
index 62fd1b7..88f7e1a 100644 (file)
@@ -22,7 +22,7 @@ struct svc_sock {
 
        /* We keep the old state_change and data_ready CB's here */
        void                    (*sk_ostate)(struct sock *);
-       void                    (*sk_odata)(struct sock *, int bytes);
+       void                    (*sk_odata)(struct sock *);
        void                    (*sk_owspace)(struct sock *);
 
        /* private TCP part */
index a3353f4..8e4de46 100644 (file)
@@ -101,7 +101,7 @@ void sctp_addr_wq_mgmt(struct net *, struct sctp_sockaddr_entry *, int);
 int sctp_backlog_rcv(struct sock *sk, struct sk_buff *skb);
 int sctp_inet_listen(struct socket *sock, int backlog);
 void sctp_write_space(struct sock *sk);
-void sctp_data_ready(struct sock *sk, int len);
+void sctp_data_ready(struct sock *sk);
 unsigned int sctp_poll(struct file *file, struct socket *sock,
                poll_table *wait);
 void sctp_sock_rfree(struct sk_buff *skb);
index 06a5668..8338a14 100644 (file)
@@ -418,7 +418,7 @@ struct sock {
        u32                     sk_classid;
        struct cg_proto         *sk_cgrp;
        void                    (*sk_state_change)(struct sock *sk);
-       void                    (*sk_data_ready)(struct sock *sk, int bytes);
+       void                    (*sk_data_ready)(struct sock *sk);
        void                    (*sk_write_space)(struct sock *sk);
        void                    (*sk_error_report)(struct sock *sk);
        int                     (*sk_backlog_rcv)(struct sock *sk,
index 8215f7c..ba291ce 100644 (file)
@@ -68,7 +68,7 @@ static int to_atmarpd(enum atmarp_ctrl_type type, int itf, __be32 ip)
 
        sk = sk_atm(atmarpd);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
        return 0;
 }
 
index 5a2f602..4c5b8ba 100644 (file)
@@ -152,7 +152,7 @@ static void lec_handle_bridge(struct sk_buff *skb, struct net_device *dev)
                atm_force_charge(priv->lecd, skb2->truesize);
                sk = sk_atm(priv->lecd);
                skb_queue_tail(&sk->sk_receive_queue, skb2);
-               sk->sk_data_ready(sk, skb2->len);
+               sk->sk_data_ready(sk);
        }
 }
 #endif /* defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) */
@@ -447,7 +447,7 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
                        atm_force_charge(priv->lecd, skb2->truesize);
                        sk = sk_atm(priv->lecd);
                        skb_queue_tail(&sk->sk_receive_queue, skb2);
-                       sk->sk_data_ready(sk, skb2->len);
+                       sk->sk_data_ready(sk);
                }
        }
 #endif /* defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) */
@@ -530,13 +530,13 @@ send_to_lecd(struct lec_priv *priv, atmlec_msg_type type,
        atm_force_charge(priv->lecd, skb->truesize);
        sk = sk_atm(priv->lecd);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
 
        if (data != NULL) {
                pr_debug("about to send %d bytes of data\n", data->len);
                atm_force_charge(priv->lecd, data->truesize);
                skb_queue_tail(&sk->sk_receive_queue, data);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        }
 
        return 0;
@@ -616,7 +616,7 @@ static void lec_push(struct atm_vcc *vcc, struct sk_buff *skb)
 
                pr_debug("%s: To daemon\n", dev->name);
                skb_queue_tail(&sk->sk_receive_queue, skb);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        } else {                /* Data frame, queue to protocol handlers */
                struct lec_arp_table *entry;
                unsigned char *src, *dst;
index 91dc58f..e8e0e7a 100644 (file)
@@ -706,7 +706,7 @@ static void mpc_push(struct atm_vcc *vcc, struct sk_buff *skb)
                dprintk("(%s) control packet arrived\n", dev->name);
                /* Pass control packets to daemon */
                skb_queue_tail(&sk->sk_receive_queue, skb);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
                return;
        }
 
@@ -992,7 +992,7 @@ int msg_to_mpoad(struct k_message *mesg, struct mpoa_client *mpc)
 
        sk = sk_atm(mpc->mpoad_vcc);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
 
        return 0;
 }
@@ -1273,7 +1273,7 @@ static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry)
 
        sk = sk_atm(vcc);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
        dprintk("exiting\n");
 }
 
index b4f7b9f..2e17e97 100644 (file)
@@ -25,7 +25,7 @@ static void atm_push_raw(struct atm_vcc *vcc, struct sk_buff *skb)
                struct sock *sk = sk_atm(vcc);
 
                skb_queue_tail(&sk->sk_receive_queue, skb);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        }
 }
 
index 4176887..523bce7 100644 (file)
@@ -51,7 +51,7 @@ static void sigd_put_skb(struct sk_buff *skb)
 #endif
        atm_force_charge(sigd, skb->truesize);
        skb_queue_tail(&sk_atm(sigd)->sk_receive_queue, skb);
-       sk_atm(sigd)->sk_data_ready(sk_atm(sigd), skb->len);
+       sk_atm(sigd)->sk_data_ready(sk_atm(sigd));
 }
 
 static void modify_qos(struct atm_vcc *vcc, struct atmsvc_msg *msg)
index 96f4cab..7ed8ab7 100644 (file)
@@ -422,7 +422,7 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
 
        if (sk) {
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, skb->len);
+                       sk->sk_data_ready(sk);
                sock_put(sk);
        } else {
 free:
index f59e00c..ef5e5b0 100644 (file)
@@ -1271,7 +1271,7 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
 
                if (parent) {
                        bt_accept_unlink(sk);
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
                } else {
                        sk->sk_state_change(sk);
                }
@@ -1327,7 +1327,7 @@ static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
        sk->sk_state_change(sk);
 
        if (parent)
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
 
        release_sock(sk);
 }
@@ -1340,7 +1340,7 @@ static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
 
        parent = bt_sk(sk)->parent;
        if (parent)
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
 
        release_sock(sk);
 }
index 633ccee..cf62026 100644 (file)
@@ -186,9 +186,9 @@ static void rfcomm_l2state_change(struct sock *sk)
        rfcomm_schedule();
 }
 
-static void rfcomm_l2data_ready(struct sock *sk, int bytes)
+static void rfcomm_l2data_ready(struct sock *sk)
 {
-       BT_DBG("%p bytes %d", sk, bytes);
+       BT_DBG("%p", sk);
        rfcomm_schedule();
 }
 
index eabd25a..c603a5e 100644 (file)
@@ -54,7 +54,7 @@ static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb)
 
        atomic_add(skb->len, &sk->sk_rmem_alloc);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
 
        if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
                rfcomm_dlc_throttle(d);
@@ -84,7 +84,7 @@ static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err)
                        sock_set_flag(sk, SOCK_ZAPPED);
                        bt_accept_unlink(sk);
                }
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
        } else {
                if (d->state == BT_CONNECTED)
                        rfcomm_session_getaddr(d->session,
index ab1e6fc..c06dbd3 100644 (file)
@@ -1024,7 +1024,7 @@ static void sco_conn_ready(struct sco_conn *conn)
                        sk->sk_state = BT_CONNECTED;
 
                /* Wake up parent */
-               parent->sk_data_ready(parent, 1);
+               parent->sk_data_ready(parent);
 
                bh_unlock_sock(parent);
 
index d0cca3c..7985dea 100644 (file)
@@ -73,7 +73,7 @@ int br_handle_frame_finish(struct sk_buff *skb)
                goto drop;
 
        if (!br_allowed_ingress(p->br, nbp_get_vlan_info(p), skb, &vid))
-               goto drop;
+               goto out;
 
        /* insert into forwarding database after filtering to avoid spoofing */
        br = p->br;
index 9151071..4a37161 100644 (file)
@@ -170,7 +170,7 @@ bool br_allowed_ingress(struct net_bridge *br, struct net_port_vlans *v,
         * rejected.
         */
        if (!v)
-               return false;
+               goto drop;
 
        /* If vlan tx offload is disabled on bridge device and frame was
         * sent from vlan device on the bridge device, it does not have
@@ -193,7 +193,7 @@ bool br_allowed_ingress(struct net_bridge *br, struct net_port_vlans *v,
                 * vlan untagged or priority-tagged traffic belongs to.
                 */
                if (pvid == VLAN_N_VID)
-                       return false;
+                       goto drop;
 
                /* PVID is set on this port.  Any untagged or priority-tagged
                 * ingress frame is considered to belong to this vlan.
@@ -216,7 +216,8 @@ bool br_allowed_ingress(struct net_bridge *br, struct net_port_vlans *v,
        /* Frame had a valid vlan tag.  See if vlan is allowed */
        if (test_bit(*vid, v->vlan_bitmap))
                return true;
-
+drop:
+       kfree_skb(skb);
        return false;
 }
 
index d6be3ed..e843709 100644 (file)
@@ -124,7 +124,6 @@ static void caif_flow_ctrl(struct sock *sk, int mode)
 static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
 {
        int err;
-       int skb_len;
        unsigned long flags;
        struct sk_buff_head *list = &sk->sk_receive_queue;
        struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
@@ -153,14 +152,13 @@ static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
         * may be freed by other threads of control pulling packets
         * from the queue.
         */
-       skb_len = skb->len;
        spin_lock_irqsave(&list->lock, flags);
        if (!sock_flag(sk, SOCK_DEAD))
                __skb_queue_tail(list, skb);
        spin_unlock_irqrestore(&list->lock, flags);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb_len);
+               sk->sk_data_ready(sk);
        else
                kfree_skb(skb);
        return 0;
index 4f55f9c..dac7f9b 100644 (file)
@@ -383,7 +383,7 @@ static void con_sock_state_closed(struct ceph_connection *con)
  */
 
 /* data available on socket, or listen socket received a connect */
-static void ceph_sock_data_ready(struct sock *sk, int count_unused)
+static void ceph_sock_data_ready(struct sock *sk)
 {
        struct ceph_connection *con = sk->sk_user_data;
        if (atomic_read(&con->msgr->stopping)) {
index d068ec2..0304f98 100644 (file)
@@ -3338,7 +3338,9 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
        queue_map = skb_get_queue_mapping(pkt_dev->skb);
        txq = netdev_get_tx_queue(odev, queue_map);
 
-       __netif_tx_lock_bh(txq);
+       local_bh_disable();
+
+       HARD_TX_LOCK(odev, txq, smp_processor_id());
 
        if (unlikely(netif_xmit_frozen_or_drv_stopped(txq))) {
                ret = NETDEV_TX_BUSY;
@@ -3374,7 +3376,9 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
                pkt_dev->last_ok = 0;
        }
 unlock:
-       __netif_tx_unlock_bh(txq);
+       HARD_TX_UNLOCK(odev, txq);
+
+       local_bh_enable();
 
        /* If pkt_dev->count is zero, then run forever */
        if ((pkt_dev->count != 0) && (pkt_dev->sofar >= pkt_dev->count)) {
index 57e225c..1b62343 100644 (file)
@@ -3458,8 +3458,6 @@ static void sock_rmem_free(struct sk_buff *skb)
  */
 int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
 {
-       int len = skb->len;
-
        if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
            (unsigned int)sk->sk_rcvbuf)
                return -ENOMEM;
@@ -3474,7 +3472,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
 
        skb_queue_tail(&sk->sk_error_queue, skb);
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, len);
+               sk->sk_data_ready(sk);
        return 0;
 }
 EXPORT_SYMBOL(sock_queue_err_skb);
index c0fc6bd..b4fff00 100644 (file)
@@ -428,7 +428,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        spin_unlock_irqrestore(&list->lock, flags);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb_len);
+               sk->sk_data_ready(sk);
        return 0;
 }
 EXPORT_SYMBOL(sock_queue_rcv_skb);
@@ -2196,7 +2196,7 @@ static void sock_def_error_report(struct sock *sk)
        rcu_read_unlock();
 }
 
-static void sock_def_readable(struct sock *sk, int len)
+static void sock_def_readable(struct sock *sk)
 {
        struct socket_wq *wq;
 
index 14cdafa..3c8ec7d 100644 (file)
@@ -28,7 +28,7 @@ static void dccp_enqueue_skb(struct sock *sk, struct sk_buff *skb)
        __skb_pull(skb, dccp_hdr(skb)->dccph_doff * 4);
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        skb_set_owner_r(skb, sk);
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 }
 
 static void dccp_fin(struct sock *sk, struct sk_buff *skb)
index 9e2f78b..c69eb9c 100644 (file)
@@ -237,7 +237,7 @@ int dccp_child_process(struct sock *parent, struct sock *child,
 
                /* Wakeup parent, send SIGIO */
                if (state == DCCP_RESPOND && child->sk_state != state)
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
        } else {
                /* Alas, it is possible again, because we do lookup
                 * in main socket hash table and lock on listening
index c344163..fe5f014 100644 (file)
@@ -585,7 +585,6 @@ out:
 static __inline__ int dn_queue_skb(struct sock *sk, struct sk_buff *skb, int sig, struct sk_buff_head *queue)
 {
        int err;
-       int skb_len;
 
        /* Cast skb->rcvbuf to unsigned... It's pointless, but reduces
           number of warnings when compiling with -W --ANK
@@ -600,12 +599,11 @@ static __inline__ int dn_queue_skb(struct sock *sk, struct sk_buff *skb, int sig
        if (err)
                goto out;
 
-       skb_len = skb->len;
        skb_set_owner_r(skb, sk);
        skb_queue_tail(queue, skb);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb_len);
+               sk->sk_data_ready(sk);
 out:
        return err;
 }
index e1661f4..d6b46eb 100644 (file)
@@ -4413,7 +4413,7 @@ queue_and_out:
                if (eaten > 0)
                        kfree_skb_partial(skb, fragstolen);
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                return;
        }
 
@@ -4914,7 +4914,7 @@ static void tcp_urg(struct sock *sk, struct sk_buff *skb, const struct tcphdr *t
                                BUG();
                        tp->urg_data = TCP_URG_VALID | tmp;
                        if (!sock_flag(sk, SOCK_DEAD))
-                               sk->sk_data_ready(sk, 0);
+                               sk->sk_data_ready(sk);
                }
        }
 }
@@ -5000,11 +5000,11 @@ static bool tcp_dma_try_early_copy(struct sock *sk, struct sk_buff *skb,
                    (tcp_flag_word(tcp_hdr(skb)) & TCP_FLAG_PSH) ||
                    (atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1))) {
                        tp->ucopy.wakeup = 1;
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                }
        } else if (chunk > 0) {
                tp->ucopy.wakeup = 1;
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
        }
 out:
        return copied_early;
@@ -5275,7 +5275,7 @@ no_ack:
 #endif
                        if (eaten)
                                kfree_skb_partial(skb, fragstolen);
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                        return;
                }
        }
index 6379894..438f3b9 100644 (file)
@@ -1434,7 +1434,7 @@ static int tcp_v4_conn_req_fastopen(struct sock *sk,
                tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq;
                tp->syn_data_acked = 1;
        }
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
        bh_unlock_sock(child);
        sock_put(child);
        WARN_ON(req->sk == NULL);
index ca788ad..05c1b15 100644 (file)
@@ -745,7 +745,7 @@ int tcp_child_process(struct sock *parent, struct sock *child,
                                            skb->len);
                /* Wakeup parent, send SIGIO */
                if (state == TCP_SYN_RECV && child->sk_state != state)
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
        } else {
                /* Alas, it is possible again, because we do lookup
                 * in main socket hash table and lock on listening
index 5ca56ce..e289830 100644 (file)
@@ -798,7 +798,7 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
        __tcp_v6_send_check(buff, &fl6.saddr, &fl6.daddr);
 
        fl6.flowi6_proto = IPPROTO_TCP;
-       if (rt6_need_strict(&fl6.daddr) || !oif)
+       if (rt6_need_strict(&fl6.daddr) && !oif)
                fl6.flowi6_oif = inet6_iif(skb);
        else
                fl6.flowi6_oif = oif;
index a5e0311..01e77b0 100644 (file)
@@ -1757,7 +1757,7 @@ static int iucv_callback_connreq(struct iucv_path *path,
 
        /* Wake up accept */
        nsk->sk_state = IUCV_CONNECTED;
-       sk->sk_data_ready(sk, 1);
+       sk->sk_data_ready(sk);
        err = 0;
 fail:
        bh_unlock_sock(sk);
@@ -1968,7 +1968,7 @@ static int afiucv_hs_callback_syn(struct sock *sk, struct sk_buff *skb)
        if (!err) {
                iucv_accept_enqueue(sk, nsk);
                nsk->sk_state = IUCV_CONNECTED;
-               sk->sk_data_ready(sk, 1);
+               sk->sk_data_ready(sk);
        } else
                iucv_sock_kill(nsk);
        bh_unlock_sock(sk);
index e72589a..f3c8307 100644 (file)
@@ -205,7 +205,7 @@ static int pfkey_broadcast_one(struct sk_buff *skb, struct sk_buff **skb2,
                if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) {
                        skb_set_owner_r(*skb2, sk);
                        skb_queue_tail(&sk->sk_receive_queue, *skb2);
-                       sk->sk_data_ready(sk, (*skb2)->len);
+                       sk->sk_data_ready(sk);
                        *skb2 = NULL;
                        err = 0;
                }
index c2d585c..894cda0 100644 (file)
@@ -1653,7 +1653,7 @@ static int __netlink_sendskb(struct sock *sk, struct sk_buff *skb)
        else
 #endif /* CONFIG_NETLINK_MMAP */
                skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, len);
+       sk->sk_data_ready(sk);
        return len;
 }
 
@@ -2394,7 +2394,7 @@ out:
        return err ? : copied;
 }
 
-static void netlink_data_ready(struct sock *sk, int len)
+static void netlink_data_ready(struct sock *sk)
 {
        BUG();
 }
index b74aa07..ede50d1 100644 (file)
@@ -1011,7 +1011,7 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev)
        skb_queue_head(&sk->sk_receive_queue, skb);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
 
        bh_unlock_sock(sk);
 
index b486f12..b467195 100644 (file)
@@ -976,7 +976,7 @@ static void nfc_llcp_recv_connect(struct nfc_llcp_local *local,
        new_sk->sk_state = LLCP_CONNECTED;
 
        /* Wake the listening processes */
-       parent->sk_data_ready(parent, 0);
+       parent->sk_data_ready(parent);
 
        /* Send CC */
        nfc_llcp_send_cc(new_sock);
index 72e0c71..b85c67c 100644 (file)
@@ -1848,7 +1848,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
        skb->dropcount = atomic_read(&sk->sk_drops);
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        spin_unlock(&sk->sk_receive_queue.lock);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
        return 0;
 
 drop_n_acct:
@@ -2054,7 +2054,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
        else
                prb_clear_blk_fill_status(&po->rx_ring);
 
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 
 drop_n_restore:
        if (skb_head != skb->data && skb_shared(skb)) {
@@ -2069,7 +2069,7 @@ ring_is_full:
        po->stats.stats1.tp_drops++;
        spin_unlock(&sk->sk_receive_queue.lock);
 
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
        kfree_skb(copy_skb);
        goto drop_n_restore;
 }
index a2fba7e..66dc65e 100644 (file)
@@ -37,7 +37,7 @@
 struct gprs_dev {
        struct sock             *sk;
        void                    (*old_state_change)(struct sock *);
-       void                    (*old_data_ready)(struct sock *, int);
+       void                    (*old_data_ready)(struct sock *);
        void                    (*old_write_space)(struct sock *);
 
        struct net_device       *dev;
@@ -146,7 +146,7 @@ drop:
        return err;
 }
 
-static void gprs_data_ready(struct sock *sk, int len)
+static void gprs_data_ready(struct sock *sk)
 {
        struct gprs_dev *gp = sk->sk_user_data;
        struct sk_buff *skb;
index e774117..70a547e 100644 (file)
@@ -462,10 +462,9 @@ out:
 queue:
        skb->dev = NULL;
        skb_set_owner_r(skb, sk);
-       err = skb->len;
        skb_queue_tail(queue, skb);
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, err);
+               sk->sk_data_ready(sk);
        return NET_RX_SUCCESS;
 }
 
@@ -587,10 +586,9 @@ static int pipe_handler_do_rcv(struct sock *sk, struct sk_buff *skb)
                pn->rx_credits--;
                skb->dev = NULL;
                skb_set_owner_r(skb, sk);
-               err = skb->len;
                skb_queue_tail(&sk->sk_receive_queue, skb);
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, err);
+                       sk->sk_data_ready(sk);
                return NET_RX_SUCCESS;
 
        case PNS_PEP_CONNECT_RESP:
@@ -698,7 +696,7 @@ static int pep_do_rcv(struct sock *sk, struct sk_buff *skb)
                skb_queue_head(&sk->sk_receive_queue, skb);
                sk_acceptq_added(sk);
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                return NET_RX_SUCCESS;
 
        case PNS_PEP_DISCONNECT_REQ:
index 9cf2927..6563749 100644 (file)
@@ -61,12 +61,12 @@ void rds_tcp_state_change(struct sock *sk);
 /* tcp_listen.c */
 int rds_tcp_listen_init(void);
 void rds_tcp_listen_stop(void);
-void rds_tcp_listen_data_ready(struct sock *sk, int bytes);
+void rds_tcp_listen_data_ready(struct sock *sk);
 
 /* tcp_recv.c */
 int rds_tcp_recv_init(void);
 void rds_tcp_recv_exit(void);
-void rds_tcp_data_ready(struct sock *sk, int bytes);
+void rds_tcp_data_ready(struct sock *sk);
 int rds_tcp_recv(struct rds_connection *conn);
 void rds_tcp_inc_free(struct rds_incoming *inc);
 int rds_tcp_inc_copy_to_user(struct rds_incoming *inc, struct iovec *iov,
index 7787537..4e638f8 100644 (file)
@@ -108,9 +108,9 @@ static void rds_tcp_accept_worker(struct work_struct *work)
                cond_resched();
 }
 
-void rds_tcp_listen_data_ready(struct sock *sk, int bytes)
+void rds_tcp_listen_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
 
        rdsdebug("listen data ready sk %p\n", sk);
 
@@ -132,7 +132,7 @@ void rds_tcp_listen_data_ready(struct sock *sk, int bytes)
 
 out:
        read_unlock(&sk->sk_callback_lock);
-       ready(sk, bytes);
+       ready(sk);
 }
 
 int rds_tcp_listen_init(void)
index 4fac4f2..9ae6e0a 100644 (file)
@@ -314,13 +314,13 @@ int rds_tcp_recv(struct rds_connection *conn)
        return ret;
 }
 
-void rds_tcp_data_ready(struct sock *sk, int bytes)
+void rds_tcp_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
        struct rds_connection *conn;
        struct rds_tcp_connection *tc;
 
-       rdsdebug("data ready sk %p bytes %d\n", sk, bytes);
+       rdsdebug("data ready sk %p\n", sk);
 
        read_lock(&sk->sk_callback_lock);
        conn = sk->sk_user_data;
@@ -337,7 +337,7 @@ void rds_tcp_data_ready(struct sock *sk, int bytes)
                queue_delayed_work(rds_wq, &conn->c_recv_w, 0);
 out:
        read_unlock(&sk->sk_callback_lock);
-       ready(sk, bytes);
+       ready(sk);
 }
 
 int rds_tcp_recv_init(void)
index c2cca2e..8451c8c 100644 (file)
@@ -1041,7 +1041,7 @@ int rose_rx_call_request(struct sk_buff *skb, struct net_device *dev, struct ros
        rose_start_heartbeat(make);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
 
        return 1;
 }
index 7374264..63b21e5 100644 (file)
@@ -113,7 +113,7 @@ int rxrpc_queue_rcv_skb(struct rxrpc_call *call, struct sk_buff *skb,
                        spin_unlock_bh(&sk->sk_receive_queue.lock);
 
                        if (!sock_flag(sk, SOCK_DEAD))
-                               sk->sk_data_ready(sk, skb_len);
+                               sk->sk_data_ready(sk);
                }
                skb = NULL;
        } else {
@@ -632,14 +632,14 @@ cant_find_conn:
  * handle data received on the local endpoint
  * - may be called in interrupt context
  */
-void rxrpc_data_ready(struct sock *sk, int count)
+void rxrpc_data_ready(struct sock *sk)
 {
        struct rxrpc_skb_priv *sp;
        struct rxrpc_local *local;
        struct sk_buff *skb;
        int ret;
 
-       _enter("%p, %d", sk, count);
+       _enter("%p", sk);
 
        ASSERT(!irqs_disabled());
 
index c831d44..ba9fd36 100644 (file)
@@ -518,7 +518,7 @@ void rxrpc_UDP_error_handler(struct work_struct *);
  */
 extern const char *rxrpc_pkts[];
 
-void rxrpc_data_ready(struct sock *, int);
+void rxrpc_data_ready(struct sock *);
 int rxrpc_queue_rcv_skb(struct rxrpc_call *, struct sk_buff *, bool, bool);
 void rxrpc_fast_process_packet(struct rxrpc_call *, struct sk_buff *);
 
index 270d5bd..e13519e 100644 (file)
@@ -6745,7 +6745,7 @@ do_nonblock:
        goto out;
 }
 
-void sctp_data_ready(struct sock *sk, int len)
+void sctp_data_ready(struct sock *sk)
 {
        struct socket_wq *wq;
 
index 5dc9411..7144eb6 100644 (file)
@@ -259,7 +259,7 @@ int sctp_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event)
                sctp_ulpq_clear_pd(ulpq);
 
        if (queue == &sk->sk_receive_queue)
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
        return 1;
 
 out_free:
@@ -1135,5 +1135,5 @@ void sctp_ulpq_abort_pd(struct sctp_ulpq *ulpq, gfp_t gfp)
 
        /* If there is data waiting, send it up the socket now. */
        if (sctp_ulpq_clear_pd(ulpq) || ev)
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
 }
index b6e59f0..c26ce95 100644 (file)
@@ -60,7 +60,7 @@
 
 static struct svc_sock *svc_setup_socket(struct svc_serv *, struct socket *,
                                         int flags);
-static void            svc_udp_data_ready(struct sock *, int);
+static void            svc_udp_data_ready(struct sock *);
 static int             svc_udp_recvfrom(struct svc_rqst *);
 static int             svc_udp_sendto(struct svc_rqst *);
 static void            svc_sock_detach(struct svc_xprt *);
@@ -403,14 +403,14 @@ static void svc_sock_setbufsize(struct socket *sock, unsigned int snd,
 /*
  * INET callback when data has been received on the socket.
  */
-static void svc_udp_data_ready(struct sock *sk, int count)
+static void svc_udp_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
        wait_queue_head_t *wq = sk_sleep(sk);
 
        if (svsk) {
-               dprintk("svc: socket %p(inet %p), count=%d, busy=%d\n",
-                       svsk, sk, count,
+               dprintk("svc: socket %p(inet %p), busy=%d\n",
+                       svsk, sk,
                        test_bit(XPT_BUSY, &svsk->sk_xprt.xpt_flags));
                set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
                svc_xprt_enqueue(&svsk->sk_xprt);
@@ -731,7 +731,7 @@ static void svc_udp_init(struct svc_sock *svsk, struct svc_serv *serv)
  * A data_ready event on a listening socket means there's a connection
  * pending. Do not use state_change as a substitute for it.
  */
-static void svc_tcp_listen_data_ready(struct sock *sk, int count_unused)
+static void svc_tcp_listen_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
        wait_queue_head_t *wq;
@@ -783,7 +783,7 @@ static void svc_tcp_state_change(struct sock *sk)
                wake_up_interruptible_all(wq);
 }
 
-static void svc_tcp_data_ready(struct sock *sk, int count)
+static void svc_tcp_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
        wait_queue_head_t *wq = sk_sleep(sk);
index 966763d..96458d4 100644 (file)
@@ -254,7 +254,7 @@ struct sock_xprt {
        /*
         * Saved socket callback addresses
         */
-       void                    (*old_data_ready)(struct sock *, int);
+       void                    (*old_data_ready)(struct sock *);
        void                    (*old_state_change)(struct sock *);
        void                    (*old_write_space)(struct sock *);
        void                    (*old_error_report)(struct sock *);
@@ -946,7 +946,7 @@ static int xs_local_copy_to_xdr(struct xdr_buf *xdr, struct sk_buff *skb)
  *
  * Currently this assumes we can read the whole reply in a single gulp.
  */
-static void xs_local_data_ready(struct sock *sk, int len)
+static void xs_local_data_ready(struct sock *sk)
 {
        struct rpc_task *task;
        struct rpc_xprt *xprt;
@@ -1009,7 +1009,7 @@ static void xs_local_data_ready(struct sock *sk, int len)
  * @len: how much data to read
  *
  */
-static void xs_udp_data_ready(struct sock *sk, int len)
+static void xs_udp_data_ready(struct sock *sk)
 {
        struct rpc_task *task;
        struct rpc_xprt *xprt;
@@ -1432,7 +1432,7 @@ static int xs_tcp_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb, uns
  * @bytes: how much data to read
  *
  */
-static void xs_tcp_data_ready(struct sock *sk, int bytes)
+static void xs_tcp_data_ready(struct sock *sk)
 {
        struct rpc_xprt *xprt;
        read_descriptor_t rd_desc;
index 646a930..a538a02 100644 (file)
@@ -119,7 +119,7 @@ static struct tipc_conn *tipc_conn_lookup(struct tipc_server *s, int conid)
        return con;
 }
 
-static void sock_data_ready(struct sock *sk, int unused)
+static void sock_data_ready(struct sock *sk)
 {
        struct tipc_conn *con;
 
@@ -297,7 +297,7 @@ static int tipc_accept_from_sock(struct tipc_conn *con)
        newcon->usr_data = s->tipc_conn_new(newcon->conid);
 
        /* Wake up receive process in case of 'SYN+' message */
-       newsock->sk->sk_data_ready(newsock->sk, 0);
+       newsock->sk->sk_data_ready(newsock->sk);
        return ret;
 }
 
index adc12e2..3c02569 100644 (file)
@@ -45,7 +45,7 @@
 #define CONN_TIMEOUT_DEFAULT   8000    /* default connect timeout = 8s */
 
 static int backlog_rcv(struct sock *sk, struct sk_buff *skb);
-static void tipc_data_ready(struct sock *sk, int len);
+static void tipc_data_ready(struct sock *sk);
 static void tipc_write_space(struct sock *sk);
 static int tipc_release(struct socket *sock);
 static int tipc_accept(struct socket *sock, struct socket *new_sock, int flags);
@@ -1248,7 +1248,7 @@ static void tipc_write_space(struct sock *sk)
  * @sk: socket
  * @len: the length of messages
  */
-static void tipc_data_ready(struct sock *sk, int len)
+static void tipc_data_ready(struct sock *sk)
 {
        struct socket_wq *wq;
 
@@ -1410,7 +1410,7 @@ static u32 filter_rcv(struct sock *sk, struct sk_buff *buf)
        __skb_queue_tail(&sk->sk_receive_queue, buf);
        skb_set_owner_r(buf, sk);
 
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
        return TIPC_OK;
 }
 
index 94404f1..bb7e8ba 100644 (file)
@@ -1217,7 +1217,7 @@ restart:
        __skb_queue_tail(&other->sk_receive_queue, skb);
        spin_unlock(&other->sk_receive_queue.lock);
        unix_state_unlock(other);
-       other->sk_data_ready(other, 0);
+       other->sk_data_ready(other);
        sock_put(other);
        return 0;
 
@@ -1600,7 +1600,7 @@ restart:
        if (max_level > unix_sk(other)->recursion_level)
                unix_sk(other)->recursion_level = max_level;
        unix_state_unlock(other);
-       other->sk_data_ready(other, len);
+       other->sk_data_ready(other);
        sock_put(other);
        scm_destroy(siocb->scm);
        return len;
@@ -1706,7 +1706,7 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock,
                if (max_level > unix_sk(other)->recursion_level)
                        unix_sk(other)->recursion_level = max_level;
                unix_state_unlock(other);
-               other->sk_data_ready(other, size);
+               other->sk_data_ready(other);
                sent += size;
        }
 
index 9a73074..9b7f207 100644 (file)
@@ -315,7 +315,7 @@ vmci_transport_handle_wrote(struct sock *sk,
        struct vsock_sock *vsk = vsock_sk(sk);
        PKT_FIELD(vsk, sent_waiting_read) = false;
 #endif
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 }
 
 static void vmci_transport_notify_pkt_socket_init(struct sock *sk)
index 622bd7a..dc9c792 100644 (file)
@@ -92,7 +92,7 @@ vmci_transport_handle_wrote(struct sock *sk,
                            bool bottom_half,
                            struct sockaddr_vm *dst, struct sockaddr_vm *src)
 {
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 }
 
 static void vsock_block_update_write_window(struct sock *sk)
@@ -290,7 +290,7 @@ vmci_transport_notify_pkt_recv_post_dequeue(
                /* See the comment in
                 * vmci_transport_notify_pkt_send_post_enqueue().
                 */
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
        }
 
        return err;
index 6177479..5ad4418 100644 (file)
@@ -1064,7 +1064,7 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,
        x25_start_heartbeat(make);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        rc = 1;
        sock_put(sk);
 out:
index d1b0dc7..7ac5009 100644 (file)
@@ -79,7 +79,7 @@ static int x25_queue_rx_frame(struct sock *sk, struct sk_buff *skb, int more)
        skb_set_owner_r(skbn, sk);
        skb_queue_tail(&sk->sk_receive_queue, skbn);
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skbn->len);
+               sk->sk_data_ready(sk);
 
        return 0;
 }