Commit Graph

64 Commits

Author SHA1 Message Date
Gregory Nutt b493dde4cf TCP networking: In the TCP connection operation, it was trying to setup the network monitor BEFORE the socket was successfully connected. This, of course, has ALWAYS failed because the socket is not yet connected and the TCP state is not yet correct for a connected socket. However, because of other changes net_startmonitor(0 no returns a failure condition that causes worse problems when trying to connect. The fix is to move the logic that starts the network monitor to AFTER the socket has been successfully connected. 2015-05-31 11:35:28 -06:00
Gregory Nutt 33085cb309 Networking: The network device list was protected by a re-entrant semaphore. With the recent change to support network device callback, the network stack needs to access the network device list too. Some drivers, however, run the network stack from the interrupt level -- this is bad but a fact in the current state. Of course,those drivers are unable to take the semaphore and will assert.
The solution here is to eliminate the device devices semaphore altogether.  This eliminates netdev_semtake() and netdev_semgive() and replaces them with net_lock() and net_unlock() which have larger scope as needed for this purpose.
2015-05-31 08:34:03 -06:00
Gregory Nutt 6687e156e6 Revamp last change. IFF_UP only required when allocating callback, not freeing. 2015-05-30 21:13:58 -06:00
Gregory Nutt 28b46c7bfa To be valid, a network device must not only exist, but be in the UP state 2015-05-30 12:54:18 -06:00
Gregory Nutt 04a661a97c TCP networking: Add support for network driver events 2015-05-30 09:12:27 -06:00
Gregory Nutt ab50e9d04d Networking: Get rid of g_ipv4_allzeroaddr and g_ipv4_alloneaddr. It is more efficient and more intuitive to use INADDR_ANY and INADDR_BROADCAST 2015-05-29 15:16:11 -06:00
Gregory Nutt fa8b7c19b7 Forgot to add a file in the last commit 2015-05-29 11:03:02 -06:00
Gregory Nutt f10fdf7ad4 Networking: Add a test to see a device pointer is still valid 2015-05-29 11:01:03 -06:00
Gregory Nutt e81f279315 Networking: Modify event list handling: Now there are two event lists each device structure: (1) One is for ARP and ICMP data related evetns, the other is for device related events. Callback allocation/free routines no accept a device paramter as well as a list: If the device paramter is added, then the callback goes into both the connection-related liast AND the device event list. Thus each socket type can received both custom data-related events as well as common device related events. 2015-05-28 12:01:38 -06:00
Gregory Nutt 390eeaae69 Add function headers to netdev.h header file 2015-05-27 14:34:15 -06:00
Gregory Nutt b94321cfb4 Extend device specific callbacks to ICMPv6 and ARP. Fix some IPv6 compilation errors that have crept in 2015-05-27 11:39:44 -06:00
Gregory Nutt 8ecb84ed89 Improve icmp handling if MULTINIC enabled. From Max Neklyudov 2015-05-27 09:26:00 -06:00
Gregory Nutt 8cb4e78a1a Complete implementation of the IPv6 routing logic. From Max Neklyudov. 2015-05-13 07:22:02 -06:00
Gregory Nutt 21d6e41032 Add TUN device. From Max Neklyudov 2015-03-11 06:52:56 -06:00
Gregory Nutt 5c13722416 Networking: Improve the network device registration logic. When multiple link types are used, modify how each interface number is assigned to the device name by incrementing the device number individually for each interface link type. From Max Neklyudov. 2015-02-27 08:23:14 -06:00
Gregory Nutt 19f3d46eb0 Fix a list handling error in netdev_unregister(). From Max Neklyudov 2015-02-27 08:01:31 -06:00
Gregory Nutt b756df982d net/: Lots of build problems introduced into multiple NIC support. Many places where conditional logic based on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK. Lots of code changed with IPv6 that was never compiled with MULTINIC enabled. Still some problem with parameter passing. 2015-02-09 18:15:34 -06:00
Gregory Nutt 1928feafca Networking: Fix some errors that crept in with IPv6 2015-02-06 13:34:19 -06:00
Gregory Nutt 9791e829f5 ICMPv6: This completes coding of the ICMPv6 auto-configuration feature. It is not yet functional 2015-02-03 15:40:56 -06:00
Gregory Nutt 0e23712db4 Add an ioctal() that can be used to perform ICMPv6 auto-configuration 2015-02-03 08:54:42 -06:00
Gregory Nutt 55d94b6748 Unix domain: With these changes I can build a system with no link layer enabled, only Unix domain sockets 2015-01-27 15:26:03 -06:00
Gregory Nutt c250c97186 Unix domain: More fixed to build without Ethernet or Slip 2015-01-27 14:26:10 -06:00
Gregory Nutt 5d31687e75 Correct name of fields in struct sockaddr_in6: sin6_port and sin6_family, not sin_port and sin_family 2015-01-20 18:14:09 -06:00
Gregory Nutt aec4528882 Cosmetic standardization of some naming in comments 2015-01-19 16:02:56 -06:00
Gregory Nutt 59c0757183 Fix a few more dangling IPv6 issues found by code inspection 2015-01-18 10:33:27 -06:00
Gregory Nutt eb3c6e8390 Networking: Some fixes for compilation when both IPv4 and IPv6 are enabled 2015-01-18 09:23:22 -06:00
Gregory Nutt 2663538b0a Networking: Replace all references to the macros net_ipaddr_copy, net_ipaddr_hdrcopy, net_ipaddr_cmp, net_ipaddr_hdrcmp, and net_ipaddr_maskcmp with the appropriate IPv4 or IPv6 version of the macro (such as net_ipv4addr_copy). The goal is to support both IPv4 and IPv6 simultaneously. This requires that the macros be distinct and not conditionally defined to one on or the other. 2015-01-16 13:01:08 -06:00
Gregory Nutt 5e938941a6 Networking: Replace all references to net_ipaddr_t with either in_addr_t on net_ipv6addr_t. The goal is to support both IPv4 and IPv6 simultaneously. This requires that the two types be distinct and not conditionally typedef'ed to net_ipaddr_t. 2015-01-16 12:30:18 -06:00
Gregory Nutt bee89be4f4 Networking: Drivers can have both IPv4 and IPv6 addesses, but a socket can only only one or the other; The socket connnection structures need to include a union of IPv4 and IPv6 addresses for the local address binding and for the remote address connections 2015-01-16 10:01:54 -06:00
Gregory Nutt fe8b3c5220 Networking: More detangling of IPv6 logic. Next steps will be more invasive and will get moved to a branch 2015-01-16 08:51:18 -06:00
Gregory Nutt 60e50ff3b5 Networking: More IPv6 detanglement 2015-01-15 13:08:28 -06:00
Gregory Nutt 7d68c22d7f Networking: Add support for IPv6 ioctls 2015-01-14 13:03:12 -06:00
Gregory Nutt 6a3a2f466c Update comments and README 2014-11-24 07:25:40 -06:00
Gregory Nutt aa9700c1ab Update comments and read me 2014-11-23 12:52:18 -06:00
Gregory Nutt b36dbe1d89 Add logic to netdev_findbyaddr() to return the correct network device for the case where a broadcast address is used. This change caused trivial ripples through other files because additional parameters are required for netdev_findbyaddr() when CONFIG_NET_MULTINIC 2014-11-23 11:00:22 -06:00
Gregory Nutt fbd82712da Add a comment 2014-11-22 09:08:31 -06:00
Gregory Nutt 80fc094734 Make tcp_listener static scope; it is not used outside of tcp_conn.c 2014-11-22 07:14:17 -06:00
Gregory Nutt 735aa4289a Network: Add logic to get a default network device (for the case where are multiple devices). For INADDR_ANY 2014-11-21 14:14:39 -06:00
Gregory Nutt 8b2b7afdae Update TODO; Cosmetic changes to comments 2014-11-17 15:34:50 -06:00
Gregory Nutt 57bcb28991 changes for clean build with Ethernet+SLIP 2014-11-16 11:27:53 -06:00
Gregory Nutt 38754a3466 Completes basic changes to support per-device/per-link TCP receive window size 2014-11-16 11:15:21 -06:00
Gregory Nutt 2340d46d20 Rename NET_LL_MTU to NET_DEV_MTU; rename d_llmtu to d_mtu 2014-11-16 10:42:19 -06:00
Gregory Nutt 859748a94e Completes conversion of CONFIG_NET_BUFIZE to CONFIG_NET_ETH/SLIP_MTU 2014-11-16 09:22:38 -06:00
Gregory Nutt ca7486d7f3 Add link MTU size to network device structure. 2014-11-16 08:49:14 -06:00
Gregory Nutt daa94934eb Network: netdev_register() must assign the device name appropriately according to the link layer type 2014-11-15 14:21:11 -06:00
Gregory Nutt ebb6fd1e9c Resove merge conflicts 2014-11-15 10:04:33 -06:00
Gregory Nutt 2b758537ea Network: Misc fixes for clean complete with both Ethernet and SLIP enabled 2014-11-15 08:55:50 -06:00
Gregory Nutt 388ef8db1a Netwoek: Ada a parameter to netdev_register() to indicate the link protocol supported by the driver. Use this value to replace some logic commited yesterday 2014-11-15 08:22:51 -06:00
Gregory Nutt 057af36c1d More of the PHY event notification logic change: Fix some compile errors when full feature is enabled; Add some missing ioctol logic 2014-08-16 15:04:09 -06:00
Gregory Nutt eb5e2e4b20 Finishes the ioctl definition to subscribe to PHY events. Revamp network ioctl signature to support arguments other than struct mii_ioctl_data. 2014-08-16 14:08:04 -06:00